python空间分析_读书笔记——《python地理空间分析指南》
本文為《Python地理空間分析指南(第2版)》的讀書摘錄,順便挖個坑,進一步對python的幾個包做學習整理。
本筆記的用途:了解python地理空間處理的技術框架和實現途徑。
第三章 地理空間技術概覽
一般來說,地理空間軟件包不同程度上實現了以下4種高級核心功能:數據訪問;幾何計算(包括數據重投影);可視化;元數據工具。
GDAL, OGR, GEOS和PROJ.4庫是地理空間分析產業商業、開源軟件的核心和靈魂。
數據訪問
GDAL (The Geospatial Data Abstraction Library) 為柵格數據提供了一個單一、抽象的數據模型。
OGR 處理矢量數據,X11/MIT開源授權協議。
幾何計算
PROJ.4 投影庫能夠描述任何投影信息,為GDAL和OGR庫處理矢量、柵格數據提供支持。
CGAL 計算幾何算法庫
JTS 是Java地理空間計算幾何庫,實現了SQL的開放地理空間聯盟(OGC)簡單要素標準。
GEOS 開源幾何引擎,JTS的C++版本實現。
PostGIS 空間數據庫,是PostgreSQL的一個模塊,免費開源。
可視化
QGIS (Quantum GIS) 開源的地理信息系統,是基于GDAL/OGR庫和GEOS庫構建的,所以能使用PostGIS,并且支持這些軟件包提供的數據源。
OpenEV 最快的柵格數據查看器,支持GDAL/OGR庫和PROJ.4庫的所有功能,方便瀏覽和數據轉換。
ArcGIS
元數據管理
地理空間數據集的元數據能夠遵循并保證數據集的完整性,而且可以追溯到數據生產商。格式正確的元數據還允許自動編目、索引搜索和數據集集成。
GeoNetwork 是開源的、使用Java實現的管理地理空間數據的目錄服務。
Python庫
網絡庫 urllib ftplib zipfile xml beautifulsoup4 lxml
Json庫 json geojson osgeo.ogr
shapefile文件 Pyshp
import shapefile
shp = shapefile.Reader("point.shp")
for feature in shp.shapeRecords():
point = feature.shape.points[0]
rec = feature.record[0]
print(point[0], point[1], rec)
dbf文件 dbfpy3
Shaplely庫 是高級的Python風格的GEOS庫幾何操作的做,它完全依賴其他模塊導入或導出數據,功能聚焦于幾何操作方面。
from shapely import wkt, geometry
wktPoly = "POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))"
poly = wkt.loads(wktPoly)
print(poly.buffer(5.0).difference(poly).area) # 158.4137
Fiona 模塊為OGR庫的數據訪問功能提供了一套簡潔的Python API,默認輸出格式是GeoJSON。
import fiona
import pprint
f = fiona.open("...")
print(f.driver, f.crs, f.bounds, f.schema)
pprint.pprint(f[1])
GDAL
from osgeo import gdal
raster = gdal.Open("....tif")
print(raster.RasterCount, raster.RasterXSize)
PIL 圖像編輯,升級版本Pillow,輕量級PNGCanvas,柵格化Shapefile文件
GeoPandas
import geopandas
import matplotlib.pyplot as plt
gdf = geopandas.GeoDataFrame
census = gdf.from_file("....shp") # 打開并存儲為GeoJSON格式
census.plot()
plt.show()
Numpy
pymysql 提供有限的空間功能
pyFPDF 一種輕量級的創建包括地圖等PDF文件的解決方案。
Spectral Python 一款專門處理遙感應用的高級功能包。
重投影
Shapefile文件編輯
.shp文件包含幾何圖形,.dbf文件包含幾何圖像相關的屬性信息。
import shapefile
r = shapefile.Reader("M")
print(r.bbox, r.shapeType, r.numRecords)
# dbf文件是簡單的數據庫格式,類似行列式的電子表格結構,每一列通過標簽定義它包含的信息。
print(r.fields)
# field name, field type, field length, decimal length
# DeletionFlag, ...
# 通過字段訪問數據
fieldNames = [item[0] for item in r.fields[1:]]
name10 = fieldNames.index("NAME10")
print(r.record(2)[name10])
總結
以上是生活随笔為你收集整理的python空间分析_读书笔记——《python地理空间分析指南》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 微积分_《用 Python
- 下一篇: python文本的平均列数_文本的平均列