Vektorové dlaždice

Vektorové dlaždice jdou v Geoserveru generovat jenom z vektorových vrstev. Generovat vektorové dlaždice můžeme bez instalace pluginu ve formátu application/json;type=utfgrid .

../_images/vector_geo.png

Pro další možnosti potřebujeme nainstalovat extenzi Vector Tiles. Najdeme ji na stránkách Geoserveru. Soubory z archivu uložíme do webapps/geoserver/WEB-INF/lib

../_images/vector_ext.png

Instalací extenzi nám přibyla možnost generovat vektorové dlaždice ve formátech application/json;type=geojson, application/json;type=topojson nebo application/vnd.mapbox-vector-tile. Rozdíli mezi formátmi GeoJSON a TopoJSON jsou popsány v materiálech ke školení Úvod do GIS https://training.gismentors.eu/open-source-gis/formaty/vektor.html Formát application/vnd.mapbox-vector-tile generuje binární soubor s příponou pbf. Tento formát je tvůrcemi Geoserveru doporučovaný. Data ve vektorových dlaždicích jsou generalizované, čím nižší úroveň přiblížení, tým je generalizace větší. Na rozdíl od rastrových dlaždic, nemají vektorové dlaždice v sebe informaci o stylu.

<!DOCTYPE html -->
<html>
<head>
  <title>Vector tiles</title>
  <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>
// definování stylu
  var style_simple = new ol.style.Style({
    fill: new ol.style.Fill({
      color: '#ADD8E6'
    }),
    stroke: new ol.style.Stroke({
      color: '#880000',
      width: 1
    })
  });
  function simpleStyle(feature) {
    return style_simple;
  }
//definice vrstvy
  var layer = 'sf:restricted';
//definice čísla EPSG
  var projection_epsg_no = '900913';
  var map = new ol.Map({
    target: 'map',
    view: new ol.View({
//souřadnice středového bodu
      center: [-11559399.021158619, 5534556.797017269],
//počáteční zoom
      zoom: 12
    }),
    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>

Kód vložíme do textového souboru a pojmenujeme ho index.html. Připravený index.html a i knižnice pro javascript si můžete stáhnou zde: vectortiles.zip. Stažený archiv rozbalíme do složky /geoserver-2.16.2/data_dir/www. Táto aplikace nám umožní si zobrazit vektorové dlaždice ve formátu application/vnd.mapbox-vector-tile.