Openlayers/Leaflet проблемы с зумом TMS-слоя

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
molot
Новоприбывший
Сообщения: 11
Зарегистрирован: 03 сен 2013, 15:55
Репутация: 1

Openlayers/Leaflet проблемы с зумом TMS-слоя

Сообщение molot » 03 сен 2013, 16:15

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

Есть слой TMS, сгенерированный MapProxy, хочу отображать его поверх карты OSM оверлеем, но столкнулся с такой проблемой - если в свойствах слоя не ставить isBaseLayer в false - при переключении радиобатона оба слоя отображаются правильно, естественно по очереди. При попытке всунуть в свойства слоя параметр isBaseLayer: false слой перестает отображаться.
Пытаясь решить проблему обнаружил следующее - допустим, у меня при открытии карты заданы координаты центра и уровень зума, пусть будет = 12.
Урл, по которому леерсы пытаются получить тайл, выгллядит примерно так: ../tms/1.0.0/имя_слоя/12/2439/2948.png", что вроде бы правильно, но - тайл на самом деле находится по адресу ../tms/1.0.0/имя_слоя/11/2439/2948.png". Вот. Как бороться???

ЗЫ - подозреваю, что связано с тем, что маппрокси начинает нумерацию слоя с 0, а леерсы - с 1. Если так, то как обойти?
Последний раз редактировалось molot 11 сен 2013, 15:00, всего редактировалось 3 раза.

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

Re: Openlayers проблемы с отображением TMS-слоя в оверлее

Сообщение Denis Rykov » 03 сен 2013, 16:50

Spatial is now, more than ever, just another column- The Geometry Column.

molot
Новоприбывший
Сообщения: 11
Зарегистрирован: 03 сен 2013, 15:55
Репутация: 1

Re: Openlayers проблемы с отображением TMS-слоя в оверлее

Сообщение molot » 04 сен 2013, 13:20

Спасибо, Денис, с OL работает.
Решил попробовать ради интереса то же самое с Leaflet: если в свойствах слоя указать tms: true, и zoomOffset: -1, это не работает. LL получает картинки с номерами 1800 и 1801 (как я понимаю, номера характерны для пустых тайлов). Если не указывать zoomOffset - урл для тайла получается правильный, за исключением уровня зума. Если не указывать tms: true, а zoomOffset сделать -1, уровень зума в урле правильный, но тайлы запрашиваются из другой области, видимо из-за инверсии X-Y.

Не сталкивались с таким?

molot
Новоприбывший
Сообщения: 11
Зарегистрирован: 03 сен 2013, 15:55
Репутация: 1

Re: Openlayers проблемы с отображением TMS-слоя в оверлее

Сообщение molot » 04 сен 2013, 15:08

Точнее, даже так:

леерсы после указания zoomOffset: -1 запрашивали тайлы по такому же урлу, менялся только уровень зума, а лифлет меняет окончание урла полностью, примерно так:
было:
../tms/1.0.0/имя_слоя/13/4878/5896.png
стало:
../tms/1.0.0/имя_слоя/12/782/1800.png

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

Re: Openlayers/Leaflet проблемы с зумом TMS-слоя

Сообщение Denis Rykov » 04 сен 2013, 20:33

В Leaflet для этого есть опция, в MapProxy - настройка origin grid-а.
Spatial is now, more than ever, just another column- The Geometry Column.

molot
Новоприбывший
Сообщения: 11
Зарегистрирован: 03 сен 2013, 15:55
Репутация: 1

Re: Openlayers/Leaflet проблемы с зумом TMS-слоя

Сообщение molot » 05 сен 2013, 10:44

Вероятно Вы правы, но, на мой взгляд, получился костыль :)

Решение:
1. В свойствах слоя LL установлен параметр TMS:true
2. в конфиге MapProxy:
Простое добавление в раздел grids параметра origin: 'nw' результата не принесло (визуально ничего не поменялось), пришлось добавить еще один лишний пункт в res (resolutions), в итоге секция grids выглядит так:

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

grids:
  my_grids:
    base: GLOBAL_MERCATOR
    origin: 'nw'
    srs: 'EPSG:3857'
    res: [
        156543.03392804097,
        156543.03392804097,
        78271.51696402048,
        39135.75848201024,
        19567.87924100512,
        9783.93962050256,
        4891.96981025128,
        2445.98490512564,
        1222.99245256282,
        611.49622628141,
        305.748113140705,
        152.8740565703525,
        76.43702828517625,
        38.21851414258813,
        19.109257071294063,
        9.554628535647032,
        4.777314267823516,
        2.388657133911758,
        1.194328566955879,
        0.5971642834779395,
      ]

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

Re: Openlayers/Leaflet проблемы с зумом TMS-слоя

Сообщение Denis Rykov » 05 сен 2013, 20:52

В MapProxy по дефолту значение origin - 'sw', что соответствует TMS. Поэтому если в свойствах Leaflet у вас стоит 'TMS:true', то ничего в MapProxy менять не нужно.
Spatial is now, more than ever, just another column- The Geometry Column.

molot
Новоприбывший
Сообщения: 11
Зарегистрирован: 03 сен 2013, 15:55
Репутация: 1

Re: Openlayers/Leaflet проблемы с зумом TMS-слоя

Сообщение molot » 06 сен 2013, 12:54

Да, я так и думал. Однако, не работает( Точнее, происходит так, как описано выше. В новой версии MapProxy (которая 1.6.0a пока) кстати добавлена новая проекция - называется GLOBAL_WEBMERCATOR. Оптимизированная для работы с Google Maps, OSM и т.п. Она использует параметры, аналогичные GLOBAL_MERCATOR + srs и origin как у меня в примере выше.

Ответить

Вернуться в «Веб-картография»

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

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