GIS-LAB

Географические информационные системы и дистанционное зондирование


Форумы GIS-Lab.info

Геоинформационные системы (ГИС) и Дистанционное зондирование Земли


Получение координат в формате DD

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).

Получение координат в формате DD

Сообщение altruista » 20 апр 2017, 16:19

Здравствуйте!
Простой вопрос, возможно, но не найду ответа. Треубется написать аддин для получения координат карты при клике мыши по карте. Решение есть: How To: Capture map coordinates with a mouse click using Python
Однако, так мы получаем координаты в виде XY (метры), но как получить их в виде DD (градусы) системы координат карты/фрейма данных?
Подскажите, пожалуйста!
  • 0

altruista
Интересующийся
 
Зарегистрирован: 05 дек 2008
 
Сообщения: 35
Репутация: 4

Re: Получение координат в формате DD

Сообщение nadiopt » 20 апр 2017, 17:09

перепроецировать фрейм в DD?
  • 0

ин гроссен фамилен нихт клювен клац клац
Аватара пользователя
nadiopt
хрюкало
 
Зарегистрирован: 29 янв 2009
Откуда: Москва-Питер (на карте)
 
Сообщения: 4561
Репутация: 427
Статьи: 4

Re: Получение координат в формате DD

Сообщение altruista » 20 апр 2017, 18:20

Несмотря на то, что в строке состояния координаты показываются градусами, в аддине X и Y все равно в метрах.
  • 0

altruista
Интересующийся
 
Зарегистрирован: 05 дек 2008
 
Сообщения: 35
Репутация: 4

Re: Получение координат в формате DD

Сообщение 5Nap » 21 апр 2017, 09:52

altruista писал(а):Несмотря на то, что в строке состояния координаты показываются градусами, в аддине X и Y все равно в метрах.


Не важно, что показывается в строке состояния, важно, какая СК задана у фрейма.
Если СК спроецированная, то вам нужно взять точку с координатами x,y и spatial_reference как у фрейма, а дальше перепроецировать её и считать новые координаты
Код: Выделить всё
def onMouseDownMap(self, x, y, button, shift):
    df_sr = dataFrame.spatialReference
    any_gcs = arcpy.SpatialReference(4326)  # WGS84
    cur_pnt = arcpy.PointGeometry(arcpy.Point(x,y), spatial_reference = df_sr)
    deg_pnt = cur_pnt.projectAs(any_gcs).centroid  # вернёт объект arcpy.Point, а не PointGeometry
    deg_x = deg_pnt.X
    deg_y = deg_pnt.Y
  • 1

5Nap
Участник
 
Зарегистрирован: 21 ноя 2010
 
Сообщения: 52
Репутация: 15

Re: Получение координат в формате DD

Сообщение altruista » 21 апр 2017, 10:51

5Nap,
попробовал Ваш код. Сначала ругнулось, что "NameError: global name 'dataFrame' is not defined"
Добавил в код это:
Код: Выделить всё
        mxd = arcpy.mapping.MapDocument('CURRENT')
        df = arcpy.mapping.ListDataFrames(mxd)[0]
        df_sr = df.spatialReference

Но теперь получаю другую ошибку:
Код: Выделить всё
    cur_pnt = arcpy.PointGeometry(arcpy.Point(x,y), spatial_reference = df_sr)
  File "c:\program files (x86)\arcgis\desktop10.4\arcpy\arcpy\arcobjects\mixins.py", line 224, in __init__
    setattr(self._arc_object, attr, value)
AttributeError: DescribeGeometry: Read-only attribute spatial_reference

А это уже не знаю как исправить. Не поможете? Спасибо!
  • 0

altruista
Интересующийся
 
Зарегистрирован: 05 дек 2008
 
Сообщения: 35
Репутация: 4

Re: Получение координат в формате DD

Сообщение 5Nap » 21 апр 2017, 11:00

altruista писал(а):Но теперь получаю другую ошибку:
Код: Выделить всё
    cur_pnt = arcpy.PointGeometry(arcpy.Point(x,y), spatial_reference = df_sr)
  File "c:\program files (x86)\arcgis\desktop10.4\arcpy\arcpy\arcobjects\mixins.py", line 224, in __init__
    setattr(self._arc_object, attr, value)
AttributeError: DescribeGeometry: Read-only attribute spatial_reference

А это уже не знаю как исправить. Не поможете? Спасибо!


напишите просто (*убрать "spatial_reference = ")
cur_pnt = arcpy.PointGeometry(arcpy.Point(x,y), df_sr)
есть такой косяк, увы)

ещё, чтоб не промахнуться с градусной СК, можно написать
any_gcs = df_sr.GCS
  • 1

5Nap
Участник
 
Зарегистрирован: 21 ноя 2010
 
Сообщения: 52
Репутация: 15


Вернуться в ArcGIS

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

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


(Геокруг)

© GIS-Lab и авторы, 2002-2013. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов (подробнее).