借助Geemap分析空間地理數(shù)據(jù)
譯文譯者 | 布加迪
審校 | 重樓

地理空間數(shù)據(jù)分析是一個專門領(lǐng)域,用來處理、可視化和分析一種特殊類型的數(shù)據(jù):地理空間數(shù)據(jù)。與正常數(shù)據(jù)相比,地理空間數(shù)據(jù)是帶有附加列:位置信息(比如緯度和經(jīng)度)的表格數(shù)據(jù)。
有兩種主要類型的數(shù)據(jù):矢量數(shù)據(jù)和柵格數(shù)據(jù)。在處理矢量數(shù)據(jù)時,您仍有一個表格數(shù)據(jù)集,而柵格數(shù)據(jù)更類似圖像,比如衛(wèi)星圖像和航空照片。
本文將重點介紹Google Earth Engine提供的柵格數(shù)據(jù),這個云計算平臺提供了龐大的衛(wèi)星圖像數(shù)據(jù)目錄。這類數(shù)據(jù)很容易使用一個名為Geemap的Python軟件包從Jupyter Notebook加以處理。
Google Earth Engine簡介

在開始使用Python庫之前,我們需要了解Google Earth Engine的潛力。這個基于云的平臺由谷歌云平臺提供支持,托管學術(shù)、非營利和商業(yè)目的的公共和免費地理空間數(shù)據(jù)集。

這個平臺的魅力在于,它提供了存儲在Earth Engine服務器上的多PB的柵格數(shù)據(jù)和矢量數(shù)據(jù)目錄。您可以從這個鏈接:https://developers.google.com/earth-engine/datasets/catalog快速瀏覽一下。此外,它還提供了方便分析柵格數(shù)據(jù)集的API。

Geemap是一個Python庫,便于分析和可視化來自Google Earth Engine的大量地理空間數(shù)據(jù)。
在這個軟件包出現(xiàn)之前,我們已經(jīng)可以通過JavaScript和Python API進行計算請求,但Python API功能有限,且缺少文檔。
為了填補這個空白,Geemap應運而生,允許用戶通過幾行代碼訪問Google Earth Engine的資源。Geemap建立在eartenengine-api、ipyleaflet和folium的基礎(chǔ)上。
欲安裝該庫,只需執(zhí)行以下命令:
pip install geemap建議您在Google Colab中試用這個出色的軟件包,以了解其全部潛力。看看這本由教授Qiusheng Wu博士撰寫的介紹Geemap和Google Earth Engine使用入門的圖書。
如何訪問Earth Engine?
首先,我們需要導入將在本教程中用到的兩個Python庫:
import ee
Import geemap除了Geemap外,我們還導入了名為ee的Earth Engine Python客戶端庫。
這個Python庫可以用于Earth Engine上進行身份驗證,但直接使用Geemap庫可以更快:
m = geemap.Map()
m您需要點擊這行代碼返回的URL,這將生成授權(quán)碼。首先選擇云項目,然后點擊“GENERATE TOKEN”按鈕。

之后,它會要求您選擇帳戶。建議您使用Google Colab的同一個帳戶。

然后,點擊“Select All”旁邊的復選框,并按“Continue”按鈕。簡而言之,這一步允許筆記本客戶端訪問Earth Engine帳戶。

在這個操作之后,將生成身份驗證碼,您可以將其粘貼到筆記本單元格中。

一旦輸入了驗證碼,您就可以最終創(chuàng)建并可視化這個交互式地圖了:
m = geemap.Map()
m
眼下,您就可以在ipyleaflet上查看基本地圖了,這個Python軟件包可以在Jupyter Notebook中可視化交互式地圖。
創(chuàng)建交互式地圖
前面,我們已經(jīng)看到了如何使用單單一行代碼對交互式地圖進行身份驗證和可視化?,F(xiàn)在,我們可以通過指定質(zhì)心的緯度和經(jīng)度、縮放級別和高度來定制默認地圖。我選擇了羅馬的坐標作為歐洲地圖上的中心。
m = geemap.Map(center=[41, 12], zoom=6, height=600)
m
如果我們想要改變基礎(chǔ)地圖,有兩種方法。第一種方法是編寫并運行以下代碼行:
m.add_basemap("ROADMAP")
m 
另一種方法是,您可以通過點擊位于右側(cè)的環(huán)扳手圖標手動更改基礎(chǔ)地圖。

此外,我們看到Geemap提供的基礎(chǔ)地圖列表:
basemaps = geemap.basemaps.keys()
for bm in basemaps:
print(bm)輸出如下:
OpenStreetMap
Esri.WorldStreetMap
Esri.WorldImagery
Esri.WorldTopoMap
FWS NWI Wetlands
FWS NWI Wetlands Raster
NLCD 2021 CONUS Land Cover
NLCD 2019 CONUS Land Cover
...正如您所注意到的,有一長串基礎(chǔ)地圖,其中大部分都是通過OpenStreetMap、ESRI和USGS獲得的。
Earth Engine數(shù)據(jù)類型
在展示Geemap的全部潛力之前,有必要了解Earth Engine中的兩種主要數(shù)據(jù)類型。查看Google Earth Engine的文檔以了解更多細節(jié)。

在處理矢量數(shù)據(jù)時,我們主要使用三種數(shù)據(jù)類型:
- 幾何形狀(Geometry)存儲在地圖上繪制矢量數(shù)據(jù)所需的坐標。Earth Engine支持三種主要類型的幾何形狀:點、線串和多邊形。
- 特征(Feature)實際上是結(jié)合幾何形狀和非地理屬性的行。它非常類GeoPandas的GeoSeries類。
- 特征組合(FeatureCollection)是一種包含一組特征的表格數(shù)據(jù)結(jié)構(gòu)。FeatureCollection和GeoDataFrame在概念上幾乎一樣。

在柵格數(shù)據(jù)世界,我們關(guān)注的是圖像(Image)對象。Google Earth Engine的圖像由一個或多個段組成,其中每個段都有一個特定的名稱、估計的最小值和最大值以及描述。
如果我們有一個圖像集合或時間序列,ImageCollection作為數(shù)據(jù)類型更合適。

我們將顯示歐洲陸地覆蓋地圖的衛(wèi)星圖像可視化。該數(shù)據(jù)集提供了1986年至2018年之間的變化。
首先,我們使用ee.Image加載圖像。然后,選擇段“landcover”。最后,不妨通過使用Map. addLayer將加載的數(shù)據(jù)集添加到地圖作為圖層來可視化圖像。
Map = geemap.Map()
dataset = ee.Image('COPERNICUS/CORINE/V20/100m/2012')
landCover = dataset.select('landcover')
Map.setCenter(16.436, 39.825, 6)
Map.addLayer(landCover, {}, 'Land Cover')
Map
與之相似,我們可以做同樣的事情來加載和可視化顯示歐洲土地覆蓋地圖的衛(wèi)星圖像。該數(shù)據(jù)集提供了1986年至2018年之間的變化。

為了可視化Earth Engine ImageCollection,除了ee.ImageCollection外,幾行代碼是相似的。
Map = geemap.Map()
collection = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_CH4').select('CH4_column_volume_mixing_ratio_dry_air').filterDate('2019-06-01', '2019-07-16')
band_viz = {
'min': 1750,
'max': 1900,
'palette': ['black', 'blue', 'purple', 'cyan', 'green', 'yellow', 'red']
}
Map.addLayer(collection.mean(), band_viz, 'S5P CH4')
Map.setCenter(0.0, 0.0, 2)
Map
從這張地圖上,我們可以看到甲烷在全球范圍內(nèi)是如何分布的,甲烷是造成溫室效應最重要的因素之一。
結(jié)語
這是一篇入門指南,可以幫助您使用Python處理Google Earth Engine數(shù)據(jù)。Geemap是可視化和分析這類數(shù)據(jù)的最完整的Python庫。
如果您想更深入地了解這個軟件包,可以查看下面我建議的參考資料。
代碼可以在這里找到:
https://github.com/eugeniaring/Medium-Articles/blob/main/Geo/geemap_tutorial.ipynb。
實用資源
- Google Earth Engine:https://earthengine.google.com/
- Geemap文檔:https://geemap.org/
- 圖書《Earth Engine and Geemap:Geospatial Data Science with Python》:https://book.geemap.org/
原文標題:Geospatial Data Analysis with Geemap,作者:Eugenia Anello




























