GDAL C++ API ruta de aprendizaje OGRGeometry clase de línea OGRLineString

OGRLineString clase "ogr_geometry.h"

OGRLineStringClass es una clase de objeto geométrico en la biblioteca OGR, que se utiliza para representar segmentos de línea o polilíneas. Consiste en una serie de puntos de coordenadas y forma un segmento de línea entre los puntos de coordenadas. OGRLineStringPuede contener puntos de coordenadas 2D, 3D o 3D+M, donde M representa métricas adicionales, como el tiempo o la velocidad

Funciones Publicas

OGRLineString()

Crear una cadena vacía

OGRLineStringconst  OGRLineString  y otros )

copiar constructor

OGRLineString  & operador = ( const  OGRLineString  &other )

operador de asignación

clon

virtual  OGRLineString  *clon() anulación de const

crear una copia de este objeto

OGRLineString lineString;

// 添加两个坐标点构成线段
lineString.addPoint(0.0, 0.0);
lineString.addPoint(10.0, 10.0);

// 克隆 OGRLineString 对象
OGRLineString* clonedLineString = lineString.clone();

CurvaALínea

OGRLineString virtual   *CurveToLine(doble dfMaxAngleStepSizeDegrees = 0, const char *const *papszOptions = nullptr) const override

Devuelve una cadena lineal de una geometría de curva.

parámetro:

  • dfMaxAngleStepSizeDegrees  : tamaño de paso máximo a lo largo del arco en grados, con el valor predeterminado en cero.

  • papszOptions  : opciones como una lista de cadenas terminada en nulo o NULL.

Devuelve: la cadena lineal que se aproxima a la curva

OGRLineString lineString;
    
// Add points to the lineString (this could be a curve)
lineString.addPoint(0, 0);
lineString.addPoint(1, 1);
lineString.addPoint(2, 0);
    
// Convert curve to line
OGRLineString* convertedLine = lineString.CurveToLine();
    
// Output the converted line's points
for (int i = 0; i < convertedLine->getNumPoints(); ++i) {
    double x, y;
    convertedLine->getPoint(i, &x, &y);
    std::cout << "Point " << i << ": (" << x << ", " << y << ")" << std::endl;
}
    
// Release memory
delete convertedLine;

getCurveGeometry

OGRGeometry virtual   *getCurveGeometry(const char *const *papszOptions = nullptr) anulación de const

Devuelve una versión curva de esta geometría.

parámetro:

papszOptions  : opciones como una lista de cadenas terminadas en nulo. Temporalmente sin usar. Debe establecerse en NULL.

Devoluciones: la nueva geometría

// 创建一个线性曲线对象
    OGRLineString linearRing;
    linearRing.addPoint(0, 0);
    linearRing.addPoint(1, 0);
    linearRing.addPoint(1, 1);
    linearRing.addPoint(0, 1);
    linearRing.addPoint(0, 0);

    // 获取线性曲线的几何对象
    OGRGeometry* curveGeometry = linearRing.getCurveGeometry();

    // 输出几何对象的类型
    if (curveGeometry != nullptr) {
        OGRwkbGeometryType geomType = curveGeometry->getGeometryType();
        const char* typeName = OGRGeometryTypeToName(geomType);
        printf("Curve geometry type: %s\n", typeName);

        // 释放内存
        OGRGeometryFactory::destroyGeometry(curveGeometry);
    } else {
        printf("Failed to get curve geometry.\n");
    }

get_Area

sobrescritura de const de get_Area() virtual doble

Obtener el área de una curva (cerrada)

Devuelve: el área de la característica en unidades cuadradas del sistema de referencia espacial utilizado

// 创建一个多边形对象
    OGRLinearRing ring;
    ring.addPoint(0, 0);
    ring.addPoint(1, 0);
    ring.addPoint(1, 1);
    ring.addPoint(0, 1);
    ring.addPoint(0, 0);

    OGRPolygon polygon;
    polygon.addRing(&ring);

    // 获取多边形对象的面积
    double area = polygon.get_Area();

    // 输出面积
    printf("Polygon area: %f\n", area);

getGeometryType

virtual  OGRwkbGeometryType  getGeometryType() anulación de const

devolver:

tipo de geometría

    // 创建一个点对象
    OGRPoint point(10.0, 20.0);

    // 获取点对象的几何类型
    OGRwkbGeometryType geomType = point.getGeometryType();

    // 输出几何类型
    switch (geomType) {
        case wkbPoint:
            printf("Geometry Type: Point\n");
            break;
        case wkbLineString:
            printf("Geometry Type: LineString\n");
            break;
        case wkbPolygon:
            printf("Geometry Type: Polygon\n");
            break;
        // 更多几何类型的处理...
        default:
            printf("Unknown Geometry Type\n");
            break;
    }

getGeometryName

Carácter de const virtual *getGeometryName() anulación de const

Obtener el nombre WKT del tipo de geometría

Devuelve: el nombre a utilizar para este tipo de geometría, en formato de texto conocido. El puntero devuelto apunta a la cadena interna estática y no debe modificarse ni liberarse

// 创建一个点对象
    OGRPoint point(10.0, 20.0);

    // 获取几何对象的名称
    const char* geometryName = point.getGeometryName();

    // 输出几何对象的名称
    printf("Geometry Name: %s\n", geometryName);

esen el sentido de las agujas del reloj

virtual int isClockwise() anulación de const

Devuelve VERDADERO si el anillo gira en el sentido de las agujas del reloj (o menos de 2 libras)

Devuelve: verdadero si es en el sentido de las agujas del reloj, falso en caso contrario

/ 创建一个多边形对象
    OGRLinearRing ring;
    ring.addPoint(0, 0);
    ring.addPoint(0, 1);
    ring.addPoint(1, 1);
    ring.addPoint(1, 0);
    ring.addPoint(0, 0);

    OGRPolygon polygon;
    polygon.addRing(&ring);

    // 判断多边形顶点排列方向
    int clockwise = polygon.isClockwise();

    // 输出判断结果
    if (clockwise > 0) {
        printf("Polygon is clockwise.\n");
    } else if (clockwise < 0) {
        printf("Polygon is counterclockwise.\n");
    } else {
        printf("Vertices are collinear or not a valid polygon.\n");
    }

Supongo que te gusta

Origin blog.csdn.net/qq_69574549/article/details/132005783
Recomendado
Clasificación