對於GIS的大數據量實時數據分析和渲染的需求,ArcGIS Server和Geoserver、普通空間數據庫每每難以知足,對此我一直感受很沮喪。這時就要尋求大數據的分佈式框架幫助。(ArcGIS的ga也能夠,可是太貴)
html
我瞭解到有Geomesa,Geotrellis,GeoWave三大框架。GeoWave和Geomesa均可以支持Geoserver,可是Geotrellis能夠支持這兩個框架。Geotrellis是一個高性能的GIS數據應用,能夠處理柵格和矢量數據,提供實時的rest服務,可以渲染數據並提供切片服務。本文要使用的是它的py版geopyspark。
python
首先在linux(Centos 7)環境中安裝docker,參考菜鳥教程(安裝教程)。而後執行下面的命令,通過漫長的等待(裝了一天,終於在早上裝好了),完成就會啓動項目。linux
sudo docker run -it --rm --name geopyspark -p 8000:8000 quay.io/geodocker/jupyter-geopyspark:b log
瀏覽器訪問localhost:8000/連接,輸入帳戶名密碼hadoop.jupyter中有一個自帶例子,修改原來的下載數據代碼,註釋例子中最後一個格子的代碼,程序會自動下載數據並讀取數據計算分析生成切片展現到前臺界面(原數據由於牆的問題經過代碼下載失敗,因此我事先下好數據放到github上面)git
!curl -o /tmp/bars.geojson https://raw.githubusercontent.com/tpolong/geodocker/master/bars.geojson !curl -o /tmp/cafes.geojson https://raw.githubusercontent.com/tpolong/geodocker/master/cafes.geojson !curl -o /tmp/transit.geojson https://raw.githubusercontent.com/tpolong/geodocker/master/transit.geojson !curl -o /tmp/roads.geojson https://raw.githubusercontent.com/tpolong/geodocker/master/roads.geojson
本例中主要實現的是距離成本計算,根據酒吧、咖啡館、中轉站的不一樣權重結合道路計算距離成本,有藍色向黃色轉變表示成本由高到低的變化。
github
Geotrellis官網
geospark的github地址
how-to-run-geopyspark-in-a-geonotebook-with-docker
introducing-geopyspark-a-python-binding-of-geotrellisdocker