geojson地图_Geojson地图pandas数据帧
- geojson數據結構
- geojson作圖方法
- geojson與pandas
數據結構
GeoJSON是用于表示地理對象的格式。 它與常規JSON不同,因為它支持幾何類型,例如:Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon和GeometryCollection。
使用GeoJSON,使可視化瞬間變得更加容易,您將在后面的部分中看到。 這主要是因為GeoJSON允許我們將集合的幾何數據類型存儲在一個中央結構中。
GeoPandas是一個Python模塊,用于通過擴展Python模塊Pandas使用的數據類型來簡化在python中的地理空間數據,以允許對幾何類型進行空間操作。 如果你不熟悉Pandas,請查看其教程。
GeoJSON 是用于描述地理空間信息的數據格式。GeoJSON 不是一種新的格式,其語法規范是符合 JSON 格式的,只不過對其名稱進行了規范,專門用于表示地理信息。
GeoJSON 的最外層是一個單獨的對象(object)。這個對象可表示:
幾何體(Geometry)。
特征(Feature)。
特征集合(FeatureCollection)。
最外層的 GeoJSON 里可能包含有很多子對象,每一個 GeoJSON 對象都有一個 type 屬性,表示對象的類型,type 的值必須是下面之一。
MultiPoint:多點。
LineString:線。
MultiLineString:多線。
Polygon:面。
MultiPolygon:多面。
GeometryCollection:幾何體集合。
Feature:特征。
FeatureCollection:特征集合。
通常,GeoPandas縮寫為gpd,用于將GeoJSON數據讀入DataFrame。 下面你可以看到我們打印出了五行GeoJSON DataFrame:
{"type": "FeatureCollection","features": [/*表示地圖上一個點*/{"type": "Feature","properties": {},"geometry": {"type": "Point","coordinates": [117.24609374999999,36.65079252503471]}},/*表示地圖上一條線段*/{"type": "Feature","properties": {},"geometry": {"type": "LineString","coordinates": [[117.24599450826645,36.65120999361623],[117.24690914154054,36.65124657580678],[117.24694132804869,36.65100341150826],[117.24670529365538,36.650695689215624],[117.24620908498764,36.65059024562966]]}},/*表示地圖上一個多邊形(三角形,正方形,長方形....等等)*/{"type": "Feature","properties": {},"geometry": {"type": "Polygon","coordinates": [[[117.15253829956055,36.67089730689858],[117.14584350585938,36.658917692387114],[117.16318130493163,36.64721167063527],[117.17554092407227,36.65313376288551],[117.18034744262694,36.66773046368491],[117.17348098754883,36.677643625245274],[117.15322494506836,36.692786266889456],[117.13193893432617,36.68397636535661],[117.15047836303711,36.68012171607383],[117.15253829956055,36.67089730689858]]]}}]}
由以上格式可以發現,每一個對象都有一個成員變量 coordinates。如果 type 的值為 Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon 之一,則該對象必須有變量 coordinates。
如果 type 的值為 Feature(特征),那么此特征對象必須包含有變量 geometry,表示幾何體,geometry 的值必須是幾何體對象。此特征對象還包含有一個 properties,表示特性,properties 的值可以是任意 JSON 對象或 null。例如:
{ "type": "Feature", "properties": { "name": "北京" }, "geometry": { "type": "Point", "coordinates": [ 116.3671875, 39.977120098439634] }如果 type 的值為 GeometryCollection(幾何體集合),那么該對象必須有變量 geometries,其值是一個數組,數組的每一項都是一個 GeoJSON 的幾何對象。如果 type 的值為 FeatureCollection(特征集合),則該對象必須有一個名稱為 features 的成員。features 的值是一個數組,數組的每一項都是一個特征對象。
Geopandas操作Geojson
!pip3 install geopandas!pip3 install geojsonio# 定位到.geojson文件 import os print(os.getcwd()) os.chdir("/content/drive/My Drive/Colab Notebooks") os.chdir("/content/drive/My Drive/Colab Notebooks/EBOV/Data") print(os.getcwd())import geopandas as gpd states = gpd.read_file('location_data_v3.geojson') print(states.head()) print(states[0:]) print(states.shape)繪制geojson地圖
方法一: 軟件
方法二:geopandas
關于我們將要使用的庫,GeoPandas允許讀取和處理地理空間數據,而Matplotlib可以繪制數據。GeoPandas依賴于與python-gdal包裝器相同的基本原理,但是它不是讀取地理空間圖像并返回NumPy數組,而是返回Pandas Series和DataFrames,這通過提供對Pandas API函數的訪問使處理這種類型的數據更加容易。
我們首先需要導入geopandas和matplotlib:
pip install pysal==1.13.0import geopandas as gpd import matplotlib.pyplot as plt %matplotlib inline plt.rcParams['figure.figsize'] = (20, 10)# load our two GeoJSON files df_places = gpd.read_file('places.geojson') df_admin = gpd.read_file('admin.geojson')# 對于城市的邊界多邊形,無需任何處理即可直接繪制出來ax = df_admin.plot(color='green')# 請注意,我們保留了由圖返回的變量的副本,因為我們打算在接下來的步驟中用城鎮名稱注釋生成的多邊形。 # 我們將遍歷DataFrame位置中的所有條目,并繪制(ax.annotate(…))“ geometry”列設置的地理位 # 置處的城鎮名稱。為簡單起見,我們將自己限制在人口超過10,000的城鎮標簽上: for idx, row in df_places.iterrows():if row['population'] > 10000:coordinates = row['geometry'].coords.xyx, y = coordinates[0][0], coordinates[1][0]ax.annotate(row['name'], xy=(x, y), xytext=(x, y))# 我們通過在多邊形上繪制城鎮位置(下面用紅色/白色小圓圈表示)。提供給plot()方法的參數值'OrRd' # 是matplotlib 顏色圖的名稱,它基本上是從白色(較低值)到紅色(較高值)的漸變。決定我們繪制點的 # 紅色飽和度的列是填充列。給出最滿意結果的choropleth分類方案是分位數方案。請注意,使用此方案需要 # PySAL(pip install pysal)df_places.plot(ax=ax, column='population', cmap='OrRd')參考:
https://medium.com/@h4k1m0u/plot-a-geojson-map-using-geopandas-be89e7a0b93b?medium.comhttps://medium.com/@maptastik/remote-geojson-to-geodataframe-19c3c1282a64?medium.comGEOJSON標準格式學習?www.jianshu.com總結
以上是生活随笔為你收集整理的geojson地图_Geojson地图pandas数据帧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux .forward,linux
- 下一篇: python dataframe遍历_对