Получение координат точки и координат щелчка мыши в Arcview
-
- Bot
- Сообщения: 276
- Зарегистрирован: 03 фев 2008, 23:13
- Репутация: 3
Получение координат точки и координат щелчка мыши в Arcview
Обсуждение статьи "Получение координат точки и координат щелчка мыши в Arcview"
http://gis-lab.info/qa/point.html
история создания инструмента
http://gis-lab.info/qa/point.html
история создания инструмента
- Ruslan
- Участник
- Сообщения: 79
- Зарегистрирован: 27 окт 2003, 17:33
- Репутация: 11
- Откуда: НекстГИС
Огромное спасибо авторам идеи данного скрипта и разработчикам!!!
Pасширением "GetPoint" Пользуюсь каждый день!!!
Ну очень дружелюбное и эффективное расширение.
Но, возникла следующая просьба, вот ее смысл:
Я очень часто проверяю качество исполнения крупномасштабных карт, а также, например качество привязки планов - схем, посредством сервиса "Google maps" дабы не напрягаясь, посмотреть аналогичную местность на космоснимках, довольно часто очень хорошего разрешения.
Как я это делаю: кликнул расширением "GetPoint" например на перекрестке дорог, далее вставил координаты в строке поиска "Google maps" (немножко поколдовал добавляя разделители и меняя местами координаты) потом "Enter" и "Слава Интернету!" в браузере отобразилось то место которому принадлежит координата! далее сравнивай, по настроению, хвали или ругай качество привязки - оцифровки
Все бы идеально, НО гугл воспринимает координаты в таком виде: [ 55.754252,37.620192 ] то есть lat,long дробный разделитель - точка, разделитель между широтой долготой - запятая.
А вот у расширения "GetPoint" координаты копируются в таком виде: [ 37.620192;55.754252 ] иначе говоря long;Lat дробный разделитель - точка, разделитель между долготой и широтой - точка с запятой.
Теперь просьба: дополните пожалуйста расширение "GetPoint", еще одним способом копирования координат(сейчас там два типа копирования координат) специально для работы с сервисом
"Google maps" . что бы вначале шла координата широты, потом запятая далее координата долготы, дробный разделитель точка.
И тогда не нужно будет колдовать, и будет очень удобно работать с сервисом "Google maps".
Зараннее спасибо!
Pасширением "GetPoint" Пользуюсь каждый день!!!
Ну очень дружелюбное и эффективное расширение.
Но, возникла следующая просьба, вот ее смысл:
Я очень часто проверяю качество исполнения крупномасштабных карт, а также, например качество привязки планов - схем, посредством сервиса "Google maps" дабы не напрягаясь, посмотреть аналогичную местность на космоснимках, довольно часто очень хорошего разрешения.
Как я это делаю: кликнул расширением "GetPoint" например на перекрестке дорог, далее вставил координаты в строке поиска "Google maps" (немножко поколдовал добавляя разделители и меняя местами координаты) потом "Enter" и "Слава Интернету!" в браузере отобразилось то место которому принадлежит координата! далее сравнивай, по настроению, хвали или ругай качество привязки - оцифровки

Все бы идеально, НО гугл воспринимает координаты в таком виде: [ 55.754252,37.620192 ] то есть lat,long дробный разделитель - точка, разделитель между широтой долготой - запятая.
А вот у расширения "GetPoint" координаты копируются в таком виде: [ 37.620192;55.754252 ] иначе говоря long;Lat дробный разделитель - точка, разделитель между долготой и широтой - точка с запятой.
Теперь просьба: дополните пожалуйста расширение "GetPoint", еще одним способом копирования координат(сейчас там два типа копирования координат) специально для работы с сервисом
"Google maps" . что бы вначале шла координата широты, потом запятая далее координата долготы, дробный разделитель точка.
И тогда не нужно будет колдовать, и будет очень удобно работать с сервисом "Google maps".

Зараннее спасибо!
- Максим Дубинин
- MindingMyOwnBusiness
- Репутация: 737
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
просьба принимается
я так понимаю, что вот это известно и это не то о чем идет речь?
я так понимаю, что вот это известно и это не то о чем идет речь?
пристегивайтесь, турбулентность прямо по курсу
- Ruslan
- Участник
- Сообщения: 79
- Зарегистрирован: 27 окт 2003, 17:33
- Репутация: 11
- Откуда: НекстГИС
- Максим Дубинин
- MindingMyOwnBusiness
- Репутация: 737
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
- Ruslan
- Участник
- Сообщения: 79
- Зарегистрирован: 27 окт 2003, 17:33
- Репутация: 11
- Откуда: НекстГИС
-
- Участник
- Сообщения: 76
- Зарегистрирован: 24 фев 2006, 14:33
- Репутация: 0
Re: Получение координат точки и координат щелчка мыши в Arcview
Проблема в том, что компъютер понимае значения широты/долготы в виде dd.dddd, а вот подавляющее большинство обычных людей - только в dd°mm'ss".
Звонишь там в авиаохрану, например, а они: "Не морочте нам голову! Скажите нормально, с минутами и секундами."
И приходится открывать Виндозный каркулятор...
Никогда раньше не связывался с 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
'------------------------------
xCoordD = xCoord.truncate
xCoordM = ((xCoord - xCoordD)*60).truncate
xCoordS = ((((xCoord - xCoordD)*60)-xCoordM)*60).round
if (xCoordS > 59) then
xCoordS = 0
xCoordM = xCoordM + 1
if (xCoordM > 59) then
xCoordM = 0
xCoordD = xCoordD + 1
end
end
xCoordD.SetFormat("d")
xCoordM.SetFormat("dd.")
xCoordS.SetFormat("dd.")
xD = xCoordD.asString + "° "
xM = xCoordM.asString + "' "
xS = xCoordS.asString + "''"
x = xD+xM+xS
yCoordD = yCoord.truncate
yCoordM = ((yCoord - yCoordD)*60).truncate
yCoordS = ((((yCoord - yCoordD)*60)-yCoordM)*60).round
if (yCoordS > 59) then
yCoordS = 0
yCoordM = yCoordM + 1
if (yCoordM > 59) then
yCoordM = 0
yCoordD = yCoordD + 1
end
end
yCoordD.SetFormat("d")
yCoordM.SetFormat("dd.")
yCoordS.SetFormat("dd.")
yD = yCoordD.asString + "° "
yM = yCoordM.asString + "' "
yS = yCoordS.asString + "''"
y=yD+yM+yS
'------------------------------
'Очистить буфер обмена
Clipboard.The.Empty
'Добавить в буфер обмена строку содержащую координаты
Clipboard.The.Add("X-coord: " + xCoord.asString + nl + "Y-coord: " + yCoord.asString)
'Обновить буфер обмена
Clipboard.The.Update
'Вывести полученные координаты в окне сообщения
msgbox.info("X: " + xCoord.asString + " (" + x +" )" + nl + "Y: " + yCoord.asString+ " ( " + y + " )", "Координаты скопированы в буфер обмена")
'Если модифицировать строку добавляющую в буфер обмена координаты таким образом:
'Clipboard.The.Add(xCoord.asString + tab + yCoord.asString)
'То скопированные координаты будет удобно добавлять в документ Excel, они сразу будут попадать в соседние ячейки, для вставки в ячейки таблиц ACCESS и WORD нужно, чтобы смежные поля были оба выделены
Сработало!!!
-
- Участник
- Сообщения: 76
- Зарегистрирован: 24 фев 2006, 14:33
- Репутация: 0
Re: Получение координат точки и координат щелчка мыши в Arcview
...или - ещё вариант, в формате dd°mm'ss.s" :
Код: Выделить всё
'------------------------------
xCoordD = xCoord.truncate
xCoordM = ((xCoord - xCoordD)*60).truncate
xCoordS = ((((xCoord - xCoordD)*60)-xCoordM)*60)
xCoordSd = ((((xCoord - xCoordD)*60)-xCoordM)*60)-xCoordS
xCoordD.SetFormat("d")
xCoordM.SetFormat("dd.")
xCoordS.SetFormat("dd.d")
xD = xCoordD.asString + "° "
xM = xCoordM.asString + "' "
xS = xCoordS.asString + "''"
x = xD+xM+xS
yCoordD = yCoord.truncate
yCoordM = ((yCoord - yCoordD)*60).truncate
yCoordS = ((((yCoord - yCoordD)*60)-yCoordM)*60)
yCoordSd = ((((yCoord - yCoordD)*60)-yCoordM)*60)-yCoordS
yCoordD.SetFormat("d")
yCoordM.SetFormat("dd.")
yCoordS.SetFormat("dd.d")
yD = yCoordD.asString + "° "
yM = yCoordM.asString + "' "
yS = yCoordS.asString + "''"
y=yD+yM+yS
'------------------------------
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя