Pozyskiwanie jednostek od ISpatialReference of ArcObjects?

9

Jak uzyskać jednostki (metr / stopy) z obiektu ISpatialReference w ArcObjects?

użytkownik2449
źródło

Odpowiedzi:

12

Jednostki liniowe można uzyskać z odniesienia przestrzennego tylko wtedy, gdy jest to rzutowany układ współrzędnych. Musisz więc rzutować odwołanie przestrzenne do IProjectedCoordinateSystem i uzyskać dostęp do jego właściwości IProjectedCoordinateSystem.CoordinateUnit .

Ale jeśli odniesieniem przestrzennym jest geograficzny układ współrzędnych, jego jednostki są kątowe i są dostępne podobnie poprzez IGeographicCoordinateSystem.CoordinateUnit .

Petr Krebs
źródło
1
+1 Właściwość ILinearUnit.MetersPerUnit może również uratować Cię przed pisaniem dużej ilości kodu.
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
źródło