Преобразование широты / долготы в PointClass - PullRequest
1 голос
/ 25 августа 2010
IPoint pPoint = new ESRI.ArcGIS.Geometry.PointClass();
pPoint.PutCoords(-92.96000, 44.9227); //This should be near Minneapolis
mapControl.CenterAt(pPoint); //mapControl is a AxMapControl

Когда я запускаю этот код, точка всегда заканчивается возле Канзаса.Может кто-нибудь помочь мне преобразовать lat / long в PointClass, который будет работать правильно?

Я использую VS2010 ArcEngine 10 C #

Ответы [ 2 ]

3 голосов
/ 25 августа 2010

Это намного больше, чем вы дали в настоящее время.Точка широта / долгота и ваша карта имеют конкретную пространственную привязку.Если они не совпадают, вероятно, ваша точка будет отображаться неожиданным образом.

Точка, которую вы показываете, является стандартной точкой широты / долготы.Что, скорее всего, Nad83 (Северная Америка) или WGS84 (Мир).Это пространственные привязки с географической системой координат .Скорее всего, вы пытаетесь нанести точку на спроецированной системе координат .

. Необходимо, чтобы пространственная привязка MapControl соответствовала типам точек, которые вы пытаетесь построить.* Поскольку я не знаю пространственную привязку вашей карты, я могу привести только пример перевода широты / долготы в текущую пространственную привязку MapControl.

ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass();

IGeographicCoordinateSystem gcs = srFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
ISpatialReference sr1 = gcs;

IPoint point = new PointClass() as IPoint;
point.PutCoords(-92.96000, 44.9227);

IGeometry geometryShape;
geometryShape = point;
geometryShape.SpatialReference = sr1;

geometryShape.Project(mapControl.SpatialReference);

mapControl.DrawShape(geometryShape);

Это займет ваше мнение и проектыэто к текущей пространственной привязке MapControls, затем строит точки.

Удачи.

0 голосов
/ 25 августа 2010

Вот код для увеличения и центрирования по широте / долготе, приведенный выше плакат был полезен, но его решение не сработало для меня.

mapControl.MapScale = mapControl.MapScale / 2; //for zooming
ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass(); //move up top later 
IGeographicCoordinateSystem gcs = srFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984); //World lat / long format
ISpatialReference sr1 = gcs;
IPoint point = new PointClass(); 
point.SpatialReference = gcs;
point.PutCoords(-92.96000, 44.9227);
point.Project(mapControl.SpatialReference);
mapControl.CenterAt(point);
...