Форум Блог
pix

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

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

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

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

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

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

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

Если Виду (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 и добавляет в панель две новых кнопки для получения координат, действие кнопок различается разделителем между координатами, первый инструмент вводит разделитель ";", второй - табуляцию (сделано для удобства ввода координат в таблицы).

См. также:

Подключение скриптов в Arcview 3.x >>>
Создание кнопки и назначение ей скрипта в Arcview 3.x >>>

Последнее обновление: August 01 2007
(Наверх)

E-mail: 3 цифры: Введите 3 цифры с картинки в поле
Комментарий, вопрос, ошибка: (?)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter (?)

О нас : Статьи : Программы : Форум (все) : Документация : Контакты : Участие : English

Новости сайта:(?)

доходная реклама перетяжки тут; наилучшие ежедневники, визитницы; быстрая доставка почты, курьер на дом; Реализуем тельфер, кран-балка, таль (тали), кран козловой в Москве