Obtenir des unités de ISpatialReference d'ArcObjects?

9

Comment obtenir les unités (mètres / pieds) d'un objet ISpatialReference dans ArcObjects?

user2449
la source

Réponses:

12

Les unités linéaires ne peuvent être obtenues à partir de la référence spatiale que s'il s'agit d'un système de coordonnées projeté. Vous devez donc convertir la référence spatiale en IProjectedCoordinateSystem et accéder à sa propriété IProjectedCoordinateSystem.CoordinateUnit .

Mais si la référence spatiale est un système de coordonnées géographiques, ses unités sont angulaires et accessibles de la même manière via IGeographicCoordinateSystem.CoordinateUnit .

Petr Krebs
la source
1
+1 La propriété ILinearUnit.MetersPerUnit peut également vous éviter d'écrire beaucoup de code.
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
la source