1. 程式人生 > >linux(ubuntu)下的tippecanoe編譯及使用的探索

linux(ubuntu)下的tippecanoe編譯及使用的探索

作為我的第一篇部落格,也是我的寫部落格的探索了偷笑

另外,有使用docker的童鞋可以直接檢視[三、4、]

一、安裝win7 + linux(ubuntu)

       教程在網上搜,別用最新版本,用16.0.4

       注意事項:ultraISO寫映象檔案時什麼都不用動,按預設設定來

                        注意檢視電腦使用U盤引導啟動時的啟動項是lagacy還是uefi模式

二、編譯tippecanoe

1、安裝git

2、git clone https://github.com/mapbox/tippecanoe.git
3、解決fatal error:sqlite3.h錯誤
      sudo apt-get install libsqlit3-dev
4、解決fatal error:zlib.h錯誤
      sudo apt-get install zlib1g-dev
5、cd tippecanoe

      make

      sudo make install

如果安裝中出現了一些問題,請參看下面的“問題和解決方法”部分。

如果沒有問題,到此tippecanoe的安裝就已經完成了,接下來就是tippecanoe的使用了。

三、使用tippecanoe

       在這裡我只寫一下我的見解和用法,詳細可參考https://github.com/mapbox/tippecanoe

       或中文版翻譯https://blog.csdn.net/wan_yanyan528/article/details/70226123 (不完整)

1、剛開始的時候不會用可以使用這條命令:

$ tippecanoe -o out.mbtiles -zg --drop-densest-as-needed in.geojson

       鑑於tippecanoe的文件很長,我個人認為如果不是專門搞這個就不用讀了,就使用這條命令吧,如果有特殊需要再去查也不遲。那麼下面的[3、]中具體的東西也可以不用讀,看一下[2、]就可以了。

2、如何檢視out.mbtiles檔案,我給大家提供三個方法

另外,mbtiles檔案的格式自己去網上查查吧,是基於sqlite資料庫的。

     第一種方法,最簡單直接。大家可以在MapboxStudio中註冊個賬戶,然後new tileset把自己的mbtiles檔案導進去就可以查看了。這種方法可以直接看到影象,但是不是很好觀察檔案特性。

     第二種方法,不太複雜不太好理解但是易於觀察。因為mbtiles格式實質上就是sqlit3的一種資料庫,所以自然可以使用資料庫管理軟體檢視,我使用的是Navicat Premium12。直接建立連線就ok了,然後就可以檢視到tiles的縮放級別以及圖片(雖然是一堆亂碼)了。

     第三種方法,稍微複雜也是看影象的方法。使用的是mapbox自己寫的mbview,它的口號就是"View mbtiles locally",那麼這種方法需要使用node.js來檢視,具體怎麼用看它的文件,反正不難。但是有一點我要提醒大家注意:在呼叫

export MAPBOX_ACCESS_TOKEN='pk.0000.1111' # replace value with your mapbox public access token

時會發生錯誤,我搞了一會沒發現怎麼解決(如果有解決了的同學請告訴我一聲哈,謝謝微笑),索性就在原始檔中直接加上了自己的TOKEN,這樣之後就不需要再呼叫這個語句了,可以直接執行。

3、有關於tippecanoe的Geojson的擴充套件,在這裡稍微一說,也可以再官方文件中看到

    Tippecanoe定義了一個GeoJSON擴充套件,大家可以使用該擴充套件指定要生成的向量圖集中包含單個要素的最小和/或最大縮放級別,另外大家也可以在其中對圖層進行命名。例項程式碼如下:

{
    "type" : "Feature",
    "tippecanoe" : { "maxzoom" : 9, "minzoom" : 4, "layer" : "streets" },
    "properties" : { "FULLNAME" : "N Vasco Rd" },
    "geometry" : {
        "type" : "LineString",
        "coordinates" : [ [ -121.733350, 37.767671 ], [ -121.733600, 37.767483 ], [ -121.733131, 37.766952 ] ]
    }
}

4、有關於使用docker

沒有安裝docker的想要安裝並使用,推薦一個較新的博文教你安裝

https://blog.csdn.net/BingZhongDeHuoYan/article/details/79411479

對於已經安裝了docker,並且想要使用的,執行以下命令:

$ docker build -t tippecanoe:latest .
$ docker run -it --rm \
  -v /tiledata:/data \
  tippecanoe:latest \
  tippecanoe --output=/data/output.mbtiles /data/example.geojson

四、過程中遇到的一些問題和解決方法(附圖)

1、tippecanoe  make命令之後的截圖我也貼出來吧


2、當使用make install命令時發生了意外,具體見下圖


直接執行make install命令會發現許可權出了問題,不能夠建立資料夾。既然使用者的許可權不夠,自然想到了使用root許可權來解決問題,具體如下圖


在這裡使用了sudo -i命令以取得root許可權,但是卻進不去tippecanoe 資料夾。沒辦法只好使用exit命令退出root,試著使用另一種方式解決問題,具體如下圖:


那麼我們在make install前加上了sudo來執行,果然成功了,sudo在其他命令中用了很多次,但是不知道是什麼意思,來到這裡就恍然大悟了,就是給予使用者root許可權的意思。

3、另外我再給大家貼一個簡單的例項

     我在網上找了一段Geojson格式的臺灣的邊界圖,並以此為示例展示一下。

{"type":"Feature","properties":{"id":34,"name":"臺灣","density":640.05},"geometry":{"type":"Polygon","coordinates":  
[[[121.63599694100014,25.222805080000114],[121.71851647200015,25.15200429900011],[121.89283287900003,25.113674221000167],[121.9057723320002,24.95010000200014],[121.82349694100014,24.854925848000164],[121.81495201900032,24.644354559000192],[121.85596764400032,24.550523179000123],[121.78003991000003,24.43268463700008],[121.77271569100003,24.30923086100006],[121.66285241000014,24.193101304000038],[121.60743248800014,24.07684967700004],[121.62891686300009,24.026190497000158],[121.52149498800031,23.658677476000094],[121.46216881600026,23.34300364800015],[121.4088647800001,23.254584052000126],[121.40007571700005,23.145493882000153],[121.29957116000003,22.95917389500019],[121.19027754000001,22.843166408000144],[121.14144941500001,22.741766669000185],[121.02100670700008,22.647894598000136],[120.9482528000002,22.52680084800005],[120.87501061300014,22.289252020000134],[120.87924238400001,22.055812893000052],[120.84156334700009,21.925482489000103],[120.70435631600014,21.98139069200016],[120.69695071700016,22.113226630000156],[120.62126712300017,22.29507070500017],[120.51197350400025,22.42475006700016],[120.33122806100027,22.51972077000019],[120.17554772200015,22.88410065300016],[120.17025800900024,23.013373114000046],[120.05941816500012,23.151027736000174],[120.1301491600002,23.360960244000154],[120.12426153300032,23.520020550000083],[120.18921959700026,23.774807033000116],[120.29224694100003,23.911932684000192],[120.34009850400014,24.02179596600007],[120.4931746750002,24.23065827000005],[120.57081139400032,24.404933986000202],[120.64893639400009,24.48387278900023],[120.70215905000032,24.60700104400013],[120.84750410200013,24.710842190000108],[120.90235436300031,24.836818752000056],[121.05933678500003,25.050238348000164],[121.37875410200007,25.157945054000038],[121.43628991000026,25.24144114800012],[121.53972415500004,25.28742096600007],[121.63599694100014,25.222805080000114]]]}}]} 

大家可以直接把這些複製下來儲存在檔案中,我儲存的檔名為taiwan.json,下面我們來看一下轉化過程


這條語句是最簡單的使用方式,我大概給大家講一下

tippecanoe -o [輸出檔案path+name] -zg --drop-densest-as-needed [輸入檔案path+name]

-o 也可以用 -output來代替

-z 指的是瓦片的最高縮放級別(預設值是14),可以自定義為-z12等等

-zg是-z的一種特殊形式,指的是由程式根據要素分佈自動估算最大級別

--drop-densest-as-needed是指由程式根據縮放級別自動判斷來進行捨棄一些元素(抽稀)

歡迎大家積極討論、指正補充!