摘要: 如何利用地理空間數據的力量 空間數據、地理空間數據、GIS 數據或地理數據是數字數據的不同名稱,其根據地理坐標系識別物理對象(例如建筑物、街道、城鎮、城市、國家等)的地理位置。從空間數據中,不僅可以找到任何對象的位置,還可以找到其長度、大小、面積或形狀,同時...
如何利用地理空間數據的力量
空間數據、地理空間數據、GIS 數據或地理數據是數字數據的不同名稱,其根據地理坐標系識別物理對象(例如建筑物、街道、城鎮、城市、國家等)的地理位置。從空間數據中,不僅可以找到任何對象的位置,還可以找到其長度、大小、面積或形狀,同時可以獲得的一種空間數據的示例是:對象的坐標,例如緯度、經度和高程。地理信息系統(GIS)或其他專用軟件應用程序可用于訪問、可視化、操作和分析地理空間數據。地理空間數據的一些示例包括:
1.向量和屬性
關于某個位置的點、線、多邊形和其他描述性信息。矢量數據是空間元素通過其 x 和 y 坐標的表示,矢量數據的最基本形式是點。兩個或更多的點形成一條線,三個或更多的線形成一個多邊形。
最簡單的形式是在定義其地理空間坐標的表中包含一個或多個額外列。GeoJSON 等更正式的編碼格式也能派上用場。GeoJSON 是 JSON 數據格式的擴展,包含幾何特征,可以是 Point、LineString、Polygon、MultiPoint、MultiLineString 或 MultiPolygon。還有幾個其他庫可用于表示地理空間數據,所有這些都在地理空間數據抽象庫 (GDAL) 中進行了描述。
2.點云
點云由 LiDAR 系統收集,可用于創建 3D 模型。點云是在空間中隨機放置的 3D 點的集合。傳感器發出能量脈沖并乘以其返回行程(TWTT,雙向行程時間)。知道了傳感器的位置以及脈沖的傳輸方向,就可以確定反射面的 3D 位置。傳感器還可以測量回波的強度,以估計反射表面的幾何形狀和材料成分。LiDAR 代表光檢測和測距,機載 LiDAR 可以乘坐直升飛機或小型飛機飛行,現在可以使用無人機。它們顯示了地面,植被,建筑物和電源線,甚至還有鳥類等。這顯示了點云的 3D 描繪。利用計算機圖形學,該點可以繞三個軸旋轉、放大和縮小。
3.光柵和衛星圖像
通過高分辨率圖像鳥瞰地球,當觀察一個區域的空間信息時,可使用柵格數據。它由一個行列矩陣組成,每個單元格都有一些相關信息。柵格數據的一個示例是國家或城市的衛星圖像,該圖像由一個矩陣表示,該矩陣的每個單元格中都包含天氣信息??赏ㄟ^多種方式在 Python 中處理柵格數據,其中一個用戶友好包是 xarray,它讀取 netcdf 文件。
常用術語介紹
- shapefile:用于表示地圖上項目的數據文件格式。
- geometry:一個向量(通常是數據框中的一列),用于表示點、多邊形和其他幾何形狀或位置,通常表示為眾所周知的文本(WKT)。
- polygon:一個區域。
- point:特定位置。
- basemap:地圖的背景設置,例如加利福尼亞州的縣邊界。
- projection:由于地球是一個 3D 球體,因此選擇一種方法將一個區域展平成 2D 地圖,使用一些坐標參考系統 (CRS)。
- colormap:選擇用于渲染數據的調色板,使用 cmap 參數選擇。
- overplotting:將幾個不同的地塊疊加在一起。
- choropleth:使用不同的色調為多邊形著色,作為表示數據級別的一種方式。
- kernel density estimation:一種數據平滑技術 (KDE),它創建陰影輪廓來表示數據級別。
- cartogram:扭曲多邊形的相對面積以表示數據級別。
- quantiles:將數據值分箱到指定數量相等大小的組中。
- voronoi diagram:將一個區域劃分為多邊形,使得每個多邊形只包含一個生成點,并且給定多邊形中的每個點都比其他任何點更接近其生成點,也稱為 Dirichlet 鑲嵌。
用于地理空間數據分析的 22 個 Python 庫列表
Shapely
使用 Shapely,可以創建有形狀的幾何對象(例如點、多邊形、多多邊形)并對其進行操作,例如緩沖、計算面積或交點等。
Fiona
Fiona 可以使用多層 GIS 格式和壓縮虛擬文件系統讀取和寫入真實世界的數據,并很容易與其他 Python GIS 包(如pyproj {.dt .iz}、Rtree和 Shapely )集成。
GeoPandas
Geopandas 就如 pandas 遇見 GIS。它擴展了 pandas 使用的數據類型以允許對幾何類型進行空間操作。幾何運算由 Shapely 執行,它還依賴于 Fiona 進行文件訪問和 matplotlib 進行繪圖。
GeoPlot
高級地理空間繪圖庫。它是對 cartopy 和 matplotlib 的擴展,使制圖變得更加容易。它建立在其他幾個流行的地理空間庫之上,以簡化通常需要的編碼。
Arcpy
如果您使用 Esri ArcGIS,那么可能熟悉會 ArcPy 庫。ArcPy 用于地理處理操作。但它不僅用于空間分析,還用于 Esri ArcGIS 的數據轉換、管理和地圖制作。
Scikit-Image
圖像處理庫,例如直方圖調整、過濾器、分割、邊緣檢測操作、紋理特征提取等。
SciKit-Learn
最好的同時易于使用的 Python 機器學習庫,可進行回歸、分類、降維等。
Descartes
支持將形狀幾何圖形繪制為 matplotlib 路徑、補丁,也是 geopandas 的幾何繪圖功能的依賴項。
RasterStats
用于分區統計。根據幾何圖形從柵格文件或 numpy 數組中提取統計信息。
Rasterio
Rasterio 是處理柵格數據的首選庫。它允許從 numpy {.dt .iz} 數組(Python 數組操作的實際標準)讀取、寫入光柵文件,能夠提供許多簡便的方法來操作這些數組(例如掩碼、矢量化等),并且可以處理坐標參考系的變換。就像任何其他 numpy 數組一樣,數據也可以很容易地繪制出來,例如使用 matplotlib 庫。
ipyleaflet
如果想創建交互式地圖,那么 ipyleaflet 是 Jupyter notebook 和 Leaflet 的融合??梢钥刂聘鞣N自定義設置,例如加載底圖、geojson 和小部件。它還提供了多種地圖類型可供選擇,包括等值線圖、速度數據和并排視圖。
Folium
就像 ipyleaflet 一樣,Folium 允許利用 leaflet 來構建交互式網絡地圖。它能夠在 Python 中操作數據,可以使用領先的開源 JavaScript 庫將其可視化。
Geemap
Geemap 更傾向于使用 Google Earth Engine (GEE) 進行科學和數據分析。
PySAL
Python 空間分析庫包含大量用于空間分析、統計建模和繪圖的函數。它旨在支持高級應用程序的開發。
xarray
xarray 非常適合處理大量圖像時間序列堆棧,想象一下 5 個植被指數 x 24 個日期 x 256 像素 x 256 像素。xarray 允許標記多維 numpy 數組的維度,并將其與許多函數和 pandas 庫的語法(例如 groupby、滾動窗口、繪圖)相結合。
PyProj
PyProj 庫的主要目的是它如何與空間參考系統一起工作。它可以用一系列地理參考系統投影和轉換坐標,PyProj 還可以為任何給定的基準執行大地測量計算和距離。
GDAL/OGR
GDAL/OGR 庫用于在 GIS 格式和擴展名之間進行轉換。QGIS、ArcGIS、ERDAS、ENVI 和 GRASS GIS 以及幾乎所有 GIS 軟件都以某種方式使用它進行翻譯。目前,GDAL/OGR 支持 97 個矢量和 162 個光柵驅動程序。
RSGISLib
RSGISLib 庫是一套用于柵格處理和分析的遙感工具。它對圖像進行分類、過濾和執行統計,很多人最喜歡的是基于對象的分割和分類 (GEOBIA) 模塊。
ReportLab
ReportLab 是此列表中最令人滿意的庫之一,原因在于 GIS 通常缺乏足夠的報告能力。特別是,如果想創建一個報告模板,這是一個很好的選擇,但不知為什么 ReportLab 庫有點不受關注。
Imageio
它是一個 Python 庫,提供了一個簡單的界面來讀取和寫入各種圖像數據,包括動畫圖像、體積數據和科學格式。
MapClassify
它為 choropleth 圖實施了一系列分類方案。重點是確定分類的數量,并將觀察結果分配給這些分類。
RTree
它是 lib_spatial_index 的 ctypes Python 包裝器,提供了許多高級空間索引功能。