利用python的geopandas實現geojson數據的可視化(含geopandas安裝和問題解決方式)

一、什麼是geojson?

GeoJSON是一種對各種地理數據結構進行編碼的格式,基於Javascript對象表示法的地理空間信息數據交換格式。GeoJSON支持點、線、面、多點、多線、多面和幾何集合等幾何類型。GeoJSON裏的特徵包含一個幾何對象和其他屬性,特徵集合表示一系列特徵。本質上,geojson還是json,是一個字符串數據格式。像下面這樣:

{ "type": "Polygon",
  "coordinates": [
    [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]
    ]
 }

這是一個面,能看出來吧?大家也可以去看看geojson是怎麼描述點、多點、線等幾何類型的。【geojson介紹
相對於shapefile文件,這類數據格式的好處是帶寬佔用小,便於傳輸,非常靈活,所以很受歡迎。
接觸gis的朋友應該對shapefile這類格式不陌生,但是geojson就不是很熟悉了。
如果你纔剛遇到這類數據格式,對它一竅不通,也不必太過於把它當回事!慢慢學習就明白了。
geojson和shapefile都是編碼地理空間數據的一種數據格式,如果你大致能理解.json、.shp、.tiff、.png、.jpg等格式,其實沒什麼不一樣,它們只不過都用於編碼數據而已,簡而言之就是規範標準。

二、什麼是geopandas?

如果大家知道pandas,就不難理解geopandas了。它的作用是簡化python的地理空間數據處理,擴展pandas允許對幾何類型進行空間操作。geopandas結合了pandas和Shapely的能力,提供了pandas的地理空間操作和多個幾何圖形的高級界面。先有一個大致理解,稍後我會給出具體範例。

三、安裝geopandas

這一步是這篇文章的重點,因爲python太過於小巧和簡單易學,它的難點就在於”第三方庫的安裝“。到底有多難,裝過就知道了。接下來我會介紹一下,我遇到的一些坑。
首先,geopandas是十幾個庫文件的集合,在安裝之前,還需要安裝4個必要的依賴庫。分別是:shapely、pyproj、gdal、fiona,按順序安裝。直接pip很難成功,選擇離線安裝。
找到這4個庫的下載地址:地址

看下面這張圖,你得知道你的python的版本號(python2.7、python3.5、python3.7等)和系統架構(32位或64位)才能選擇。切記嚴格按照python的版本號和系統架構選擇,不然很難安裝成功。
在這裏插入圖片描述
示例:在這裏插入圖片描述
然後打開cmd,輸入:

pip install C:\Users\Administrator\Downloads\Shapely-1.6.4.post2-cp35-cp35m-win_amd64.whl
pip install C:\Users\Administrator\Downloads\pyproj-2.4.2.post1-cp35-cp35m-win_amd64.whl
pip install C:\Users\Administrator\Downloads\GDAL-3.0.4-cp35-cp35m-win_amd64.whl
pip install C:\Users\Administrator\Downloads\Fiona-1.8.13-cp35-cp35m-win_amd64.whl
#這個地址不是輸入的,直接把文件拖到這個位置就出來了

接下來,安裝geopandas,打開cmd,輸入:

pip install geopandas

問題1:

國外網站下載速度非常慢,只有幾k或十幾k的速度,下載中斷後還需要重新下載,這個問題可以藉助百度網盤解決,具體操作就是:把下載地址複製下來,先離線到百度網盤,再從百度網盤下載,無會員可達到100多k的速度哦!如下圖所示:在這裏插入圖片描述

問題2

前面提過這4個庫的安裝順序爲:shapely、pyproj、gdal、fiona,因爲fiona依賴gdal,但是在安裝gdal時,還是要下載很多依賴庫,以至於國外網站下載網速太慢,直接出現Read timed out的情況。這時你可以用設置timeout的方式防止中斷。

pip --default-timeout=100 install C:\Users\Administrator\Downloads\GDAL-3.0.4-cp35-cp35m-win_amd64.whl

問題3

在4個庫安裝完成之後,就需要安裝geopandas了,同樣會遇到問題2的情況,這時設置timeout也不管用了。我們可以引用國內源,例如:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple geopandas

很顯然,問題2也可以用這種方式解決。

問題4

這個問題應該不是很普遍,具體返回爲:“Command “python setup.py egg_info” failed with error code 1 in C:\Users\ADMINI~1”。解決方式爲:

python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade --force pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple setuptools==33.1.1
#這裏之所以都用到了清華鏡像源,是因爲這樣做很有效率。

基本上,現在你應該能成功安裝geopandas了,如果還是不能成功安裝,請後臺留言。

四、利用geopandas實現geojson數據的可視化

geopandas的地理空間數據的可視化可以畫出很漂亮的地圖或其他圖件,用於展示或分析。

其實很簡單,我們可以去這個地址下一個geojson數據,然後用python實現可視化,具體代碼如下:

# -*- coding: utf-8 -*-
import geopandas
from shapely import geometry
import matplotlib.pyplot as plt

#保存在本地的geoJson數據
data = geopandas.read_file('E:\\python\\全國.json')#修改一下路徑

cq = geopandas.GeoSeries([geometry.Point([116.0, 39.0])],crs='EPSG:4326')#默認wgs1984座標系
#生成圖表
fig, ax = plt.subplots()
data.to_crs(crs='EPSG:4524').plot(ax=ax, color="#4C92C3",alpha=0.8)
cq.to_crs(crs='EPSG:4524').plot(ax=ax, color='orange', markersize=100, marker='*')
plt.xticks(rotation=20)
plt.savefig("E:\\python\\圖片數據\\MapDisplayAndprojection.png")#修改一下路徑
plt.show()

如下圖:在這裏插入圖片描述

五、後記

本文主要想跟大家交流一下geopandas的安裝,至於geojson數據可視化的內容會比較少。這個可視化的內容也只是geopandas的一個小的應用,我們可以用這個工具畫出很多很漂亮的地圖,用於展示或者其它用途。接下來會有很多應用實例與大家交流和分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章