借助Geemap分析空間地理數(shù)據(jù)
譯文譯者 | 布加迪
審校 | 重樓
地理空間數(shù)據(jù)分析是一個(gè)專門領(lǐng)域,用來(lái)處理、可視化和分析一種特殊類型的數(shù)據(jù):地理空間數(shù)據(jù)。與正常數(shù)據(jù)相比,地理空間數(shù)據(jù)是帶有附加列:位置信息(比如緯度和經(jīng)度)的表格數(shù)據(jù)。
有兩種主要類型的數(shù)據(jù):矢量數(shù)據(jù)和柵格數(shù)據(jù)。在處理矢量數(shù)據(jù)時(shí),您仍有一個(gè)表格數(shù)據(jù)集,而柵格數(shù)據(jù)更類似圖像,比如衛(wèi)星圖像和航空照片。
本文將重點(diǎn)介紹Google Earth Engine提供的柵格數(shù)據(jù),這個(gè)云計(jì)算平臺(tái)提供了龐大的衛(wèi)星圖像數(shù)據(jù)目錄。這類數(shù)據(jù)很容易使用一個(gè)名為Geemap的Python軟件包從Jupyter Notebook加以處理。
Google Earth Engine簡(jiǎn)介
在開(kāi)始使用Python庫(kù)之前,我們需要了解Google Earth Engine的潛力。這個(gè)基于云的平臺(tái)由谷歌云平臺(tái)提供支持,托管學(xué)術(shù)、非營(yíng)利和商業(yè)目的的公共和免費(fèi)地理空間數(shù)據(jù)集。
這個(gè)平臺(tái)的魅力在于,它提供了存儲(chǔ)在Earth Engine服務(wù)器上的多PB的柵格數(shù)據(jù)和矢量數(shù)據(jù)目錄。您可以從這個(gè)鏈接:https://developers.google.com/earth-engine/datasets/catalog快速瀏覽一下。此外,它還提供了方便分析柵格數(shù)據(jù)集的API。
Geemap是一個(gè)Python庫(kù),便于分析和可視化來(lái)自Google Earth Engine的大量地理空間數(shù)據(jù)。
在這個(gè)軟件包出現(xiàn)之前,我們已經(jīng)可以通過(guò)JavaScript和Python API進(jìn)行計(jì)算請(qǐng)求,但Python API功能有限,且缺少文檔。
為了填補(bǔ)這個(gè)空白,Geemap應(yīng)運(yùn)而生,允許用戶通過(guò)幾行代碼訪問(wèn)Google Earth Engine的資源。Geemap建立在eartenengine-api、ipyleaflet和folium的基礎(chǔ)上。
欲安裝該庫(kù),只需執(zhí)行以下命令:
pip install geemap
建議您在Google Colab中試用這個(gè)出色的軟件包,以了解其全部潛力??纯催@本由教授Qiusheng Wu博士撰寫的介紹Geemap和Google Earth Engine使用入門的圖書。
如何訪問(wèn)Earth Engine?
首先,我們需要導(dǎo)入將在本教程中用到的兩個(gè)Python庫(kù):
import ee
Import geemap
除了Geemap外,我們還導(dǎo)入了名為ee的Earth Engine Python客戶端庫(kù)。
這個(gè)Python庫(kù)可以用于Earth Engine上進(jìn)行身份驗(yàn)證,但直接使用Geemap庫(kù)可以更快:
m = geemap.Map()
m
您需要點(diǎn)擊這行代碼返回的URL,這將生成授權(quán)碼。首先選擇云項(xiàng)目,然后點(diǎn)擊“GENERATE TOKEN”按鈕。
之后,它會(huì)要求您選擇帳戶。建議您使用Google Colab的同一個(gè)帳戶。
然后,點(diǎn)擊“Select All”旁邊的復(fù)選框,并按“Continue”按鈕。簡(jiǎn)而言之,這一步允許筆記本客戶端訪問(wèn)Earth Engine帳戶。
在這個(gè)操作之后,將生成身份驗(yàn)證碼,您可以將其粘貼到筆記本單元格中。
一旦輸入了驗(yàn)證碼,您就可以最終創(chuàng)建并可視化這個(gè)交互式地圖了:
m = geemap.Map()
m
眼下,您就可以在ipyleaflet上查看基本地圖了,這個(gè)Python軟件包可以在Jupyter Notebook中可視化交互式地圖。
創(chuàng)建交互式地圖
前面,我們已經(jīng)看到了如何使用單單一行代碼對(duì)交互式地圖進(jìn)行身份驗(yàn)證和可視化?,F(xiàn)在,我們可以通過(guò)指定質(zhì)心的緯度和經(jīng)度、縮放級(jí)別和高度來(lái)定制默認(rèn)地圖。我選擇了羅馬的坐標(biāo)作為歐洲地圖上的中心。
m = geemap.Map(center=[41, 12], zoom=6, height=600)
m
如果我們想要改變基礎(chǔ)地圖,有兩種方法。第一種方法是編寫并運(yùn)行以下代碼行:
m.add_basemap("ROADMAP")
m
另一種方法是,您可以通過(guò)點(diǎn)擊位于右側(cè)的環(huán)扳手圖標(biāo)手動(dòng)更改基礎(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
...
正如您所注意到的,有一長(zhǎng)串基礎(chǔ)地圖,其中大部分都是通過(guò)OpenStreetMap、ESRI和USGS獲得的。
Earth Engine數(shù)據(jù)類型
在展示Geemap的全部潛力之前,有必要了解Earth Engine中的兩種主要數(shù)據(jù)類型。查看Google Earth Engine的文檔以了解更多細(xì)節(jié)。
在處理矢量數(shù)據(jù)時(shí),我們主要使用三種數(shù)據(jù)類型:
- 幾何形狀(Geometry)存儲(chǔ)在地圖上繪制矢量數(shù)據(jù)所需的坐標(biāo)。Earth Engine支持三種主要類型的幾何形狀:點(diǎn)、線串和多邊形。
- 特征(Feature)實(shí)際上是結(jié)合幾何形狀和非地理屬性的行。它非常類GeoPandas的GeoSeries類。
- 特征組合(FeatureCollection)是一種包含一組特征的表格數(shù)據(jù)結(jié)構(gòu)。FeatureCollection和GeoDataFrame在概念上幾乎一樣。
在柵格數(shù)據(jù)世界,我們關(guān)注的是圖像(Image)對(duì)象。Google Earth Engine的圖像由一個(gè)或多個(gè)段組成,其中每個(gè)段都有一個(gè)特定的名稱、估計(jì)的最小值和最大值以及描述。
如果我們有一個(gè)圖像集合或時(shí)間序列,ImageCollection作為數(shù)據(jù)類型更合適。
我們將顯示歐洲陸地覆蓋地圖的衛(wèi)星圖像可視化。該數(shù)據(jù)集提供了1986年至2018年之間的變化。
首先,我們使用ee.Image加載圖像。然后,選擇段“landcover”。最后,不妨通過(guò)使用Map. addLayer將加載的數(shù)據(jù)集添加到地圖作為圖層來(lái)可視化圖像。
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
與之相似,我們可以做同樣的事情來(lái)加載和可視化顯示歐洲土地覆蓋地圖的衛(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)是如何分布的,甲烷是造成溫室效應(yīng)最重要的因素之一。
結(jié)語(yǔ)
這是一篇入門指南,可以幫助您使用Python處理Google Earth Engine數(shù)據(jù)。Geemap是可視化和分析這類數(shù)據(jù)的最完整的Python庫(kù)。
如果您想更深入地了解這個(gè)軟件包,可以查看下面我建議的參考資料。
代碼可以在這里找到:
https://github.com/eugeniaring/Medium-Articles/blob/main/Geo/geemap_tutorial.ipynb。
實(shí)用資源
- Google Earth Engine:https://earthengine.google.com/
- Geemap文檔:https://geemap.org/
- 圖書《Earth Engine and Geemap:Geospatial Data Science with Python》:https://book.geemap.org/
原文標(biāo)題:Geospatial Data Analysis with Geemap,作者:Eugenia Anello