看這本書的目的在於記錄一下Python做地理空間分析的工具,主要是開源的東西;快速翻一遍,且作記錄
概述部分
- 埃博拉病毒與Ushahidi災害系統
- 法國西南部的拉斯科山洞,星空圖壁畫⇒” role=”presentation”>⇒⇒對事物的抽象
- 1832年的歐洲霍亂疫情中,病情和水井的製圖⇒” role=”presentation”>⇒⇒兩者分佈關係
- 1869年法國工程師繪製的1812年拿破崙東征俄羅斯戰敗的時序圖⇒” role=”presentation”>⇒⇒融合時間線、線寬、顏色、文字等方式表達
- 第一個GIS系統——加拿大國家地理信息系統CGIS
- 遙感——遠距離探測,如Landsat等
- DEM——數字高程模型,如SRTM(90m)、GDEM(30m)、WorldDEM(4m、要錢)等
- CAD——計算機輔助製圖,與GIS製圖的區別在於座標(GIS地理座標)
- OSM——OpenStreetMap,開源的GIS衆源數據
- GIS基本概念:專題地圖、空間數據庫、空間索引、元數據、地圖投影、渲染、影像數據、遙感顏色
- GIS矢量基本概念:數據結構、緩衝區、融合、簡化、疊置、合併、包含、聯合、連接、拓撲
- GIS柵格基本概念:波段運算、變化監測、柱狀圖、特徵提取、監督分類、非監督分類
- 用turtle模塊做了個小例子,基於Tkinter庫的圖形引擎
地理空間數據
- 互聯網地圖用web墨卡託投影,谷歌造的,原編號EPSG:900913,正式編號EPSG:3857
- 空間索引方法:四叉樹、R樹
- 地圖瓦片:網格與概要化,分級圖片
- 開源矢量庫OGR支持86+種矢量格式、商業的FME支持188+種
- Shapefile格式——Esri的並開放了標準,包括.shp/.shx/.dbf|.sbn/.sbx/.prj等
- AutoCAD文件格式——DXF、DWG,在地理空間分析中使用有限
- 標籤和標記格式——XML/KML/OSM/GML/GeoJSON/SVG/WKT(常用於prj)
- GeoJSON:JSON格式的一種,與Javascript無縫集成,WebGIS開發常用
- 影像數據——ASCII文本文件、TIFF、常規圖片(JPEG/GIF/BMP/PNG,需要地理參考文本輔助)、複雜類型(NetCDF、GRIB、HDF5,用于海洋、氣象等)、壓縮格式等
- 點雲數據——激光、雷達等產生,用於三維
地理空間技術概覽
- 地理空間軟件包實現的4個核心功能:數據訪問、幾何計算、可視化、元數據工具
- GDAL、OGR、GEOS、PROJ.4是地理空間分析產業商業、開源軟件的核心與靈魂,都是C/C++編寫的。另外Java寫的GeoTools瞭解一下
- GDAL:地理空間數據抽象庫,主要面對柵格數據訪問處理
- OGR:簡單特徵庫,面向矢量數據訪問處理
- PROJ.4:用於地圖投影
- CGAL:計算幾何算法庫,如多邊形直骨架線
- JTS:Java拓撲套件,Java實現的地理空間計算幾何庫
- GEOS:開源幾何引擎,是JTS庫的C++版實現,現存包括Python的腳本語言都自動綁定GEOS庫
- PostGIS:開源關係型數據庫PostgreSQL的模塊,大多由GEOS提供,實現了SQL查詢空間數據
- 其他支持空間分析的數據庫:Oracle Spatial、ArcSDE、Microsoft SQL Server、MySQL、SpatialLite
- 路徑分析——Esri網絡分析、PostGIS的開源pgRouting引擎
- 桌面工具——QGIS、OpenEV、GRASS GIS、uDig、gvSIG、OpenJUMP、Google Earth、NASA World Wind、ArcGIS;(國內:Supermap、MapGIS、GeoStar等)
- 元數據管理——GeoNetwork、CatMDEdit
Python地理空間分析工具
- GDAL的安裝——源碼編譯、大型軟件的一部分、安裝二進制發行包
Python的網絡庫
import urllib import ftplib import zipfile import tarfile
- 1
- 2
- 3
- 4
Python的標籤解析器
#歷史悠久(自帶) from xml.dom import minidom #元素樹(自帶) try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET #專業解析HTML(等格式混亂的XML文件) from bs4 import BeautifulSoup
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
WKT文本。注意:shapely爲GEOS提供一套Pythonic接口
#使用shapely import shapely.wkt #也可以用OGR庫 from osgeo import ogr ...
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Python處理json
#使用json模塊(自帶) import json #使用geojson模塊 import geojson
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
PyShp,用於讀寫Shapefile文件,不支持任何幾何操作,只調用Python標準庫
import shapefile
- 1
dbfpy3,Python實現,專門處理dbf文件
from dbfpy3 import dbf
- 1
Shapely,通用幾何庫,是高級的、提供Python風格的GEOS庫幾何操作的庫,避免訪問文件,只聚焦幾何操作
import shapely
- 1
Finoa,爲OGR庫的數據訪問功能提供簡潔的Python API,默認GeoJSON格式
import finoa
- 1
GDAL,處理柵格數據;OGR,通用矢量數據庫
from osgeo import ogr from osgeo import gdal
- 1
- 2
- NumPy,用於Python數組的快速處理、科學計算等,C實現的
- PIL,圖像編輯用,C實現的
- PNGCanvas,Python 實現的輕量級的圖像編輯
- GeoPandas,由Shapely、Fiona、PyProj、matplotlib、Descartes及其他必須庫構建的Pandas的地理空間擴展,數據庫支持
- PyMySQL,提供一套完整的Python實現的API實現MySQL的空間數據支持
- PyFPDF,Python寫的,處理PDF文件
- Spectral Python,SPy,Python光譜功能包,處理遙感應用,尤其是高光譜
Python與地理信息系統
- 距離兩側:平面(勾股)、球面(半正矢公示)、橢球面(Vincenty公式)
- 方位計算
- 座標轉換
- 重投影
- Shapefile文件編輯
- 查詢
- 可視化
- 電子表格
- GPS數據
- 地理編碼(geocoder-谷歌地圖、geopy-OSM)
Python與遙感
略,主要就是GDAL和PIL、PNGCanvas;例子包括圖像波段變換、圖像直方圖創建、圖像分類、圖像特徵提取、變化監測應用
Python與高程數據
- ASCII網格高程文件:gdal、numpy
- 地貌暈渲圖:linecache、numpy
- 創建等高線:gdal
- LIDAE數據網格化:laspy、PIL;voronoi創建Delaunay三角網
Python地理空間高級建模
這一章是幾個例子,給出了問題解決流程
示例:一張農作物健康地圖、一個洪水淹沒模型、一張彩色暈渲地圖、一張地形路徑地圖、一張街道路徑地圖、一張包含照片地理位置連接的shapefile文件
實時數據
- 一張地圖在被製造出來的那一刻,就已經過時了
- 實時路況的API
- 氣象追蹤,愛荷華州立大學的Mesonet平臺提供免費、實時的天氣數據應用服務
- NOAA提供了一套訪問OSM的WMS接口
- SRTM.py提供DEM下載