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

Обсуждение материалов сайта: вопросы, замечания, предложения
Ответить
updates-bot
Bot
Сообщения: 276
Зарегистрирован: 03 фев 2008, 23:13
Репутация: 3

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

Сообщение updates-bot » 17 июл 2008, 18:45

Обсуждение статьи "Получение координат точки и координат щелчка мыши в Arcview"

http://gis-lab.info/qa/point.html

история создания инструмента

Аватара пользователя
Ruslan
Участник
Сообщения: 79
Зарегистрирован: 27 окт 2003, 17:33
Репутация: 11
Откуда: НекстГИС

Сообщение Ruslan » 18 июл 2008, 11:38

Огромное спасибо авторам идеи данного скрипта и разработчикам!!!

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
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Сообщение Максим Дубинин » 18 июл 2008, 18:10

просьба принимается
я так понимаю, что вот это известно и это не то о чем идет речь?
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Ruslan
Участник
Сообщения: 79
Зарегистрирован: 27 окт 2003, 17:33
Репутация: 11
Откуда: НекстГИС

Сообщение Ruslan » 21 июл 2008, 11:15

Протестировал расширение "Open-in-google-maps-earth" .
Не понравилось. Каждый раз гуглмапс грузиться с нуля в новой вкладке браузера!

Поэтому для меня предпочтительней вариант переноса координат как у "GetPoint".

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Сообщение Максим Дубинин » 22 июл 2008, 20:47

качаем новую версию расширения с целыми четырьмя возможностями, включая ту, что для Google Maps (кнопка G)
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Ruslan
Участник
Сообщения: 79
Зарегистрирован: 27 окт 2003, 17:33
Репутация: 11
Откуда: НекстГИС

Сообщение Ruslan » 23 июл 2008, 09:41

Большое человеческое спасибо!!!
Проверил, все работает, как изначально и хотелось.

AN1440
Участник
Сообщения: 76
Зарегистрирован: 24 фев 2006, 14:33
Репутация: 0

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

Сообщение AN1440 » 22 июн 2009, 16:55

Проблема в том, что компъютер понимае значения широты/долготы в виде dd.dddd, а вот подавляющее большинство обычных людей - только в dd°mm'ss".
Звонишь там в авиаохрану, например, а они: "Не морочте нам голову! Скажите нормально, с минутами и секундами."
И приходится открывать Виндозный каркулятор...

Никогда раньше не связывался с 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 нужно, чтобы смежные поля были оба выделены 
Ура!!!
Сработало!!!

AN1440
Участник
Сообщения: 76
Зарегистрирован: 24 фев 2006, 14:33
Репутация: 0

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

Сообщение AN1440 » 22 июн 2009, 17:14

...или - ещё вариант, в формате 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
'------------------------------


Ответить

Вернуться в «Материалы сайта»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей