Программирование в Arcgis Engine
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
Программирование в Arcgis Engine
Кто-нибудь подскажет где почитать про программирование в arcgis Engine?
Пытаюсь найти как установить фокус изображения mapControl в точку и известными широтой и долготой.
Но не могу найти соответствующие методы или свойства.
Спасибо за любую ссылку или подсказку!
Пытаюсь найти как установить фокус изображения mapControl в точку и известными широтой и долготой.
Но не могу найти соответствующие методы или свойства.
Спасибо за любую ссылку или подсказку!
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Программирование в Arcgis Engine
Например здесь http://resources.esri.com/help/9.3/arcg ... _start.htm
или здесь для других языков http://resources.esri.com/arcgisdesktop ... Developers
Посмотрите в сторону свойства Extent интерфейса IActiveView. От широты и долготы переходите к экстенту и выставляете чтобы точка в центре была
или здесь для других языков http://resources.esri.com/arcgisdesktop ... Developers
Посмотрите в сторону свойства Extent интерфейса IActiveView. От широты и долготы переходите к экстенту и выставляете чтобы точка в центре была
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
Re: Программирование в Arcgis Engine
Заработало в таком виде
// отображаем
Теперь бы найти методы arcGis Engine для преобразования географических координат в прямоугольные и обратно ...
Код: Выделить всё
this.axMapControl1.MapScale = double.Parse(this.scale.Text.ToString());// Устанавливаем нужный масштаб
double dx = 6571365;
double dy = 6854025;
ESRI.ArcGIS.Geometry.IPoint point = new ESRI.ArcGIS.Geometry.Point(); // и нужное место на карте
point.PutCoords(dx, dy);
axMapControl1.CenterAt(point);
Теперь бы найти методы arcGis Engine для преобразования географических координат в прямоугольные и обратно ...
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
Re: Программирование в Arcgis Engine
Получилось что-то вроде этого:
Но не понимаю пока какие типы координатных систем Esry выбрать для прямоугольной и географической СК вместо
esriSRGeoCSType.esriSRGeoCS_NAD1983
esriSRProjCSType.esriSRProjCS_NAD1983N_AmericaLambert
У меня вроде в arcmap в свойствах Layers указано
Pulkovo_1942_GK_Zone_6
А в свойства конкретного слоя - топокарты
Transverse_Mercator
.
Код: Выделить всё
[C#]
//Create Spatial Reference Factory
ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass();
ISpatialReference sr1;
//GCS to project from
IGeographicCoordinateSystem gcs = srFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983);
sr1 = gcs;
sr1.SetFalseOriginAndUnits(-180, -90, 1000000);
//Projected Coordinate System to project into
IProjectedCoordinateSystem pcs = srFactory.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_NAD1983N_AmericaLambert);
pcs.SetFalseOriginAndUnits(0, 0, 1000);
ISpatialReference sr2;
sr2 = pcs;
//Point to project
IPoint point = new PointClass() as IPoint;
point.PutCoords(-117.17, 34.06);
//Geometry Interface to do actual project
IGeometry geometry;
geometry = point;
geometry.SpatialReference = sr1;
geometry.Project(sr2);
point = geometry as IPoint;
double x;
double y;
point.QueryCoords(out x, out y);
Debug.Print("X: " + x.ToString());
Debug.Print("Y: " + y.ToString());
esriSRGeoCSType.esriSRGeoCS_NAD1983
esriSRProjCSType.esriSRProjCS_NAD1983N_AmericaLambert
У меня вроде в arcmap в свойствах Layers указано
Pulkovo_1942_GK_Zone_6
А в свойства конкретного слоя - топокарты
Transverse_Mercator
.
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
Re: Программирование в Arcgis Engine
Вроде получилось так
Пулково взял из ArcMap.
Код: Выделить всё
gcs = srFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
pcs = srFactory.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_Pulkovo1942GK_6);
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Программирование в Arcgis Engine
А вот это зачем?
На сколько я знаю, все параметры проекции берутся из *.prj файл, который выбирается согласно идентификационному номеру.
Это нужно, если вы с нуля свою проекцию программно определяете.
И еще обращаю внимание, что при пересчете в различные эллипсоиды необходимо указывать параметры преобразования (3 или 7 цифр).
http://edndoc.esri.com/arcobjects/9.0/C ... erview.htm
Код: Выделить всё
sr1.SetFalseOriginAndUnits(-180, -90, 1000000);
pcs.SetFalseOriginAndUnits(0, 0, 1000);
Это нужно, если вы с нуля свою проекцию программно определяете.
И еще обращаю внимание, что при пересчете в различные эллипсоиды необходимо указывать параметры преобразования (3 или 7 цифр).
http://edndoc.esri.com/arcobjects/9.0/C ... erview.htm
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
Re: Программирование в Arcgis Engine
Спасибо!
Не могу теперь найти как получить текущие координаты курсора в MapControl.
Непонятно как с классами разбираться.
Не могу теперь найти как получить текущие координаты курсора в MapControl.
Непонятно как с классами разбираться.
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Программирование в Arcgis Engine
Надо создать свой ITool в нем есть метод OnMouseDown или OnMouseMove. Но там координаты экранные. Для их пересчета необходимо из IActiveView получить IDisplayTransformation и вызвать метод ToMapPoint. Если ITool создавать не хочется - то IExtension и слушать события перемещения курсора. Как создавать ITool есть в документации пример (кажется в Desctop Customisation)
-
- Завсегдатай
- Сообщения: 423
- Зарегистрирован: 15 май 2010, 06:13
- Репутация: 7
Re: Программирование в Arcgis Engine
Спасибо!
Есть еще один способ. Просто в событии на клик мышки в mapControl есть не только координаты экрана e.X,e.Y но и координаты карты e.MapX, e.MapY.
Есть еще один способ. Просто в событии на клик мышки в mapControl есть не только координаты экрана e.X,e.Y но и координаты карты e.MapX, e.MapY.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя