GeoWebCache: смещение тайлов

9

Я пытаюсь протестировать простую веб-карту на основе стека PostGIS / Geoserver / OpenLayers на Windows Server 2008.

Когда я загружаю свой слой WMS:

var gwctest = new OpenLayers.Layer.WMS(
    "gwctest",
    "http://localhost:1979/geoserver/wms",
    {
    'layers': 'Index2000:index_vect_s100',
    'format': 'image/png',
    'srs': 'EPSG:3857', 
    'units': 'm',
    'transparent': true
    },
    {'opacity': 0.8, 'isBaseLayer': false, 'visibility': false}

);

Кажется, все в порядке.

альтернативный текст

Однако, когда я пытаюсь добавить слой WMS к моей карте, используя GeoWebCache, заменяя

"http://localhost:1979/geoserver/wms"

с:

"http://localhost:1979/geoserver/gwc/service/wms"

Мои данные внезапно перемещаются из правильной позиции:

альтернативный текст

Любые идеи о том, что может быть причиной?

EDIT: некоторая дополнительная информация о списке рассылки GWC пост .

Радек
источник
1
Это похоже на проблему смещения датума. Вам может потребоваться изменить параметры проекции to_wgs, если ваш wms перепроектируется. trac.osgeo.org/proj/wiki/…
география
@geographika: Почему тогда тот же слой отображается правильно без режима GWC?
Радек
1
Он использует другой файл конфигурации для проекций? См. Geoserver.org/display/GEOSDOC/5.+GWC+-+GeoWebCache
география
@geographika: Я предполагаю, что это старая версия документации GeoServer. Более новая версия: geoserver.org/display/GEOSDOC/5.+GWC+-+GeoWebCache . Моя страница конфигурации GeoWebCache говорит, что плитки готовы в проекции 3857, и этот проект также используется моей веб-картой.
Радек
Вы когда-нибудь решали свою проблему? У меня похожая проблема с большим сдвигом. Я вижу, что география рассказывает о сообщении с причинами и окончательным решением на форуме GWC, но я не нахожу этого сообщения.
user28386

Ответы:

4

Обновить

См. Ответы на сообщение Радека на форуме GWC, чтобы узнать причину и решение. Теперь я понимаю, почему TileCache выбрал отображение ошибок, таких как «Текущее значение x -1311047.936977, слишком далеко от угла плитки x -1493907.560000» вместо того, чтобы возвращать «самые близкие» плитки в произвольном диапазоне ошибок.


Ваши оригинальные данные в EPSG 3857? Если нет, то это почти наверняка, где-то происходит сдвиг (не).

Попробуйте изменить определение OpenLayers на EPSG: 900913 - может быть, GeoWebCache не распознает новый код веб-меркатора?

По ссылке вы разместили:

Интегрированная версия GeoWebCache автоматически настраивает каждый слой на две наиболее распространенные проекции:

* EPSG:4326 (standard Latitude/Longitude)
* EPSG:900913 (Spherical Mercator, the projection used in Google Maps)

Если вам нужны дополнительные прогнозы, вы можете создать файл конфигурации с именем geowebcache.xml в каталоге кэша, например /var/geoserver_data/gwc/geowebcache.xml

Звучит так, как будто Geoserver и GeoWebCache используют разные проекционные файлы. Возможно, ваш Geoserver имеет параметр to_wgs, а GWC - нет.

Находясь в Windows, запустите Process Monitor - http://technet.microsoft.com/en-us/sysinternals/bb896645, чтобы увидеть, к каким файлам вы действительно обращаетесь.

Также я предполагаю, что изображения не были кэшированы после того, как вы изменили некоторые параметры проекции? Попробуйте выполнить повторное заполнение / удаление, чтобы проверить.

geographika
источник
Спасибо. Да, исходные данные находятся в 3857. Похоже, что GWC распознает этот код: в разделе «Демоверсии GWC» доступны все три проекции: 3857, 4326, 900913. И для целей моей карты я использую 3857. Также попробовал это с 900913 и ошибка остается.
Радек
Если ваши исходные данные находятся в 3857 году без сдвига данных, то я полагаю, что в GWC перепроецирование не происходит, и ваши исходные данные необходимо перепроецировать снова.
география
4

У вас есть правильное начало набора плиток для вашего OpenLayers.Map, как в GeoWebCache. Проверьте, как TileOrigin установлен в демоверсии GeoWebCache слоя, и убедитесь, что у вас есть тот же TileOrigin в конструкторе OpenLayers.Map.

Питер
источник
Спасибо. Я попытался установить его так: "tileOrigin: map.maxExtent.left + ',' + map.maxExtent.bottom", где maxExtent устанавливается в соответствии с демонстрацией GWC слоя. Все еще не правильно.
Радек
Каковы ваши настройки GWC, вам может потребоваться настроить параметры DPI в GWC или OpenLayers
Питер
Я попытался настроить параметры DPI в соответствии с демонстрационным предварительным просмотром слоя в GWC. Не помогло
Радек
3

Такое смещение почти всегда является проблемой проекции. Данные хранятся в EPSG: 3857? Убедитесь, что слой GeoWebCache сконфигурирован для вывода в EPSG: 3857.

Шон
источник
Да, набор данных находится в 3857, и GWC также настроен для этого.
Радек
2

Вы пробовали очистить кеш?

Дэйв Лоутер
источник
Да, я сделал.
Радек