華文網

使用Python,GeoJSON和GeoPandas開始地理空間分析

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。

作為一個本地的紐約客,

我每一次去任何紐約以外的地方,如果沒有穀歌地圖,都會一塌糊塗。 我們將穀歌地圖等產品視為理所當然,因為它們非常方便。 Google或Apple Maps等產品建立在地理空間技術基礎之上。 在更大的位置服務的生態系統中,這些技術的核心是位置,交互和角色。

這個領域被稱為地理空間分析。 地理空間分析對具有地理或幾何分量的資料應用統計分析。 在本教程中,我們將使用Python來學習獲取地理空間資料,

處理它以及視覺化的基礎知識。 更具體地說,我們將做一些美國地理的互動式視覺化!

環境設置

本指南是用Python 3.6編寫的。 如果還沒有,請下載Python和Pip。 接下來,您將需要安裝我們將在本教程中使用的多個套裝軟體。 您可以通過在作業系統上打開終端或命令提示符來執行此操作:

由於我們將以對話模式使用Python,所以使用Jupyter Notebook是充分利用本教程的最佳方式。 按照本安裝指南,

一旦您的Jupyter Notebook程式安裝成功並正常運行,請繼續下載此文中的所有資料。 確保您的資料與Jupyter Notebook在相同的目錄,然後我們就可以開始了!

Jupyter快速注意事項

對於那些不熟悉Jupyter Notebook的人,我簡要回顧一下這個教程中特別有用的功能。

在下面的圖片中,您將看到標有1-3的三個按鈕,這對您來說很重要:保存按鈕(1),添加儲存格按鈕(2)和運行儲存格按鈕(3)。

第一個按鈕(1),用來保存工作。隨時選擇何時保存工作。

接下來,我們有“添加儲存格”按鈕(2)。儲存格是可以一起運行的代碼塊。這些是jupyter Notebook的構建塊,因為它提供了增量運行代碼的選項,而不必一次運行所有代碼。在本教程中,您將看到代碼行被阻止。每一行代碼應該對應一個儲存格。

最後還有“運行儲存格”按鈕(3)。 Jupyter Notebook不會自動為您運行代碼;你必須通過點擊這個按鈕來告訴它。與添加按鈕一樣,一旦將本教程中的每個代碼塊寫入儲存格,

您應該運行它來查看輸出(如果有)。請注意,如果預期有任何輸出,請對比本教程中給出的結果,以確定結果是否正確。請務必隨時運行代碼,因為本教程中的許多代碼塊依賴於前面儲存格的運行結果。

介紹

資料通常以幾種基底資料型別的形式出現:字串,浮點數,整數和布林值。 然而,地理空間資料使用一組不同的資料類型進行分析。 使用Shapely模組,我們將審查這些資料類型的不同之處。

Shapely模組有一個稱為幾何的類,它包含不同的幾何物件。 使用此模組,我們能導入所需的資料類型:

地理空間分析中最簡單的資料類型是Point資料類型。 Points是表示二維空間中單個位置的物件,或簡單地放置XY座標。 在Python中,我們使用輸入x和y作為參數的點類來創建點對象:

請注意,當我們列印p1時,輸出為POINT(0 0)。 這表明返回的物件不是我們將在Python中看到的內置資料類型。 我們可以通過詢問Python來解釋這個點是否等價於元組(0,0):

上述代碼由於其類型而返回False。 如果我們列印p1的類型,我們得到一個shapely的Point物件:

接下來,我們有一個多邊形,它是一個二維表面,被存儲為定義外部的一系列點。 由於多邊形由多個點組成,因此,Shapely的多邊形對象將以元組清單作為參數。

奇怪的是,Shapely的多邊形物件不會將一個Shapely的點列表作為參數。 如果我們錯誤地輸入了一個Point,我們會收到一條錯誤消息,提醒我們不支援該資料類型。

資料結構

GeoJSON是用於表示地理物件的格式。 它與常規JSON不同,因為它支持幾何類型,例如:Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon和GeometryCollection。

使用GeoJSON,使視覺化瞬間變得更加容易,您將在後面的部分中看到。 這主要是因為GeoJSON允許我們將集合的幾何資料類型存儲在一個中央結構中。

GeoPandas是一個Python模組,用於通過擴展Python模組Pandas使用的資料類型來簡化在python中的地理空間資料,以允許對幾何類型進行空間操作。 如果你不熟悉Pandas,請查看其教程。

通常,GeoPandas縮寫為gpd,用於將GeoJSON資料讀入DataFrame。 下面你可以看到我們列印出了五行GeoJSON DataFrame:

就像常規JSON和Pandas資料幀一樣,GeoJSON和GeoPandas具有允許您輕鬆地將在二者間互相轉換的功能。 使用上面的示例資料集,我們可以使用to_json函數將DataFrame轉換為geojson物件:

能夠輕鬆地將GeoJSON從一種格式轉換為另一種格式,使我們處理資料更加自由,無論是分析,視覺化還是操縱。

接下來,我們將審查geojsonio,一種用於在流覽器上視覺化GeoJSON的工具。 使用上面的狀態資料集,我們可以將美國視為一系列具有geojsonio的display方法的多邊形:

運行此代碼後,流覽器將打開一個連結,顯示如下所示的介面:

在頁面左側,您可以看到GeoJSON顯示並可用于編輯。 如果您放大並選擇幾何物件,您將看到您還可以自訂它:

也許最重要的是,geojsonio有多種共用內容的選項。 可以直接共用連結的選項:

並且為了方便大家,保存為GitHub,GitHub Gist,GeoJSON,CSV和各種其他格式的選項使開發人員在決定如何共用或託管內容時具有很大的靈活性。

在我們使用GeoPandas將GeoJSON傳遞給display函數之前看看這個例子。 如果不需要對地理空間進行操縱,我們可以將該檔視為任何其他操作,並將其內容設置為變數:

該格式仍然是display函數的合適參數,因為JSON在技術上是一個字串。 再次,使用GeoPandas的主要區別在於是否需要進行任何操作。

這個例子只是一個要點,除了閱讀JSON之外,沒有必要做任何事情,所以我們只需直接傳入GeoJSON字串:

再次,在流覽器中打開了一個連結,我們完美視覺化了曼哈頓的一個位置。

這是一個打包介紹

它介紹了使用Python執行geoSpatial分析。大多數這些技術在R中是可互換的,但Python是地理空間分析的最佳語言之一。其模組和工具已經由開發人員開發好了,使得過渡到地理空間分析更加容易。

在本教程中,我們視覺化了美國的地圖,並在曼哈頓繪製了座標資料點。可以通過多種方式擴展這些練習,狀態輪廓對於創建多個視覺化來比較狀態之間的結果至關重要。

從本教程開始,您不僅可以創建這種視覺化,還可以組合我們用於繪製多個狀態中座標的技術。要瞭解有關地理空間分析的更多資訊,請查看以下資源:

GeoJSON

OpenStreetMap

CartoDB

如果你喜歡這裡介紹的,請在Twitter上@lesleyclovesyou以獲得更多的內容,資料科學漫遊,最重要的是,可以點擊超級可愛的小狗進行retweets。

英文原文:https://www.twilio.com/blog/2017/08/geospatial-analysis-python-geojson-geopandas.html
譯者:ljw 我們可以通過詢問Python來解釋這個點是否等價於元組(0,0):

上述代碼由於其類型而返回False。 如果我們列印p1的類型,我們得到一個shapely的Point物件:

接下來,我們有一個多邊形,它是一個二維表面,被存儲為定義外部的一系列點。 由於多邊形由多個點組成,因此,Shapely的多邊形對象將以元組清單作為參數。

奇怪的是,Shapely的多邊形物件不會將一個Shapely的點列表作為參數。 如果我們錯誤地輸入了一個Point,我們會收到一條錯誤消息,提醒我們不支援該資料類型。

資料結構

GeoJSON是用於表示地理物件的格式。 它與常規JSON不同,因為它支持幾何類型,例如:Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon和GeometryCollection。

使用GeoJSON,使視覺化瞬間變得更加容易,您將在後面的部分中看到。 這主要是因為GeoJSON允許我們將集合的幾何資料類型存儲在一個中央結構中。

GeoPandas是一個Python模組,用於通過擴展Python模組Pandas使用的資料類型來簡化在python中的地理空間資料,以允許對幾何類型進行空間操作。 如果你不熟悉Pandas,請查看其教程。

通常,GeoPandas縮寫為gpd,用於將GeoJSON資料讀入DataFrame。 下面你可以看到我們列印出了五行GeoJSON DataFrame:

就像常規JSON和Pandas資料幀一樣,GeoJSON和GeoPandas具有允許您輕鬆地將在二者間互相轉換的功能。 使用上面的示例資料集,我們可以使用to_json函數將DataFrame轉換為geojson物件:

能夠輕鬆地將GeoJSON從一種格式轉換為另一種格式,使我們處理資料更加自由,無論是分析,視覺化還是操縱。

接下來,我們將審查geojsonio,一種用於在流覽器上視覺化GeoJSON的工具。 使用上面的狀態資料集,我們可以將美國視為一系列具有geojsonio的display方法的多邊形:

運行此代碼後,流覽器將打開一個連結,顯示如下所示的介面:

在頁面左側,您可以看到GeoJSON顯示並可用于編輯。 如果您放大並選擇幾何物件,您將看到您還可以自訂它:

也許最重要的是,geojsonio有多種共用內容的選項。 可以直接共用連結的選項:

並且為了方便大家,保存為GitHub,GitHub Gist,GeoJSON,CSV和各種其他格式的選項使開發人員在決定如何共用或託管內容時具有很大的靈活性。

在我們使用GeoPandas將GeoJSON傳遞給display函數之前看看這個例子。 如果不需要對地理空間進行操縱,我們可以將該檔視為任何其他操作,並將其內容設置為變數:

該格式仍然是display函數的合適參數,因為JSON在技術上是一個字串。 再次,使用GeoPandas的主要區別在於是否需要進行任何操作。

這個例子只是一個要點,除了閱讀JSON之外,沒有必要做任何事情,所以我們只需直接傳入GeoJSON字串:

再次,在流覽器中打開了一個連結,我們完美視覺化了曼哈頓的一個位置。

這是一個打包介紹

它介紹了使用Python執行geoSpatial分析。大多數這些技術在R中是可互換的,但Python是地理空間分析的最佳語言之一。其模組和工具已經由開發人員開發好了,使得過渡到地理空間分析更加容易。

在本教程中,我們視覺化了美國的地圖,並在曼哈頓繪製了座標資料點。可以通過多種方式擴展這些練習,狀態輪廓對於創建多個視覺化來比較狀態之間的結果至關重要。

從本教程開始,您不僅可以創建這種視覺化,還可以組合我們用於繪製多個狀態中座標的技術。要瞭解有關地理空間分析的更多資訊,請查看以下資源:

GeoJSON

OpenStreetMap

CartoDB

如果你喜歡這裡介紹的,請在Twitter上@lesleyclovesyou以獲得更多的內容,資料科學漫遊,最重要的是,可以點擊超級可愛的小狗進行retweets。

英文原文:https://www.twilio.com/blog/2017/08/geospatial-analysis-python-geojson-geopandas.html
譯者:ljw