Как получить координаты видимого экстента и записать их в текстовый файл?

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
nomanavoid
Новоприбывший
Сообщения: 5
Зарегистрирован: 09 апр 2018, 18:22
Репутация: 0
Откуда: Новосибирск

Как получить координаты видимого экстента и записать их в текстовый файл?

Сообщение nomanavoid » 21 апр 2018, 16:06

Здравствуйте!

Я понимаю, что можно просто приблизиться к каждому углу рамки и нажать кнопку Identify, но каждый раз это делать очень долго, а работать нужно быстро.
Прошу помощи в написании такого скрипта, который будет "скалывать" координаты с видимого экстента и записывать их в файл.
Я только начинаю осваивать питон, поэтому помогите разобраться, дать какие-нибудь подсказки.

Monstria
Активный участник
Сообщения: 133
Зарегистрирован: 17 май 2011, 06:22
Репутация: 50
Откуда: Нижний Новгород

Re: Как получить координаты видимого экстента и записать их в текстовый файл?

Сообщение Monstria » 22 апр 2018, 09:36

На питоне не люблю программировать - а так задача простая...
Пользователь не сказал когда хочет снимать данные (разумеется можно сделать кнопу для выполнения действия), поэтому я сделал запись всех текущих изменений.

Файл лога всегда пишется (дописывается) в файлик mapLocationData.txt на рабочем столе, данные пишутся в системе координат рабочего фрейма..

Посмотреть как работает можно тут - https://youtu.be/EVpnmNWq8co

Взять плагин -
saveLocation.rar
(28.77 КБ) 370 скачиваний

doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: Как получить координаты видимого экстента и записать их в текстовый файл?

Сообщение doujin » 23 апр 2018, 08:08

Позвольте предложить простое решение на python.
Открыть окно Python. Вставить код:

Код: Выделить всё

with open(u'D:\\TEMP\\_11.txt', 'w') as f:
    f.write(str(arcpy.mapping.MapDocument('current').activeDataFrame.extent))
Предварительно заменить путь до файла, в который нужно сохранить координаты. Если нужно координаты добавить в существующий файл, то параметр 'w' заменить на 'a'.

nomanavoid
Новоприбывший
Сообщения: 5
Зарегистрирован: 09 апр 2018, 18:22
Репутация: 0
Откуда: Новосибирск

Re: Как получить координаты видимого экстента и записать их в текстовый файл?

Сообщение nomanavoid » 25 апр 2018, 09:22

Спасибо за отзывы!

Я так понял, что записываются всегда две координаты экстента? (у меня так записывает и плагин, и конструкция python - координаты нижнего левого и верхнего правого угла)
тогда следующий вопрос - как дописать остальные две координаты верхнего правого и нижнего левого угла?

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Как получить координаты видимого экстента и записать их в текстовый файл?

Сообщение freeExec » 25 апр 2018, 09:53

Взять Х из одной, У из другой, а потом наоборот.

giser
Завсегдатай
Сообщения: 388
Зарегистрирован: 09 ноя 2012, 09:25
Репутация: 113
Откуда: Москва

Re: Как получить координаты видимого экстента и записать их в текстовый файл?

Сообщение giser » 25 апр 2018, 10:57

Можно как-то так, например:

Код: Выделить всё

with open(u'D:\\TEMP\\_11.txt', 'w') as f:
	ext = arcpy.mapping.MapDocument('current').activeDataFrame.extent
	listcoordext = [(ext.XMin,ext.YMin),(ext.XMin,ext.YMax),(ext.XMax,ext.YMax),(ext.XMax,ext.YMin)]
	f.write(str(listcoordext))

nomanavoid
Новоприбывший
Сообщения: 5
Зарегистрирован: 09 апр 2018, 18:22
Репутация: 0
Откуда: Новосибирск

Re: Как получить координаты видимого экстента и записать их в текстовый файл?

Сообщение nomanavoid » 08 май 2018, 13:18

всем огромное спасибо!
если кому интересно, вот как то так получилось:

Код: Выделить всё

import arcpy
import pythonaddins

mxd = arcpy.mapping.MapDocument("CURRENT")
ext = mxd.activeDataFrame.extent
df = arcpy.mapping.ListDataFrames(mxd)[0]
df_sr = df.spatialReference
any_gcs = df_sr.GCS
cur_pnt1 = arcpy.PointGeometry(arcpy.Point(ext.XMin, ext.YMin), df_sr)
cur_pnt2 = arcpy.PointGeometry(arcpy.Point(ext.XMax, ext.YMax), df_sr)
deg_pnt1 = cur_pnt1.projectAs(any_gcs).centroid
deg_pnt2 = cur_pnt2.projectAs(any_gcs).centroid
deg_x1 = deg_pnt1.X
deg_y1 = deg_pnt1.Y
deg_x2 = deg_pnt2.X
deg_y2 = deg_pnt2.Y


with open(u'D:\\txtFiles\\coord.txt', 'w') as f:
    f.write(str('Extent= ') + str(deg_x1) + ' ' + str(deg_y2) + ' ' + str(deg_x2) + ' ' + str(deg_y1))

Ответить

Вернуться в «ArcGIS»

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

Сейчас этот форум просматривают: Ahrefs [Bot] и 6 гостей