Vector Tile
Web tabanlı online harita uygulamalarında sıkça kullanılan bir yöntemdir tile cache (önbelleklenmiş görüntüler) üretimi. Klasik yöntemlerde, her defasında veritabanına giderek, kullanıcının o an ekrandan baktığı alanın içerisinde giren mekansal verilerin alınması, ilgili semboloji ve etiketleme kurallarına göre render edilmesi, sonuç olarak png ya da jpeg formatlarında hazırlanan görsellerin kullanıcının browser'ına gönderilmesi çok uzun ve maliyetli bir işlem olduğu için, sanki bir kullanıcı tüm veriye bir kez bakmak istemiş gibi, önceden sonuç tile'larının hazırlanarak bir web sunucusunda depolanması ve istek geldiği anda veritabanına hiç gitmeden direkt olarak küçük ölçekli ilgili görsellerin kullancıya gönderilmesi oldukça mantıklı bir yöntemdi.
Ancak tabiki günümüz teknolojisi ve gelişen yazılımlar gibi klasik gelişmesi gereken şeylerle birlikte artık karşımıza "Vector Tile" kavramı çıkıyor. Nedir bu vector tile, çok mu yeni hiç gördük mü acaba demeyin, zaten uzun süredir google, apple, mapzen, mapbox gibi firmalarca zaten kullanılıyor, bizlerin de gülük hayatta bu uygulamalar / servisler aracılığı ile sık sık karşımıza çıkıyor.
Vector tile'ın en basitçe anlatmak gerekirse şunu düşünebiliriz; önceden raster temelli küçük görseller hazırlamadan, onların yerine içlerinde geometri bilgileri içeren küçük text dosyaları hazırlamak diyebilriz. Yine eski klasik raster tile yönteminde olduğu gibi ölçek bazında kareler ile ifade edilen alanlar içn hazırlanan bu dosyaların farkı, render işlemini kullanıcı kendi browser'ı üzerinde GPU kullanarak gerçekleştirdiği için, çok daha hızlı ve performanslı bir kullanım sunmuş oluyor.
Aynı zamanda cache üretimi ve/veya güncellemesini de çok daha kolay ve pratik bir hale getirmiş oluyor. Vector Tile'ın bizlere getireceği yeni kartografik gösterim imkanları da çıkacağı için sektörde temel olacak bir kullanım olarak çok hızlı bir şekilde gelişmeye devam ediyor. Sizde biraz Vector Tile konusunu incelemek isterseniz, mapbox firması github üzerinden güzel bir kaynak hazırlamış, aşağıdan inceleyebilirsiniz.
Parsers & Generators
- vector-tile-js – Parses vector tiles with JavaScript.
- mapnik-vector-tile – C++ vector tile read/write implementation on top of Mapnik.
- vector-tile-py – Python vector tile decoder implementation
- node-mapnik – Node.js API for vector tiles which depends on
mapnik-vector-tile
- mapbox-vector-tile-cs – Parses vector tiles with C#.
- tilelive-bridge – Implements Tilelive API for creating vector tiles from traditional Mapnik datasources in Node.js.
- tilelive-vector – Implements Tilelive API for reading vector tiles and rendering to image tiles in Node.js.
- mapbox-vector-tile is a Python package for vector tile encoding maintained by Mapzen. (It is used in Mapzen's vector tile service).
- geojson-vt – Slice GeoJSON into vector tiles on the fly in the browser.
- java-vector-tile – A java encoder and decoder for vector tiles.
Clients
- Mapbox GL Native – C++/OpenGL vector maps library.
- Mapbox GL JS – JavaScript/WebGL vector maps library.
- OpenLayers 3 – JavaScript vector & raster library.
- WhirlyGlobe/Maply – Objective C code that is able to read and render vector tiles(and style with mapnik xml) on iOS devices.
- Leaflet.MapboxVectorTile is able to read PBF MapboxVectorTiles from a REST endpoint and render them as a TileLayer on a Leaflet Map. Use this option if you want to utilize vector tiles on a standard Leaflet web map without needing WebGL.
- Nutiteq Maps SDK 3.x – C++ maps library for iOS, Android, Windows Phone and Xamarin with bindings for Java, ObjectiveC and C#
- Mapzen Tangram – JavaScript library for rendering 2D & 3D maps live in a web browser with WebGL, supports MVT, GeoJSON, TopoJSON
- Mapzen Tangram-es – C++ library for rendering 2D and 3D maps using OpenGL ES 2 with custom styling and interactions
- mapbox-gl-leaflet – Create Mapbox GL layers in Leaflet
- react-native-mapbox-gl – Render Mapbox GL maps from React applications
Applications / Command line tools
- Mapbox Studio – Desktop design studio for both creating vector tiles from raw geodata and for rendering them on-the-fly into image tiles. Internally uses
tilelive.js
modules to handle vector tiles (seetilelive-bridge
andtilelive-vector
) - kosmtik – Design maps with CartoCSS and Mapnik.
CLI Utilities
- Datamaps C application that can be used to create vector tiles and store them in an mbtiles. See the
render-vector
command. - tilemaker – Command line tool to produce vector tiles directly from an .osm.pbf extract without an intermediate database.
- vector-tiles-producer Command line tool in C++ to creates vector tiles for a given area at chosen zoom levels using a Mapnik XML.
- tippecanoe – Build vector tilesets from large collections of GeoJSON features.
- vt-geojson – decodes vector tiles to GeoJSON FeatureCollections
Mapbox GL JS Plugins
- gl-draw – Adds support for drawing and editing features on Mapbox GL JS maps
Servers
- tessera – Supports serving and rendering vector tiles. Uses the same core libraries as Mapbox Studio.
- tilestrata – with tilestrata-vt, can generate vector tiles
- SpatialServer (PGRestAPI) – A multi-purpose GeoSpatial NodeJS web server created at SpatialDev that not only serves MBTiles stuffed with vector tiles, it can also cut vector tiles on the fly from a PostGIS database.
- Utilery Server to generate vector tiles from PostGIS queries. Python based
- Tilestache Mapzen fork. It supports mvt output tiles.
Low-level utilities
- mapbox-gl-function – Mapbox GL style function evaluator
- mapbox-gl-filter-simplify – Simplifies and complexifies filters in Mapbox GL Styles
- vt-pbf serialize JavaScript objects representing vector tiles into binary Protocol Buffer encodings of vector tiles
Kaynak: