Ottenere unità da ISpatialReference di ArcObjects?


Risposte:


12

Le unità lineari possono essere ottenute dal riferimento spaziale solo se si tratta di un sistema di coordinate proiettato. Pertanto, è necessario eseguire il cast del riferimento spaziale a IProjectedCoordinateSystem e accedere alla sua proprietà IProjectedCoordinateSystem.CoordinateUnit .

Ma se il riferimento spaziale è un sistema di coordinate geografiche, le sue unità sono angolari e vi si accede in modo simile tramite IGeographicCoordinateSystem.CoordinateUnit .


1
+1 La proprietà ILinearUnit.MetersPerUnit può anche salvarti dalla scrittura di molto codice.
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;
        }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.