Einheiten von ISpatialReference of ArcObjects abrufen?

9

Wie erhalte ich die Einheiten (Meter / Fuß) von einem ISpatialReference-Objekt in ArcObjects?

user2449
quelle

Antworten:

12

Lineare Einheiten können nur dann aus dem Raumbezug erhalten werden, wenn es sich um ein projiziertes Koordinatensystem handelt. Sie müssen also den räumlichen Verweis in IProjectedCoordinateSystem umwandeln und auf die IProjectedCoordinateSystem.CoordinateUnit- Eigenschaft zugreifen .

Wenn der Raumbezug jedoch ein geografisches Koordinatensystem ist, sind seine Einheiten eckig und werden in ähnlicher Weise über IGeographicCoordinateSystem.CoordinateUnit aufgerufen .

Petr Krebs
quelle
1
+1 Die ILinearUnit.MetersPerUnit-Eigenschaft kann Sie auch davor bewahren, viel Code zu schreiben.
Kirk Kuykendall
0
IFields fields = featureClass.Fields;
        ISpatialReference spatialReference = fields.get_Field(fields.FindField(featureClass.ShapeFieldName)).GeometryDef.SpatialReference;
        if (spatialReference is IProjectedCoordinateSystem)
        {
            IProjectedCoordinateSystem projectedCoordinateSystem = (IProjectedCoordinateSystem)spatialReference;
            return projectedCoordinateSystem.CoordinateUnit.Name;
        }
        if (spatialReference is IGeographicCoordinateSystem)
        {
            IGeographicCoordinateSystem geographicCoordinateSystem = (IGeographicCoordinateSystem)spatialReference;
            return geographicCoordinateSystem.CoordinateUnit.Name;
        }
Chris Stayte
quelle