Страница 1 из 1

Преобразование координат

Добавлено: 12 июл 2012, 16:07
BodyZ
Доброго времени суток.
Подскажите как программно можно преобразовать координаты точки из Метров (Meters) в Углы (Decimal Degrees).
Координаты получаю при нажатии кнопки мыши.

Код: Выделить всё

 IMxDocument m_doc = m_application.Document as IMxDocument;
 IActiveView pActiveView = m_doc.FocusMap as IActiveView;
 IPoint point1 = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);
После такой операции point1 получаем в Метрах (Прямоугольных координатах).

Re: Преобразование координат

Добавлено: 12 июл 2012, 16:34
Дмитрий Барышников
Координаты у вас не в метрах, а в тех единицах, которые заданы в pActiveView.ScreenDisplay.DisplayTransformation.SpatialReference
http://resources.esri.com/help/9.3/arcg ... mation.htm

Re: Преобразование координат

Добавлено: 12 июл 2012, 16:37
BodyZ
Спасибо за подсказку. Но как мне от заданных получить Углы (Decimal Degrees).
Заранее спасибо

Re: Преобразование координат

Добавлено: 12 июл 2012, 16:44
BodyZ
Тут скорее всего идет речь о пересчете величины представления координаты в Decimal Degrees

Re: Преобразование координат

Добавлено: 12 июл 2012, 23:15
Дмитрий Барышников
Если у вас SpatialReference проекционная и единицы измерения иметры, то вы можете получить из вашей проекционной СК географическую и выполнить перепроецирование.
http://edndoc.esri.com/arcobjects/9.1/C ... System.htm (свойство GeographicCoordinateSystem)
http://edndoc.esri.com/arcobjects/9.0/c ... ometry.htm (метод Project)

Re: Преобразование координат

Добавлено: 13 июл 2012, 15:07
BodyZ
Наел по етой ссылке
такой код

Код: Выделить всё

  public static ESRI.ArcGIS.Geometry.IPoint ProjectPoint(IMap theMap,IPoint thePoint, bool toGeo)
  {
       int prjType = (int)ESRI.ArcGIS.Geometry.esriSRProjCSType.esriSRProjCS_NAD1983USA_Lambert;
       int geoType = (int)ESRI.ArcGIS.Geometry.esriSRGeoCSType.esriSRGeoCS_WGS1984;
            
       ESRI.ArcGIS.Geometry.ISpatialReferenceFactory pSRF = new ESRI.ArcGIS.Geometry.SpatialReferenceEnvironmentClass();
       ESRI.ArcGIS.Geometry.IProjectedCoordinateSystem m_ProjectedCoordinateSystem;
       ESRI.ArcGIS.Geometry.IGeographicCoordinateSystem m_GeographicCoordinateSystem;
       m_ProjectedCoordinateSystem = pSRF.CreateProjectedCoordinateSystem(prjType);
       m_GeographicCoordinateSystem = pSRF.CreateGeographicCoordinateSystem(geoType);

       ESRI.ArcGIS.Geometry.IPoint pPoint = new ESRI.ArcGIS.Geometry.PointClass();
       pPoint.X = thePoint.X;
       pPoint.Y = thePoint.Y;
       if (toGeo)
        {
            ESRI.ArcGIS.Geometry.ISpatialReference pGCS = new    ESRI.ArcGIS.Geometry.GeographicCoordinateSystemClass();
            pPoint.SpatialReference = pGCS;
            pPoint.SpatialReference = m_ProjectedCoordinateSystem;
            pPoint.Project(m_GeographicCoordinateSystem);
         }
         else
         {
            ESRI.ArcGIS.Geometry.ISpatialReference pPCS = new ESRI.ArcGIS.Geometry.ProjectedCoordinateSystemClass();
            pPoint.SpatialReference = pPCS;
            pPoint.SpatialReference = m_GeographicCoordinateSystem;
            pPoint.Project(m_ProjectedCoordinateSystem);
          }
          return pPoint;
        }
?? Но у меня система координат Pulkovo_1942_GK_Zone_5, и не могу переделать найденный код,
что бы он правильно считал для Pulkovo_1942_GK_Zone_5ю

Re: Преобразование координат

Добавлено: 13 июл 2012, 15:45
BodyZ
Спасибо Вам.
Нашел в в Ваших старых ответах
По моему все нормально. Может я и ошибаюсь

Re: Преобразование координат

Добавлено: 13 июл 2012, 17:09
Дмитрий Барышников
Можно было как-то так.
ESRI.ArcGIS.Geometry.IProjectedCoordinateSystem m_ProjectedCoordinateSystem = pActiveView.ScreenDisplay.DisplayTransformation.SpatialReference;

ESRI.ArcGIS.Geometry.IGeographicCoordinateSystem m_GeographicCoordinateSystem = m_ProjectedCoordinateSystem .GeographicCoordinateSystem;