美文网首页
GDAL几何类型父子关系

GDAL几何类型父子关系

作者: NullUser | 来源:发表于2024-11-11 14:51 被阅读0次

继承关系:

OGRGeometry
├── OGRPoint
├── OGRCurve (抽象类)
│ ├── OGRSimpleCurve
│ │ ├── OGRLineString
│ │ │ └── OGRLinearRing
│ │ └── OGRCircularString
│ └── OGRCompoundCurve
├── OGRSurface (抽象类)
│ ├── OGRCurvePolygon
│ │ ├── OGRPolygon
│ │ │ └── OGRTriangle
│ ├── OGRPolyhedralSurface
│ │ └── OGRTriangulatedSurface
├── OGRGeometryCollection
│ ├── OGRMultiSurface
│ │ └── OGRMultiPolygon
│ ├── OGRMultiPoint
│ ├── OGRMultiCurve
│ │ └── OGRMultiLineString

源码:

/************************************************************************/
/*                        OGR_GT_IsSubClassOf)                          */
/************************************************************************/
/**
 * \brief Returns if a type is a subclass of another one
 *
 * @param eType Type.
 * @param eSuperType Super type
 *
 * @return TRUE if eType is a subclass of eSuperType.
 *
 * @since GDAL 2.0
 */

int OGR_GT_IsSubClassOf(OGRwkbGeometryType eType, OGRwkbGeometryType eSuperType)
{
    eSuperType = wkbFlatten(eSuperType);
    eType = wkbFlatten(eType);

    if (eSuperType == eType || eSuperType == wkbUnknown)
        return TRUE;

    if (eSuperType == wkbGeometryCollection)
        return eType == wkbMultiPoint || eType == wkbMultiLineString ||
               eType == wkbMultiPolygon || eType == wkbMultiCurve ||
               eType == wkbMultiSurface;

    if (eSuperType == wkbCurvePolygon)
        return eType == wkbPolygon || eType == wkbTriangle;

    if (eSuperType == wkbMultiCurve)
        return eType == wkbMultiLineString;

    if (eSuperType == wkbMultiSurface)
        return eType == wkbMultiPolygon;

    if (eSuperType == wkbCurve)
        return eType == wkbLineString || eType == wkbCircularString ||
               eType == wkbCompoundCurve;

    if (eSuperType == wkbSurface)
        return eType == wkbCurvePolygon || eType == wkbPolygon ||
               eType == wkbTriangle || eType == wkbPolyhedralSurface ||
               eType == wkbTIN;

    if (eSuperType == wkbPolygon)
        return eType == wkbTriangle;

    if (eSuperType == wkbPolyhedralSurface)
        return eType == wkbTIN;

    return FALSE;
}

相关文章

网友评论

      本文标题:GDAL几何类型父子关系

      本文链接:https://www.haomeiwen.com/subject/wikkjjtx.html