Получение координат точки и координат щелчка мыши в ArcView GIS

Материал из GIS-Lab
Версия от 13:04, 5 августа 2012; Bolotoved (обсуждение | вклад) (Новая страница: «{{Статья|Опубликована|point}} {{Аннотация|Получение координат точки и простейший скрипт на Av…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/point.html


Получение координат точки и простейший скрипт на Avenue с комментариями.

Получение координат точек через интерфейс Arcview

Самый простой способ узнать координаты точки - поставить графический объект "точка" (или точку в точечной теме) в нужном вам месте, и удерживая правую кнопку мыши выбрать пункт shape properties (свойства объекта).

Point1.gif

Point2.gif

Координаты точки будут показаны в строке вида: Point: X Y, где X Y и будут искомые координаты.

То, в каких единицах будут отображаться координаты зависит от двух параметров:

  1. Исходные единицы данных
  2. Установленная проекция Вида

Если Виду (View) задана проекция через 'View\Properties\Projection' (где при этом должно значится: Projection: Имя проекции), то координаты будут отображаться в спроектированных (метровых) координатах.

Если Виду (View) не задана проекция через View\Properties\Projection (где при этом должно значится: Projection: None) координаты будут отображаться в единицах исходных данных, это могут быть как метры так и десятичные градусы.

Point3.gif

Чтобы эти координаты перевести в привычные географические, необходимо изменить проекцию вида на географическую и еще раз для нужной точки выбрать 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 (долгота-широта или широта-долгота).


Ссылки по теме