Получение координат точки и координат щелчка мыши в ArcView GIS
по адресу http://gis-lab.info/qa/point.html
Получение координат точки и простейший скрипт на Avenue с комментариями.
Получение координат точек через интерфейс Arcview
Самый простой способ узнать координаты точки - поставить графический объект "точка" (или точку в точечной теме) в нужном вам месте, и удерживая правую кнопку мыши выбрать пункт shape properties (свойства объекта).
Координаты точки будут показаны в строке вида: Point: X Y, где X Y и будут искомые координаты.
То, в каких единицах будут отображаться координаты зависит от двух параметров:
- Исходные единицы данных
- Установленная проекция Вида
Если Виду (View) задана проекция через 'View\Properties\Projection' (где при этом должно значится: Projection: Имя проекции), то координаты будут отображаться в спроектированных (метровых) координатах.
Если Виду (View) не задана проекция через View\Properties\Projection (где при этом должно значится: Projection: None) координаты будут отображаться в единицах исходных данных, это могут быть как метры так и десятичные градусы.
Чтобы эти координаты перевести в привычные географические, необходимо изменить проекцию вида на географическую и еще раз для нужной точки выбрать shape properties.
View\Properties\Projection
Category: Projection of the world
Type: Geographic
Программная реализация на языке Avenue
Для того, чтобы получить координаты щелчка мышкой программно, через Avenue, нужно создать или загрузить:
'Задать точность вывода координат, количество знаков после разделителя целой и дробной части Script.The.SetNumberFormat("d.dddddd") 'Определить объект aView - Вид aView = av.GetActiveDoc 'Определить объект aDisplay (область отображения данных являющаяся частью вида) aDisplay = av.GetActiveDoc.GetDisplay 'Определить объект aPoint - точку, показывающую положение курсора мыши в момент щелчка aPoint = aDisplay.ReturnUserPoint 'Определить спроектирован ли вид aPrj = aView.GetProjection 'Если вид спроектирован - перевести точку в географическую проекцию if (aPrj.IsNull.Not) then aPoint = aPoint.ReturnUnprojected(aPrj) end 'Определить географические координаты точки xCoord = aPoint.getX yCoord = aPoint.getY 'Очистить буфер обмена Clipboard.The.Empty 'Добавить в буфер обмена строку содержащую координаты Clipboard.The.Add("X-coord: " + xCoord.asString + nl + "Y-coord: " + yCoord.asString) 'Обновить буфер обмена Clipboard.The.Update 'Вывести полученные координаты в окне сообщения msgbox.info("X: " + xCoord.asString + nl + "Y: " + yCoord.asString, "Координаты скопированы в буфер обмена")
Если модифицировать строку добавляющую в буфер обмена координаты таким образом:
Clipboard.The.Add(xCoord.asString + tab + yCoord.asString)
То скопированные координаты будет удобно добавлять в документ Excel, они сразу будут попадать в соседние ячейки, для вставки в ячейки таблиц ACCESS и WORD нужно, чтобы смежные поля были оба выделены (подробнее).
После создания скрипта, необходимо, на панели инструментов вида создать новый инструмент (tool), и назначить событию Apply созданный скрипт.
Можно также сразу загрузить расширение, расширение называется GetPoint и добавляет в панель четыре новых кнопки для получения координат, действие кнопок различается разделителем между координатами, порядком XY (долгота-широта или широта-долгота).