Страница 1 из 1
Получение координат в формате DD
Добавлено: 20 апр 2017, 16:19
altruista
Здравствуйте!
Простой вопрос, возможно, но не найду ответа. Треубется написать аддин для получения координат карты при клике мыши по карте. Решение есть:
How To: Capture map coordinates with a mouse click using Python
Однако, так мы получаем координаты в виде XY (метры), но как получить их в виде DD (градусы) системы координат карты/фрейма данных?
Подскажите, пожалуйста!
Re: Получение координат в формате DD
Добавлено: 20 апр 2017, 17:09
nadiopt
перепроецировать фрейм в DD?
Re: Получение координат в формате DD
Добавлено: 20 апр 2017, 18:20
altruista
Несмотря на то, что в строке состояния координаты показываются градусами, в аддине X и Y все равно в метрах.
Re: Получение координат в формате DD
Добавлено: 21 апр 2017, 09:52
5Nap
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
Re: Получение координат в формате DD
Добавлено: 21 апр 2017, 10:51
altruista
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
А это уже не знаю как исправить. Не поможете? Спасибо!
Re: Получение координат в формате DD
Добавлено: 21 апр 2017, 11:00
5Nap
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