Изменение проекции в *.lyr файле

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 31

Изменение проекции в *.lyr файле

Сообщение 5Nap » 14 ноя 2016, 09:45

Привет!
Есть lyr-файл, описывающий тайловый слой из сети. В свойствах у него, соответственно, значится Data Type: Tiled Internet Layer. Создан в ArcGIS Online с последующим сохранением на компе. При создании ему по умолчанию задаётся проекция WGS_1984_Web_Mercator_Auxiliary_Sphere, что конкретно для этого слоя неверно.
Два вопроса - можно ли её изменить и можно ли как-то руками залезть в сам lyr-файл?

geouser
Активный участник
Сообщения: 145
Зарегистрирован: 02 июн 2015, 10:32
Репутация: 53
Откуда: Москва

Re: Изменение проекции в *.lyr файле

Сообщение geouser » 14 ноя 2016, 10:16

Я не спец по тайловым и прочим онлайн слоям, скажу сразу.
Файл слоя это как бы его законсервированное отображение в программе ArcMap, со ссылкой на источник данных.
При подгрузке файла слоя обычно можно изменить настройки и пересохранить файл слоя используя правый щелчок мышью на слое и меню "Сохранить как файл слоя".
Вполне возможно, файл слоя можно также изменить командами Python. Это типа не открывая его вообще.
Но слой так или иначе должен поддерживать изменение самого себя. :D
Наверное есть слои, параметры которых менять нельзя.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Изменение проекции в *.lyr файле

Сообщение Александр Мурый » 14 ноя 2016, 10:30

Вы уверены, что проекция неверна? Обычно при создании тайлов используется именно Web Mercator.
ArcGIS может перепроецировать тайловый слой "на лету"? Если да, то проблем быть не должно.
Редактор материалов, модератор форума

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 31

Re: Изменение проекции в *.lyr файле

Сообщение 5Nap » 14 ноя 2016, 10:38

geouser писал(а):При подгрузке файла слоя обычно можно изменить настройки и пересохранить файл слоя используя правый щелчок мышью на слое и меню "Сохранить как файл слоя".
Вполне возможно, файл слоя можно также изменить командами Python.
В этом случае никаких вариантов изменения нет. Т.е. при "обычном" слое есть варианты "Change Data Source" и тд, в случае с тайловым - вариантов что-то сделать никаких. Save as Layer даёт возможность лишь поменять версию ArcGIS'а (причем при версии ниже 10.1, вроде, всё вообще перестаёт открываться. Подозреваю, что ArcGIS просто не поддерживал тайловые слои в этих версиях.)
Пробовать перепроецировать через arcpy пробовал. К сожалению, неудачно.
Александр Мурый писал(а):Вы уверены, что проекция не верна? Обычно при создании тайлов используется именно Web Mercator.
Абсолютно. Насчёт перепроекции "на лету" - надеюсь, что да, у меня нет возможности проверить, пока я её не поменяю:)

geouser
Активный участник
Сообщения: 145
Зарегистрирован: 02 июн 2015, 10:32
Репутация: 53
Откуда: Москва

Re: Изменение проекции в *.lyr файле

Сообщение geouser » 14 ноя 2016, 13:12

Похоже на то, что:
1) Проекция Web Mercator ... , как мне тоже кажется, является более чем естественной для тайлового слоя, тем более с ArcGIS Online. Почти всё (или всё) что сделано в ArcGIS Online со стороны ESRI, по умолчанию в этой проекции, тем более тайлы. Поскольку они по любому являются подстилкой для других слоёв, эта проекция может "прилипать" и к векторным слоям тоже?
Я AG Online особо не пользуюсь, если честно.
2) Поскольку слой чужой, поменять его параметры не удастся, как я и думал. Это уже решает вопрос отрицательно. Файл слоя указывает на огромный массив растров, находящихся у чужого дяди вдалеке отсюда.
3) Если ArcGIS перепроецирует тайловый слой на лету, то она делает это сразу. Достаточно лишь загрузить требуемый файл слоя, и поменять правой кнопкой мыши проекцию *карты* (фрейма данных, она же "Слои" в самом верху слоёв) на любую другую, отличную от WebM. Менять параметры слоя не надо.

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 31

Re: Изменение проекции в *.lyr файле

Сообщение 5Nap » 14 ноя 2016, 13:36

geouser писал(а):Похоже на то, что:
1) Проекция Web Mercator ... , как мне тоже кажется, является более чем естественной для тайлового слоя, тем более с ArcGIS Online. Почти всё (или всё) что сделано в ArcGIS Online со стороны ESRI, по умолчанию в этой проекции, тем более тайлы.
Всё так. Вот только, к сожалению, не все так считают. Но АГ Онлайн по умолчанию задаёт Веб Меркатор без возможности что-то указать. Отсюда и берётся неверно прописанная проекция в слое (в lyr-файле, тайлы не имеют никакой проекции)
geouser писал(а):2) Поскольку слой чужой, поменять его параметры не удастся, как я и думал. Это уже решает вопрос отрицательно. Файл слоя указывает на огромный массив растров, находящихся у чужого дяди вдалеке отсюда.
3) Если ArcGIS перепроецирует тайловый слой на лету, то она делает это сразу. Достаточно лишь загрузить требуемый файл слоя, и поменять правой кнопкой мыши проекцию *карты* (фрейма данных, она же "Слои" в самом верху слоёв) на любую другую, отличную от WebM. Менять параметры слоя не надо.
Он прекрасно перепроецирует на лету в любую проекцию. Но исходная проекция указана неверно, это не Веб Меркатор. Поэтому и все результаты перепроецирования тоже неверны.

amnesiac
Активный участник
Сообщения: 237
Зарегистрирован: 03 мар 2015, 10:01
Репутация: 24
Откуда: Санкт-Петербург

Re: Изменение проекции в *.lyr файле

Сообщение amnesiac » 14 ноя 2016, 14:22

А можете подробнее описать ситуацию - как создавался тайловый слой (нигде не нашла описания, как сделать это в AG Online, знаю только как в AG for Server это делается) и дать ссылку на сам слой посмотреть?

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 31

Re: Изменение проекции в *.lyr файле

Сообщение 5Nap » 14 ноя 2016, 15:07

amnesiac писал(а):А можете подробнее описать ситуацию - как создавался тайловый слой (нигде не нашла описания, как сделать это в AG Online, знаю только как в AG for Server это делается) и дать ссылку на сам слой посмотреть?
В окне карты Add->Add Layer From Web->A Tile Layer. Там дальше разбить адрес по маске https://{subDomain}.domain.com/<path>/{level}/{col}/{row}.jpg

После этого карта сохраняется, закрывается. На вкладке My Content есть список всех карт, рядом с каждой есть опция Open In ArcGIS for Desktop. Она сохраняет файл item.pkinfo, представляющий из себя xml со ссылкой на данные на портале ArcGIS'а. Если открыть его в ArcMAP, то в проекте будет этот самый слой с Data Type = Tiled Internet Layer. Единственное, что с ним можно сделать - сохранить как lyr.

Ну и проблема, собственно, в том, что этому слою по умолчанию прописывается Web Mercator даже если это не так.

Пример слоя - это яндексовский слой. Поскольку подобное использование их тайлов полу-легально, и, насколько я могу судить, на форуме есть много народу, не приветствующего подобное полу-легальное использование, сам lyr файл прикладывать не буду)
Ссылка на тайлы - https://{subDomain}.maps.yandex.net/tiles?l=map&v=4.127.2&x={col}&y={row}&z={level}&scale=1&lang=ru_RU

subDomain = [vec01, vec02, vec03, vec04]

geouser
Активный участник
Сообщения: 145
Зарегистрирован: 02 июн 2015, 10:32
Репутация: 53
Откуда: Москва

Re: Изменение проекции в *.lyr файле

Сообщение geouser » 15 ноя 2016, 09:48

Я вообще не могу ничего понять.
Вы берёте чужой тайловый слой (который наверняка в проекции Web Mercator), и говорите, что его проекция "неверная". А какая верная? Откуда такая информация?
А зачем добавлять чужой тайловый слой в ArcGIS Online, чтобы затем сохранить его в lyr файл? А не проще ли в ArcMap сразу добавить искомый слой и играться с ним до посинения?
Я таких тайловых слоёв насоздавал кучу, и ВСЕ они в проекции web Mercator. А почему? А потому, что веб приложение использует слои ArcGIS Online, и все они в этой проекции. Потому у меня гигабайты созданных тайлов в проекции Web Mercator. И да, у тайлов ЕСТЬ проекция - именно эта, где большой север. Тайлы это скриншоты экрана, которые геопривязаны в какую-то проекцию, ничего более.
Не проще ли добавить искомый слой сразу в ArcMap и не мутить ничего с ArcGIS Online?
Обсуждать проекцию можно у своего векторного слоя, и то не накладывая его на чужие тайлы.
Поменять проекцию у чужих тайлов НЕЛЬЗЯ.
Кто-то задавал подозрительно похожий вопрос, ответы в целом в том же духе, что и здесь.
Поскольку вопрос очень экзотический и вне интереса для большинства обычных пользователей, правильно рекомендуют обратиться в ESRI - можно написать в форум, а если есть программа ArcGIS на оплаченной техподдержке, то запросить техподдержку. Случай весьма экзотический для большинства пользователей.

geouser
Активный участник
Сообщения: 145
Зарегистрирован: 02 июн 2015, 10:32
Репутация: 53
Откуда: Москва

Re: Изменение проекции в *.lyr файле

Сообщение geouser » 15 ноя 2016, 09:56

Собственно говоря, важное замечание.
Чужие тайлы это веб-ГИС-СЕРВИС, то есть оформленная услуга, как её оформил издатель сервиса. Вы ей лишь пользуетесь с правами "только чтение".
Обсуждать проекцию можно у шейпфайла у себя не жёстком диске.
Здесь же ... you are out of luck ... :D
Задавать параметры можно лишь своим собственным тайловым слоям, а не чужим. То есть вначале их самостоятельно создать.
Или ... бодаться с авторами чужого слоя, если Вы используете его легально, а им это интересно. :D

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 31

Re: Изменение проекции в *.lyr файле

Сообщение 5Nap » 15 ноя 2016, 10:16

Подозрительно похожий вопрос мой.
Проекция не неверная, она отличается от общепринятой в понимании ESRI. Яндекс используют эллиптическую, а не сферическую проекцию Меркатора.
Тайл - это png размером 256х256 (у Я, кстати, немного меньше), вместе с которым приходит информация об уровне, колонке и столбце. Это единственные координаты, которые там есть. Так же с ним не приходит никакой информации о проекции. И то и другое задаётся на уровне пользователя (если мы говорим о случае подрузки тайлов в АГ).
Я использую их с правами только чтение, верно. И я читаю, что сейчас экстент экрана ((37.3, 37.9), (55.5, 56.0)), масштаб такой и экстент задан в координатах. На моей стороне формируется запрос к сервису на тайлы по определённой схеме, в результате чего я получаю в ответ набор пнг, для которых заданы столбец и колонка. И опять же на моей стороне происходит интерпретация этих псевдо-координат, чтобы вывести эти тайлы на экран.
Ну так вот. Ошибка происходит на моменте запроса, т.к. задана неверная проекция. В слое. У меня. Тайловый сервис тут ни при чём, какие координаты он использует - известно. Вот я и хочу их выставить.
Если вы знаете, как создать подобный тайловый слой руками не чере АГ Онлайн и в какой-то момент дойти до стадии выбора проекции - буду очень признателен.

geouser
Активный участник
Сообщения: 145
Зарегистрирован: 02 июн 2015, 10:32
Репутация: 53
Откуда: Москва

Re: Изменение проекции в *.lyr файле

Сообщение geouser » 15 ноя 2016, 11:44

Я так и думал про авторство вопроса, судя по тематике и времени.
Опять немного неправильно. Картинки по запросу вытягиваются не абстрактные, а в системе. Конкретно Яндекс выдаёт их в своей системе (проекция), а предположим, ArcGIS Online - в своей. Изменить параметры проекции сервиса потребитель не может, только издатель.
Говорю это как издатель десятков сервисов, в том числе кэшированных размером в десятки гигабайт.
Когда какая-то карта публикуется, и тем более кэшируется, в какой-то проекции, изменить её пользователь уже не может.
Вы можете только, если это вообще возможно, запросить у Яндекса *правильный* lyr файл с параметрами их сервиса. И больше ничего здесь поменять нельзя.
Если система не дружит с системой ArcGIS Online (случайно или намеренно), это проблема только этой системы. Потому что система ArcGIS Online придумана конкретными людьми как стандарт, на котором работает 99% или все 100% в системе ArcGIS.
Изменить проекцию в терабайтах кэша Яндекс карт у Вас нет ни технической, ни административной возможности. Этот сервис поставляется в режиме "только чтение".
Я могу повыпендриваться и опубликовать большой сервис в любой проекции и закэшировать его. Но ... он не будет дружить с ArcGIS Online, то есть не будет накладываться ни на одну их подложку, в веб системе.
Речь здесь идёт о чём ... об эллипсоиде и геоиде как бы, параметрах проекции. Нет абстрактной координаты с X и Y, а есть координата в системе Pulkovo 42, WGS 84, Web Mercator и т.п., где каждый тайл кэшированного сервиса уже посажен на место с учётом конкретного эллипсоида-геоида и параметров (сдвига, например). ArcGIS вообще не понимает проекции без геоида (это кстати наследие MapInfo).

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 526
Ваше звание: Author
Контактная информация:

Re: Изменение проекции в *.lyr файле

Сообщение Denis Rykov » 15 ноя 2016, 11:52

Не знаю как в ArcGIS, но в других системах (в том же QGIS) для того, чтобы совместить тайлы, находящиеся в разных проекциях, достаточно воспользоваться перепроецированием "на лету", проекцию тайлового слоя можно так же указать самостоятельно. Аналогично, можно делать и в веб-клиентах, в том же OpenLayers, как натянуть Yandex на OSM я писал тут.
Spatial is now, more than ever, just another column- The Geometry Column.

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 31

Re: Изменение проекции в *.lyr файле

Сообщение 5Nap » 15 ноя 2016, 12:19

Denis Rykov писал(а):достаточно воспользоваться перепроецированием "на лету", проекцию тайлового слоя можно так же указать самостоятельно
Об этом и речь. И если в QGIS тайлам Яндекса указать не принятый у них World Mercator, а принятый у всех остальных Web Mercator, то тайлы точно так же будут уезжать на 20 км. Вопрос не в Яндексе, вопрос в запросе, который формируется у меня на компе. Я просто-напросто запрашиваю не те кусочки.
geouser писал(а):Если система не дружит с системой ArcGIS Online (случайно или намеренно), это проблема только этой системы. Потому что система ArcGIS Online придумана конкретными людьми как стандарт, на котором работает 99% или все 100% в системе ArcGIS.
Изменить проекцию в терабайтах кэша Яндекс карт у Вас нет ни технической, ни административной возможности. Этот сервис поставляется в режиме "только чтение".
Мне не нужно менять проекцию Яндекса. Мне не нужно менять проекцию в АГ Онлайн (там она зашита жёстко, я уже попробовал этот путь). Мне нужно поменять проекцию, зашитую в отдельном 6-ти килобайтовом lyr-файле, который лежит у меня на компе и по схеме в котором формируется запрос. Внутри этого файла прописано, что запрос к конкретному сервису я формирую в Web Mercator. В случае с Яндексом это не так.

В целом, я понял, что на данный момент конкретно в ArcGIS это близко к невозможному, ок.

geouser
Активный участник
Сообщения: 145
Зарегистрирован: 02 июн 2015, 10:32
Репутация: 53
Откуда: Москва

Re: Изменение проекции в *.lyr файле

Сообщение geouser » 15 ноя 2016, 13:37

Ну да, всё вышесказанное невозможно. LYR файл ArcGIS просто это не поддерживает, параметры тайлового слоя пользователем не меняются. А здесь тема по ArcGIS, про другие системы не знаю.
А говоря вульгарным языком про запросы, значит нужно запрограммировать запрос на СДВИГ, параметры которого нужно определить инструментально. То есть запрашивать не X и Y, а X-x и Y-y.
Это самое очевидное следствие из вышесказанного. А насколько оно осуществимо, это другой вопрос.
Абсолютно похожая тема возникает при использовании WGS84 и Pulkovo42. Нужно знать параметры пересчёта.
Кстати в ArcMap они есть, эти transformations зашиты в перепроецирование.
Ещё раз поясню, что перепроецирование работает только на лету со слоями в ArcMap. В веб системе Вам надо самостоятельно менять ПАРАМЕТРЫ запроса, то есть закладывать туда сдвиг, поворот и что там ещё потребуется. Само приложение запроса тайлов должно осуществлять сдвиг на 20 км, чтобы попасть в нужное место.
Ибо координаты Спасской башни у AG Online и Яндекса разные ...

Ответить

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

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

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