Слой WMS, предоставляемый сервером карт, неправильно отображается в ol3

Я создал карту с использованием OpenLayers3, которая содержит два слоя. Первый слой - это слой открытой карты улиц, а второй - слой WMS, предоставляемый сервером карт.

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

введите здесь описание изображения

Также, когда я масштабирую или перемещаю карту, оба слоя работают правильно, но после задержки в несколько секунд второй слой (слой wms с картографического сервера) снова переключается обратно в исходное положение (положение, которое показано на прикрепленном выше снимке).

Это код, который я использую для использования службы wms.

var layer = new ol.layer.Image({
    source: new ol.source.ImageWMS({
          url: 'http://localhost:19090/rasters/world/wms',
          params: {
               'LAYERS': 'world',
               'mode': 'map',
          },
          serverType: 'mapserver'
     })
});

Это мой файл карты.

  MAP
  NAME   "world"
  CONFIG "MS_ERRORFILE" "/home/neelesh/Projects/georbis/data/logs/mapservice_errors.log"
  CONFIG "PROJ_LIB" "/home/neelesh/Projects/georbis/deps/proj.4-master/share/proj"
  CONFIG "ON_MISSING_DATA" "LOG"
  DEBUG 5
  EXTENT -180.000 -90.000 180.000 90.000
  SHAPEPATH "/home/neelesh/Projects/georbis/data/service_data/data/wms"
  IMAGECOLOR 255 255 255
  SIZE 1350 675

  WEB
    METADATA
      "wms_title" "Georbis WMS Server"
      "wms_author" "VizExperts"
      "wms_onlineresource" "http://192.168.1.36:19090/rasters/world/wms?"
      "wms_enable_request" "*"
      "wms_srs" "EPSG:4326 EPSG:3857"
      "wms_feature_info_mime_type" "text/html"
      "wms_format" "image/jpg"
    END
  END

  PROJECTION
    "init=epsg:4326"
  END

  LAYER
    NAME world
    TYPE RASTER
    DATA "world.tif"
    METADATA
      "wms_title" "BlueWorld Map"
      "wms_srs" "epsg:4326"
      "wms_server_version" "1.1.1"
    END
    PROJECTION
      "init=epsg:4326"
    END
  END
END

Я попробовал метод ol.view.fit, чтобы подогнать слой к его контейнеру, но значение layer.getExtent () для слоя не определено.

Пожалуйста, помогите мне узнать, что не так. есть ли проблема с форматом запроса wms или файлом карты?


person Neelesh    schedule 05.11.2015    source источник


Ответы (1)


Это потому, что вы настроили свой MapServer для поддержки только EPSG 4326. Он должен поддерживать EPSG 3857 (плитки OSM). Вам следует изменить "wms_srs" "epsg:4326" на "wms_srs" "EPSG:4326 EPSG:3857" (см. официальный WMS серверную документацию). Вы можете подтвердить, что он работает, выполнив запрос GetCapabilities.

Когда вы используете GeoServer, по умолчанию он поддерживает все проекции для WMS (поэтому он работает, потому что ваши изображения WMS запрашиваются с EPSG 3857)

Вы должны знать, что теперь вы также можете выполнять перепроецирование растра на клиенте в OpenLayers. Для некоторых демонстраций перейдите на http://openlayers.org/en/v3.11.0/examples/ и выполните поиск по ключевому слову "перепроецирование"

person Thomas Gratier    schedule 17.11.2015
comment
да, была проблема с wms_srs, но после исправления она также не работает. все еще сталкивается с той же проблемой. - person Neelesh; 18.11.2015
comment
Вы выполняли отладку на панели «Сеть», чтобы убедиться, что вызовы изображений действительны? Это нужно для того, чтобы увидеть, есть ли какие-либо вызовы WMS и действительно ли возвращаемый контент является изображениями. - person Thomas Gratier; 18.11.2015