Получение единиц из ISpatialReference ArcObjects?


Ответы:


12

Линейные единицы могут быть получены из пространственной привязки, только если это проекционная система координат. Итак, вам нужно привести пространственную ссылку к IProjectedCoordinateSystem и получить доступ к его свойству IProjectedCoordinateSystem.CoordinateUnit .

Но если пространственная привязка является географической системой координат, ее единицы угловые, и доступ к ней осуществляется аналогично через IGeographicCoordinateSystem.CoordinateUnit .


1
+1 Свойство ILinearUnit.MetersPerUnit также может избавить вас от написания большого количества кода.
Кирк Куйкендалл

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;
        }
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.