Страница 1 из 1

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

Добавлено: 21 апр 2018, 16:06
nomanavoid
Здравствуйте!

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

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

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

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

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

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

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

Добавлено: 23 апр 2018, 08:08
doujin
Позвольте предложить простое решение на python.
Открыть окно Python. Вставить код:

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

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

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

Добавлено: 25 апр 2018, 09:22
nomanavoid
Спасибо за отзывы!

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

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

Добавлено: 25 апр 2018, 09:53
freeExec
Взять Х из одной, У из другой, а потом наоборот.

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

Добавлено: 25 апр 2018, 10:57
giser
Можно как-то так, например:

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

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))

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

Добавлено: 08 май 2018, 13:18
nomanavoid
всем огромное спасибо!
если кому интересно, вот как то так получилось:

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

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))