Не получается показать шейп-файл из GeoServer

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Tereha
Завсегдатай
Сообщения: 399
Зарегистрирован: 15 май 2010, 06:13
Репутация: 4

Не получается показать шейп-файл из GeoServer

Сообщение Tereha » 09 окт 2020, 10:55

Уважаемые Гуру!
Поставил GeoServer 2.18 . Тестовый шейп файл ne_110m_admin_0_countries через openLayer увидеть удалось.
Свой шейп с дорогами Республики Карелия - увидеть не могу. Т.е. в браузере вижу что часть тайлов приходит - часть - нет (ошибка 404). Я предполагаю что это может быть связано с правильной конфигурацией границ "Родного охвата" и широты/долготы ограничивающего поля (хотя это только предположение конечно). Системы координат обоих шейпов - ESPG 4326
У тестовой карты координаты и родного охвата и ограничивающего поля:
-180 -90 180,00000000000006 83,64513000000001
У шейпа дорог координаты родного охвата :
29,35309770029869 60,81798660010156 37,88390399956995 66,58306304282524
В чем может быть дело?
PS В Qgis дороги отображаются при подключении через GeoServer

Tereha
Завсегдатай
Сообщения: 399
Зарегистрирован: 15 май 2010, 06:13
Репутация: 4

Re: Не получается показать шейп-файл из GeoServer

Сообщение Tereha » 09 окт 2020, 20:38

Текст в openLayers:

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

<!DOCTYPE html -->
<html>
<head>
  <title>Vector tiles</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF8">
  <script src="ol.js"></script>
  <link rel="stylesheet" href="ol.css">
  <style>
    html, body {
      font-family: sans-serif;
      width: 100%;
    }
    .map {
      height: 500px;
      width: 100%;
    }
  </style>
</head>
<body>
  <h3>Mapbox Protobuf - vector tiles</h3>
  <div id="map" class="map"></div>
  <script>

  var style_simple = new ol.style.Style({
	stroke : new ol.style.Stroke({color : "red"})
  });

  function simpleStyle(feature) {
    return style_simple;
  }

  var layer = 'mapbox:roads4326';
  var projection_epsg_no = '4326';
  var map = new ol.Map({
    target: 'map',
    view: new ol.View({
      center: [63, 35],
      zoom: 10
    }),
    layers: [new ol.layer.VectorTile({
      style:simpleStyle,
      source: new ol.source.VectorTile({
        tilePixelRatio: 1, // oversampling when > 1
        tileGrid: ol.tilegrid.createXYZ({maxZoom: 19}),
        format: new ol.format.MVT(),
        url: '/geoserver/gwc/service/tms/1.0.0/' + layer +
            '@EPSG%3A'+projection_epsg_no+'@pbf/{z}/{x}/{-y}.pbf'
      })
    })]
  });
  </script>
</body>
</html>
Текст запроса в preview
"http://localhost:8080/geoserver/mapbox/ ... openlayers"

Рабочий вариант с тестовым примером отличается только названием слоя , координатами центра и zoom:

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

  var layer = 'opengeo:countries';

    view: new ol.View({
      center: [0, 0],
      zoom: 2
    }),
Вложения
log.png
log.png (43.77 КБ) 282 просмотра
Охваты.png
Охваты.png (13.13 КБ) 282 просмотра
previewInOpenLayers.png
previewInOpenLayers.png (30.18 КБ) 282 просмотра

Tereha
Завсегдатай
Сообщения: 399
Зарегистрирован: 15 май 2010, 06:13
Репутация: 4

Re: Не получается показать шейп-файл из GeoServer

Сообщение Tereha » 14 окт 2020, 10:09

Удалось отобразить с помощью следующего кода js (используя wms service):

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

window.mymap.addSource("wms-test-source", {
                "type": 'raster',

                "tiles": [
                  "http://localhost:8080/geoserver/wms?bbox={bbox-epsg-3857}&format=image/png&service=WMS&&version=1.1.1&request=GetMap&srs=EPSG:900913&transparent=true&width=256&height=256&layers=mapbox:roads4326"
                ],
                'tileSize': 256
            });

            window.mymap.addLayer(
                {
                    "id": 'wms-test-layer',
                    "type": 'raster',
                    "source": 'wms-test-source',
                    "paint": {
                    }
                }                
            );
Попробовал с помощью wmts - service :

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

            window.mymap.addSource(
                "mvt-test-source", {
                 "type": "vector",
                "tiles": [
                    "http://localhost:8080/geoserver/gwc/service/wmts?SERVICE=WMTS&&VERSION=1.0.0&REQUEST=GetTile&layer=mapbox:roads4326&TILEMATRIX=EPSG:4326:{z}&TILEMATRIXSET=EPSG:4326&FORMAT=application/vnd.mapbox-vector-tile&TILECOL={x}&TILEROW={y}"
                    ],
                "minZoom": 0,
                "maxZoom": 14
            });

            window.mymap.addLayer(
                {
                    'id': 'my_mvt_layer',
                    'type': 'line',
                    'source': 'mvt-test-source',
                    'source-layer': 'mapbox:roads4326',
                    "visibility": "visible",
                    'paint': {
                        'line-color': 'Red',
                        'line-width': 7
                    }
                }
            );
Ошибок в браузере нет, но слой не отображается.

Ответить

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

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

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