MBTiles 入門與簡單應用


MBTiles 入門與簡單應用##

在開源GIS盛行的時代,如果還拘泥於舊式地圖也就太單調了。

而如今MBTiles是由MAPBOX公司所主持的一個開源標准,勢必要將瓦片地圖標准化,高效化。實質上,是由一個SQLite包裝起256*256大小的瓦片地圖圖片。透過數據庫索引的方式提高瓦片索引的效率。據說,比文件夾模式的瓦片分布要高的多。

MBTiles的標准在Github或者OpenStreetWiki或者Mapbox主頁上可以找到,具體格式不再這里贅述。

由一般數據轉換成瓦片地圖的操作,有兩個方式主要包括:

  1. 數據源是已有柵格地圖數據,由於地圖已經渲染過,圖例不會放大。運用工具建議是Global Mapper,可以完成與矢量配准,數據格式輸出成MBTiles等。

  2. 數據源是未被渲染的矢量地圖數據,此時數據並未渲染過,圖標圖例可以進行不同級別的處理。建議使用mapnik,詳情具體百度谷歌。

得到MBTiles之后,它其實只是一個SQLite數據庫文件,有點在於小,方便遷移,可以存在於移動端。還需要一步就是發布服務,讓外網訪問。這時可以使用PHP或者Node.js等快速開發的方法。這里提及兩個開源項目:PHP-MBTiles-Servernode-MBTiles

這里貼出PHP-MBTiles-Server的源碼,讓大家爽一下,同樣的方法可以運用在別的后端語言上。

// Open the database
$conn = new PDO("sqlite:$db");
// Query the tiles view and echo out the returned image
$sql = "SELECT * FROM tiles WHERE zoom_level = $zoom AND tile_column = $column AND tile_row = $row";
$q = $conn->prepare($sql);
$q->execute();
$q->bindColumn(1, $zoom_level);
$q->bindColumn(2, $tile_column);
$q->bindColumn(3, $tile_row);
$q->bindColumn(4, $tile_data, PDO::PARAM_LOB);
while($q->fetch())
{
    header("Content-Type: image/png");
	echo $tile_data;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM