python - osgeo › pygis › misc › pygis-bukun.pdf · python 与开源gis...

47

Upload: others

Post on 04-Jul-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京
Page 2: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

《Python 与开源 GIS》相关资源

本书配套网站:

https://www.osgeo.cn/pygis/

关注公众号

(输入“Python与开源 GIS”获取配套资源)

获取方法 说明

本书源代码托管于 GitHub , 访问地址:

https://github.com/bukun/book_python_gis

运行代码需要有配

套的数据资源,请

关注公众号获取。

本书的配套数据,请关注微信公众号

(gislite),输入“Python 与开源 GIS”获

取下载方法。

数据包括全球海岸

线数据、中国分县

数据、中国主要城

市。相关数据仅作

为本书学习、实验

使用,不得作为数

据分析、地图制图

等的依据。

与 Python、开源 GIS相关的课件,请关注微

信公众号(gislite),输入“Python 与开源

GIS”获取下载方法。

包括作者在 2016

年、2017年、2018

年、2019年进行相

关培训时使用的课

件。

本书提供虚拟机镜像作为实验环境,请关注微

信公众号(gislite),输入“Python 与开源

GIS”获取下载方法。

虚拟机使用

VirtualBOX , 在

Windows 10 64 bit

环境下制作;虚拟

机中操作系统为

Debian Buster(10)

64 bit。

Page 3: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

Python 与开源 GIS ——数据处理、空间分析与地图制图

卜 坤 著

北 京

Page 4: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

������������������������������������

������������������������������������

������������������������������������

�GIS����������������������������������

�������������������������������

������� GIS ������������������������

�����������������������������������

�����������������������

������������ GIS ��������������

��������������������������������

��������������ICSU-WDS������� WDS ����

���������� ������������UNESCO��

�������������������� ����� ����

�������������� ��������������

������ ��� ����� GIS��������� �����

�������

������������������ ���� OSGeo ���

��� ��� GIS ������������ GIS �������

���� ��

����������������� ������ GIS���WebGIS

��������������������������������

�����

���

���� ��������� ��

�������������� ��

Page 5: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� �

�� �� ��������������������� ���

�������������� ����� �

��� ���������������������������

�������������������geographic information system�GIS��

����������������������������������

�� GIS����������� �������������Web

�������������������������� �����

������������������������������� GIS

���������������������Open Source Geospatial founda-

tion�OSGeo����������� GIS ����������������

������

GIS ��� ���� ���� GIS ���������

�������GIS������� �������� ���������

��� �������

����������

�1����� Latex� Python 3��������� Python���� Latex

���������� �������������� �

�2�������������������������

�3���������������� ��������������

� Debian 9�Ubuntu 18.04� Debian 10�����������������

https://www.osgeo.cn/pygis�

����������� ��CKCEST-2016-3-7�CKCEST-2017-3-1�

CKCEST-2018-2-8�CKCEST-2019-3-8������ ��� ��������

������XXH13505-07�����

Page 6: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� �

��

� 1 � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1 GIS ��� GIS ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 GIS �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.2 ���� ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.3 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.1.4 �� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.1.5 �� GIS �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.1.6 ������������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.2 GIS ����������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.2.1 ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

1.2.2 GeoTIFF �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.2.3 ������������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.3 ��� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.3.1 ������� GIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23

1.3.2 Debian Linux �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.3.3 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

1.3.4 ���� IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26

1.4 Python ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.4.1 Python � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

1.4.2 Python �������������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1.4.3 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

1.4.4 Python �������������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

1.5 ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

� 2 � �� GDAL ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2.1 GDAL �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2.1.1 GDAL �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2.1.2 GDAL ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.2 �� GDAL ����� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Page 7: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· vi · Python ��� GIS —— ������� ������

2.2.1 ���� GDAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.2.2 ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.2.3 �� GDAL ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

2.3 ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

2.3.1 GDAL ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

2.3.2 ���� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

2.3.3 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

2.4 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2.4.1 �� CreateCopy ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60

2.4.2 �� Create ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2.4.3 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

2.4.4 GDAL ����������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

2.4.5 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.5 GDAL ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.5.1 GDAL � Pillow ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.5.2 GDAL �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

2.5.3 ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73

2.5.4 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

2.5.5 GDAL ��������������� . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

� 3 � �� OGR ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81

3.1 OGR �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81

3.1.1 OGR ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

3.1.2 � Python �� OGR ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83

3.2 �� OGR �� Shapefile �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3.2.1 � OGR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3.2.2 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

3.2.3 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

3.2.4 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

3.2.5 ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

3.3 �� OGR ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91

3.3.1 �� OGR Shapefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

3.3.2 �� OGR ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

3.3.3 �� WKT �� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

3.3.4 �� OGR ������ Shapefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

3.3.5 OGR � �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Page 8: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� · vii ·

3.3.6 OGR �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

3.4 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

3.4.1 ��� ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

3.4.2 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

3.4.3 � OGR ��� SQL ���� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

3.5 �� Fiona ����������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

3.5.1 Fiona �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

3.5.2 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

3.5.3 Fiona ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

� 4 � ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

4.1 ����������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

4.1.1 �� ����� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

4.1.2 PROJ.4�osgeo.osr ��������� . . . . . . . . . . . . . . . . . . . . . . . .120

4.1.3 � PROJ.4 ��� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

4.2 PROJ.4 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

4.2.1 proj ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

4.2.2 ���� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

4.2.3 cs2cs ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130

4.2.4 geod ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

4.3 � Python ��� PROJ.4� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

4.3.1 Proj � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134

4.3.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

4.3.3 Geod ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

4.4 osgeo.osr����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139

4.4.1 osr �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

4.4.2 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139

4.4.3 ����� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142

4.4.4 ���������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143

4.4.5 ������������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

� 5 � ������������ Shapely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147

5.1 Shapely �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

5.1.1 JTS�GEOS � Shapely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

5.1.2 Shapely ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

5.1.3 Shapely ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

5.2 Shapely ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

Page 9: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· viii · Python ��� GIS —— ������� ������

5.2.1 ��� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

5.2.2 Shapely ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

5.2.3 Shapely ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

5.3 Shapely ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

5.3.1 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

5.3.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

5.3.3 DE ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

5.4 �� Shapely �� ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

5.4.1 �� ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

5.4.2 ��� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168

5.5 Shapely ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173

5.5.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

5.5.2 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

5.5.3 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

5.6 Shapely ����� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

5.6.1 WKT � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

5.6.2 NumPy � Python �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

5.6.3 geo-interface � � Shapely ���� . . . . . . . . . . . . . . . . . . . . . . . . . . 178

� 6 � �� SpatiaLite ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181

6.1 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

6.1.1 SQLite � SpatiaLite �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

6.1.2 � ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

6.2 ������� SpatiaLite Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

6.2.1 ���� SpatiaLite ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

6.2.2 SpatiaLite ���� SQL �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . .188

6.2.3 �� GIS �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

6.2.4 SpatiaLite �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

6.2.5 SpatiaLite ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193

6.3 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

6.3.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

6.3.2 ���: � SQLite ��� R-Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197

6.3.3 ������ MbrCache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

6.4 � Python ��� SpatiaLite ������ . . . . . . . . . . . . . . . . . . . . . . . . . . 203

6.4.1 � Python ��� SpatiaLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203

6.4.2 � Shapefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Page 10: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� · ix ·

6.4.3 ������� � � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

6.5 SpatiaLite ���������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

6.5.1 �� Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

6.5.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

6.5.3 �����MBR�. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214

6.5.4 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214

6.5.5 Python � SQLite ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217

6.5.6 ����������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

6.6 ������������� SQL �� . . . . . . . . . . . . . . . . . . . . . . . .221

6.6.1 � CSV � ��� TXT ����� SQL � . . . . . . . . . . . . . . . . . . 221

6.6.2 � Shapefile ��� SQL � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223

6.7 SpatiaLite ����������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225

6.7.1 �� MBR �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226

6.7.2 ����� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

6.7.3 ��� ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231

� 7 � GIS ����� Mapnik ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

7.1 Mapnik ������������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

7.1.1 Mapnik �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233

7.1.2 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233

7.1.3 Mapnik ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

7.1.4 �� XML ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239

7.2 Mapnik ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

7.2.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

7.2.2 ����� �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

7.2.3 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

7.2.4 ���� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

7.2.5 Mapnik �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

7.3 ������ � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

7.3.1 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

7.3.2 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248

7.3.3 �� GDAL/OGR �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

7.3.4 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

7.4 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251

7.4.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

7.4.2 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Page 11: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· x · Python ��� GIS —— ������� ������

7.4.3 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

7.4.4 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

7.4.5 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

7.5 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267

7.5.1 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

7.5.2 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270

� 8 � �� Basemap ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

8.1 Basemap ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

8.1.1 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

8.1.2 Basemap ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

8.1.3 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

8.1.4 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

8.1.5 ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282

8.2 � Basemap ��� Matplotlib �� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284

8.2.1 �� annotate ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

8.2.2 �� plot ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

8.2.3 �� text ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288

8.2.4 ��� plot ��� text �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

8.3 � Basemap ��� GIS �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

8.3.1 �� Shapefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

8.3.2 � Basemap ��� DEM ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292

8.3.3 � Basemap �������� DEM �� . . . . . . . . . . . . . . . . . . . . . . . . . 294

8.4 USGS ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

8.4.1 ����� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297

8.4.2 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

� 9 � Python ������ GIS ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

9.1 �� PyShp �� Shapefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

9.1.1 PyShp ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

9.1.2 �� Shapefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

9.1.3 Shapefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

9.2 �� geojson�� GeoJSON�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

9.2.1 geojson ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

9.2.2 geojson ����� ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

9.2.3 geojson ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317

9.3 �� Descartes ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

Page 12: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� · xi ·

9.3.1 Descartes �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

9.3.2 �� Descartes �� Shapefile ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

9.4 �� ����� GeoPandas����� . . . . . . . . . . . . . . . . . . . . . . . . 322

9.4.1 �����GeoSeries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

9.4.2 �����GeoDataFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

9.4.3 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

9.4.4 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

9.4.5 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

9.4.6 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

9.5 �� Folium �� WebGIS �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .336

9.5.1 Folium ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

9.5.2 � Folium ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

��

Page 13: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�1� � �

����������������������������������

��������

�1��������geographic information system�GIS�������

�2��� GIS �������

�3����������������

�4�Python ��������

�5��������������

1.1 GIS ��� GIS �����

GIS ���������������������� 20 �� 80 ���

��GIS �������������������������������

�������������������global positioning system�GPS����

���������������

GIS����������������������������

������ GIS �������� GIS ��������������

��������� GIS �����������������

������������ GIS ���������

��� Python ��� ������� GIS ������

�����������������������������������

��������������� GIS�������� �� ��

���� GIS ������������������� ��������

���� ����

1.1.1 GIS ���

GIS��� ���� ��������������������

����� ��������������������������

�����������������������������������

���������

Page 14: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 2 · Python ��� GIS —— ������ ����� �

GIS �������������� GIS ��� ��� �

�������������������������������� ��

�������������

���� �GIS �����������������������

��������� � ����������

��� ������� ������ ������ �����

�������������������������� ����

������ �������������������� �����

�� ���������� ���� ���� ����������

����� � ��������

������������������������������

����������������������� �������

�����������������������

1.� GIS �������

�� GIS���������������� �����GIS���

��� �������� �������������������

���GIS ����������� ����geospatial database�����

���������������� �����������������

��������������

���������� GIS ��������������������

�����

��������������������� ������� GIS

������������� ��������������� ����

� �layer������������theme����coverage��� GIS �

����������������������

���������������������������������

���� GIS �������� �

� ������� �������������������� ��

����� ����GIS �� ��������������computer

aided design�CAD�� ������management information system�MIS���

������� GIS �����������

� �������������GIS ����������� GIS �

���������geographic information science���������� GIS �

���������geographic information service��

Page 15: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 1 � � � · 3 ·

2. GIS ���

� GIS ���������� GIS ��������������

����

������������ ���GIS �������

�1��������������� ��������������

�2������ ��������������������������

���

�3��� ���� GIS ��� �� ��������������

�����

�4�� ���� ����� � �������������

����

�5������������������� ������

GIS ��������������������������� ��

����������������������� ��������

�� ������������������� �����������

��� �� ���GIS ��� �����������������

����������� ��

�1�������������

�2���� �����������

�3����������������� ������

�4�� �������� ����� �

�5���������������������

3. GIS �����

20 �� 60 ��� �������������� �������

����� ������� ����!�������������Roger

Tomlinson��"�#���������� ��� GIS�������

��������Canada geographic information system�CGIS������

����� ����$��������������������

���

�� CGIS ������ GIS ������������������

������������������������ �����

�����������

20 ����%������ �� UNIX ���������������

������������������Environmental Systems Research In-

Page 16: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 4 · Python ��� GIS —— ������ ����� �

stitute, Inc�ESRI�� MapInfo �������������� CGIS ����

�#���� �� ��� ������

� 20 ����GIS ����������������&������

���������#�������� GIS������������

�������� GIS ���� ���� ���������

4. GIS �����

�������'� GIS ����������� GIS ���� ��

����������������������������������

���� �������������������������������

����������������������������(�������

��������������������location based service�LBS��LBS

��������������)�������������������

���������������������������� ������

�����������������������������������

�����

� ������������������������ GIS ���

��� GIS����� GIS ������������������� ����

����������� ��������������� ���

�����������������������(��������

��������������������������������

1.1.2 ������������

1.��

� ������������������ ������������

����������� ����� ��������� �����

���������*� ������������ (x, y) � (x, y, z) ���

������ � ������������*� ����������

� (x1, y1), (x2, x2), · · · , (xn, yn) � (x1, y1, z1), (x2, y2, z2), · · · , (xn, yn, zn) ����

������ ��������������*���������

��� ������������� (x1, y1), (x2, y2), · · · , (xn, yn), (x1, y1) �

(x1, y1, z1), (x2, y2, z2), · · · , (xn, yn, zn), (x1, y1, z1) ���� ����� ���

����� � 10���� ��–���– ��–���–�� – � –��

–���–���–���–��

���� Python�� GIS���������� ����������

Page 17: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 1 � � � · 5 ·

������������������� �������GIS��QGIS��

������������������ 3 �������

��� ����+ �����

1 >>> import os

2 >>> from osgeo import ogr

3 >>> extfile='xx_demo_point.shp'

���� Shapefile��� GIS����� �� 1.2.3����������

1 >>> driver=ogr.GetDriverByName ("ESRI Shapefile ")

2 >>> if os.access(extfile , os.F_OK):

3 >>> driver.DeleteDataSource (extfile)

4 >>> newds=driver.CreateDataSource (extfile)

5 >>> layernew =newds.CreateLayer ('point', None , ogr.wkbPoint)

������������������

1 >>> fieldf_x=ogr.FieldDefn ("x", ogr. OFTReal)

2 >>> fieldf_y=ogr.FieldDefn ("y", ogr. OFTReal)

3 >>> layernew .CreateField (fieldf_x)

4 >>> layernew .CreateField (fieldf_y)

������������ �������������

1 >>> point_coors =[[300, 450] , [750 , 700] , [1200 , 450] ,

2 ... [750 , 200] , [750 , 450]]

3 >>> for pt in point_coors:

4 >>> geom=ogr. CreateGeometryFromWkt (

5 ... 'POINT ({0} {1}) '.format(pt[0], pt [1]))

6 >>> feat=ogr.Feature(layernew .GetLayerDefn ())

7 >>> feat.SetField('x', pt[0])

8 >>> feat.SetField('y', pt[1])

9 >>> feat.SetGeometry (geom)

10 >>> layernew.CreateFeature (feat)

11 >>> newds.Destroy()

�����������fieldf_x�fieldf_y�������������

��� �feat.SetGeometry(geom)�������� ����������

� QGIS�� Quantum GIS������������ GIS������ Linux�UNIX�Mac

OS�Windows ������������� ��������� ���� http://qgis.org�

Page 18: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 6 · Python ��� GIS —— ������ ����� �

����� 1.1���������������������������

������������� ��

� 1.1 ��������

2.��

������� ��������� ����� ������

����� GIS �������������

�������������������������������

��������� ���������������� ���������

����������������������������������

��������������� ������������������

�����������������������������������

�� ��������� ���������

3.��

������ �������������������� ������

����� �� ������������������� ����

���������� ���������������������

��� ���������������� �

��� �� ���� GIS �������� ���������

���������������������������������

����� ���������� ���

4.���

��������������������������

��������������� �����������

���������������������������������

�������������������������� ����

������� ���

SF =a

b

Page 19: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 1 � � � · 7 ·

��a �������b �������� �����������

������������� 2 ���������������

���������������������������,�

� ��������������������������

�1 : 10000 �� ��� 1cm ��������� 10000cm�

1.1.3 ����

�������������– ��� ������

������������� ����� �����������

����������

GIS����������������������������

��������� 1.2������������������

����� �� GIS ��������������� GIS �������

�����-� ������������������������ GIS �

������������GIS�������������������

�����

� 1.2 ����

�������������� ��������� GIS ������

��������������������� ������ ���

��������������������� ��������

1.���������

�������������������� ��������

����������������������� ������

�������������������� ��

������������� (ϕ, λ)�� �� ���������

����� (x, y) ���� ��������������������

Page 20: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 8 · Python ��� GIS —— ������ ����� �

���� ��������� �1.1����� ������

x = f1(ϕ, λ)

y = f2(ϕ, λ)�1.1�

������������ ���� ������������

��������� ����������������������

����������� ����� ��������� �����

������������������������������

����������� �������� ������

����������������� �������������

������������������������� �������

����� ��������������������� �����

������������������������ ���������

��������

�������������������� ��������

��������������������� �� ����� �

� ������������ 90◦��� �������� ���

����������

2.������

������������� ��� 1.3��

� 1.3 �������

������������������������������

����������������������������������

�������������������

����� ���� �������������������

��������!����������)�"� ����������

����� ���� ��������� �������������

�� ����������� ������������ �����

��� 1.4��

Page 21: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 1 � � � · 9 ·

���� ������������� ����������

���������������������������������

����������������������� ����������

������������������������������������

����������

� 1.4 ��������������

�������������������� 1.5���������

����� �� ������ ���� � �������

���

� 1.5 �������

3.��������

�������������������������������

�����������������#�����������

1���–�����

��–������ ������������ 19 �� 20 �

Page 22: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�2� � GDAL ������

����������������������������

���������������������������������

�� GDAL/OGR����������������������

�# GDAL��������� ������OGR ������

�������������������������$���� GDAL�

�����������,����%�������� GDAL/OGR��

� GDAL �������������� OGR ������������

���� 1998 �����������!������������

�application programming interface�API���������GDAL �����

��� ���������������GDAL/OGR ������

������������� MapServer�GRASS�QGIS�MapGuide�OSSIM �

OpenEV ������GDAL/OGR ���������������� FME�

ArcGIS � Cadcorp SIS�

���$� GDAL �������������� Python ������

� GDAL/OGR � Python ������� 5 ������ gdal�ogr�osr�

gdal_array� gdalconst�

������������

�1�GDAL ����������������

�2�������

�3���1��������

�4������ ��

�5�����##��

�6����������

�7�GDAL ��� Python �������

2.1 GDAL ��

GDAL �� C++ �� ���������� ����� �GDAL

���������������������� ��������

��������

Page 23: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 2 � �� GDAL ������ · 43 ·

GDAL �� C++ ��������� Python ������GDAL �

������ SWIG�simplified wrapper and interface generator����� Python

� GDAL/OGR��������Python������ C++�������

GDAL����� 200������������������ ��

��� ArcInfo Grids�ERDAS Imagine�IDRISI�ENVI�GRASS�GeoTIFF�HDF4�

HDF5�ECW�MrSID�������� �� PNG�JPEG�TIFF���

2.1.1 GDAL ���

GDAL�������������� ����������� ���

��������� �GDAL �������������������

������ �

GDAL �� Python ����� Python � ��!��������

NumPy ����������������������������

1. GDAL ��

GDAL ����� ���� �������������� �

�� � "������������������ ��� ���

����������������������� OGC������

��� ����$��

���������� ������&�������������

����������� ��������"����������

GDAL � OGC �������� OGC ��� C++ API �������

���� OGC ������������� OGC ������������

���������������

2. GDAL �����

GDAL���������abstract data model����������� �

������������dataset�������coordinate system��!,���

��affine geo transform���� ��GCP������metadata������

�subdatasets domain���� ��image structure domain������ ��

�RPC�rational polynomial coefficient�domain�����imagery domain����

� ��XML �XML domains����1��raster band��##��color table�

�����overviews��

GDAL ��������

� SWIG ���)�������� C/C++ �������������Python�

Ruby�Perl�Java�C#������������������������

Page 24: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 44 · Python ��� GIS —— ������ ����� �

�1�GDALMajorObject ����������

�2�GDALDataset ���������������1��

���1������GDALDataset �*����1���������geo-

referencing transform��������

�3�GDALDriver ���� ����GDAL ����������

���� ����� � �� �

�4�GDALDriverManager���� �� ����� � GDALDriver��

3. GDAL �������

� GDAL 1.9.0 ��GDAL � 120 ������� ���������

����� ��� 200 ��� GDAL ����������������

��������������

� 2.1��� GDAL����������� ��� GDAL���

������������� ���� GDAL ������ �����

2.1.2 GDAL ����

GDAL ��������������� ����������

��������$��

1. GDAL ���

������� GDAL ������������1�������

���� �������������1�� �����*��1����

�������������������������� ���

�/�����

GDAL ������1������� OGC � ����

2.����

GDAL��������� OpenGIS WKT� �������������

Page 25: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�3� �� OGR �������

OGR������������������� GDAL������� 2�

���� GDAL ������������������� OGR ������

�����������������

�������������� GEOS �geometry engine - open source��

�������GEOS � JTS �JTS topology suite��������� C++ �

������ OpenGIS ������������ JTS ���������

�����GEOS ���������� C++ ��������������

PostGIS�QGIS�GDAL/OGR�MapServer ������� FME �������

Debian ���� Linux ��������� GEOS � OGR ��������

� Python���� Shapely�����������������������

�� GEOS ���������� 5 ������

3.1 OGR ��

OGR � GDAL �������������� GIS �������OGR

�������������������� ESRI Shapefile�PostGIS�Oracle

Spatial�MapInfo MID/MIF�MapInfo TAB ���������� 3.1 ���

OGR ����������

� 3.1 OGR ���������

���� �� ��� �����

ESRI ArcObjects ArcObjects �

Arc/Info Binary Coverage AVCBin �

Arc/Info .E00 (ASCII) Coverage AVCE00 �

AutoCAD DXF DXF �

Comma Separated Value (.csv) CSV �

ESRI Shapefile ESRI Shapefile � �

Geomedia .mdb Geomedia

Google Fusion Tables GFT � �

GML GML � �

������������������������������������ GNU�GNU

is not UNIX��

Page 26: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 82 · Python ��� GIS —— ��������������

���� �� ��� �����

GMT GMT � �

GRASS GRASS �

Idrisi Vector�.VCT� Idrisi �

KML KML � �

MapInfo File Mapinfo File � �

Memory Memory � �

PostgreSQL/PostGIS PostgreSQL/PostGIS � �

SQLite/SpatiaLite SQLite � �

VRT - Virtual Datasource VRT �

3.1.1 OGR ������

� GDAL ���OGR ���������������

�1�ogrinfo���������

�2�ogr2ogr����������

1. �� ogrinfo ��

����������� OGR ���������� OGR �����

���

1 $ ogrinfo --formats

2 Supported Formats:

3 -> "GRASS" (readonly )

4 -> "ESRI Shapefile " ( read/write)

5 ... ...

6 -> "Geoconcept " ( read/write)

�� Shapefile ���������

1 $ ogrinfo /gdata/hyd2_4l.shp

2 INFO : Open of `/gdata/hyd2 _4l.shp '

3 using driver `ESRI Shapefile ' successful .

4 1: hyd2_4l (Line String)

2. ogr2ogr����

����� ogr2ogr������

1 $ ogr2ogr -f "CSV" output.csv /gdata/hyd2 _4l.shp

Page 27: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 3 � �� OGR ������� · 83 ·

������ Shapefile ������� CSV �������

����� Shapefile ��� SpatiaLite ������ 6 ���� Spa-

tiaLite������������������������ .db�����

.sqlite������� ArcGIS Desktop ������ SpatiaLite ����

��

1 $ ogr2ogr -f SQLite -dsco SPATIALITE =YES spalite.db \

2 /gdata/region_popu.shp -nlt multipolygon

3.1.2 � Python �� OGR ���

� Python ��OGR ����� �����Class��

�1������� Geometry � OpenGIS �������������

������� WKB�WKT�������������� �������

�2���� Feature ������ ������������

��� ��

�3�� ��� FeatureDefn���� �����������

��� ������� �������������

�4����� Layer �����������������

�5������ DataSource������������������

�����

�6����� Driver�������������� Driver������

3.2 �� OGR �� Shapefile ��

Shapefile ������������������� OGR ��� Shape-

file�

3.2.1 �� OGR �

� Python��� OGR������� GDAL� OGR������

������������������������������

� ����� ������������������ ����

�����

�� OGR������� GDAL�������������������

1 >>> import ogr

������� ����

Page 28: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�4� ���������

�������������� ����������������� GIS

��������������&���������������� GIS��

������� GIS �������������� ��������

�������� ����������������������

�� ��� � !�����������������������

�������������������'��&������������

�� ���

�������������� ����������������

�������������������������������(��

��������� ������&�������������������

������� 2�3 ����������� ����������

����������������

��� GIS ��� �������������� PROJ.4 ������

"������ GIS��������� GDAL����� PROJ.4������

��� ������ osgeo.osr��������� ���������

�������

4.1 �� ������

��������� � GIS ��������������� �

� �������

4.1.1 ���������������

�����)���������)�������� � ����

�������������������������������

�������"��������

1.����

�����#��������������������������

�����������������������������

Page 29: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 4 � �� ����� · 119 ·

������ �

���������������������������� ���

�� ������������������������ ��������

$# �������*�����������������������

�����������������������������������

�������#����$��!�����������������

����������������������������������

����������

���������� ���������

2.����

���������������� ��$#���������

������������������ ������ �+����

�������������������#����%�!%��������

������������ ������� �����#�����#�

�����������������������������������

�������������

������������ �� � ���������������

���������������������������� � ����

����������������&������������

��������� ���% a�!% b������� ���

��"�� α������� e������� e′� ������⎧⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎩

α =a − b

a

e =a2 − b2

a

e′ =a2 − b2

b

�4.1�

3.���������

���� �����������������&��%�������

�������� ����������!!����� 1970 ������

��������������������������������

�����������������

4.1 ��������� ����������������� ��

�� IUGG����������������International Union of Geodesy and

Geophys��

Page 30: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 120 · Python ��� GIS —— ��������������

� 4.1 ����������

����� ����� � %/m ! %/m

�� 1952 ������ ���� 6378388 6356911.9461

�& 1954 ��� �������� 6378245 6356863.0188

� 1980 ��� 1975 � IUGG �"�� 6378140 6356755.2881

WGS84,GPS ��� WGS84 �� 6378137 6356752.3142

�� 2000 ����� — 6378137 6356752.3141

4.���

�������������������������������

��ellipsoid������������� ����� ��������

�������������� ��������������������

������� �������������������������

�������� ����������

���������������� ���������������

�����������������������������������

� ���������������������� �������

�������� �

4.1.2 PROJ.4�osgeo.osr ���������

1. PROJ.4 ��

PROJ.4 ��� GIS �'���������������������

���� GIS���������� PROJ.4�����GDAL��������

�� CoordinateTransformation��������������������MIT

���� C��������$����United States Geological Survey�USGS�

� Evenden� 1980� ��������� ��� Warmerdam������

PROJ.4��������������������������

������������� PROJ.4�������,������� C/C++

���PROJ.4 ��� Python ������� pyproj����MIT ����

PROJ.4������� ����������������������

���������������� PROJ.4�������������

���� PROJ.4������ �������������������

������ ����������������������

� Warmerdam � 2008 � 5 �� PROJ.4�http://trac.osgeo.org/proj������ MetaCRS �

���������� OSGeo ����

Page 31: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�5� ������������ Shapely

������������������#)��� GIS !!�����

���� � �������������� �����!!����

��������������������"�������� ������

!!�����������������������!!��������

�*��������������� GIS ��������

�������������������&����������� �

������������ ��������

����� OGR��������� ��������� Python���

�������������������������������� Shapely

�����

��� Shapely ��������������������������

�������������&����������������

5.1 Shapely ��

Shapely�������� �������� OGC��������OGC’s

simple feature access specification�OGC SFS�������� shapely.geometry

����������� ��� �� point������ �� multipolygon�

�� shapely.geometry.base.BaseGeometry����BaseGeometry����

��������� impl ���������BaseGeometry.area ����

BaseGeometry.impl['area']�

����� shapely.impl��������������������

���������������� �

Shapely !!������ 4 ����

�1�� shapely.geometry���� Python �������

�2���������� ����������'��������

�������� shapely.impl��

�3�� shapely.geos�� GEOS �������

�4�"�� libgeos��� C++ ����

Page 32: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 148 · Python ��� GIS —— ��������������

5.1.1 JTS�GEOS � Shapely

JTS�GEOS� Shapely ���������JTS�� Java������

����������GEOS ��� C++ ��������� Shapely ��

�� GEOS � Python ���

�� Python ������� Shapely ���������������

��!������� JTS �!���� GEOS�

����� JTS�GEOS�Shapely�������� JTS �������

1. JTS ��

JTS ������ Vivid Solutions�������� Java API ������

������������������������ OGC��������

�������������������� API�JTS ���� Java���

����������� OpenGIS ���������simple feature interface

specification�SFS�������������������������

����� ������JTS ������������ ��� � ���

�������������������������

JTS�������� GIS����� GeoTools���GeoTools�GeoServer

� uDig �"���

2. GEOS ��

GEOS������ ��� ������������GEOS�����

���� ��� ����������� ���������� ���

������ ��GEOS � JTS� C++ ��� � JTS ���������

� C++ ���� JTS �������� OpenGIS ������ SQL ���

�������������� JTS ��������

3. Shapely ��

Shapely �� GEOS ���� Python �Python �� ctypes �����

Python ���� GEOS ����Shapely �����������������

������� �������������

5.1.2 Shapely ��������

1.���������

� Shapely���������������������������

� � http://www.vividsolutions.com�

Page 33: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 5 � ������������ Shapely · 149 ·

������������������������� ������

��������

��������������������

�1���������������������������������

�� 0�

�2����������������������#��������

������������������ 1�

�3�����������������������������

������������������������%��������

� 2�

����������������������!��� Shapely ��

�����

2. Shapely ������

� Shapely �������������������������

��������������Shapely �������������

�������#��������������#��������

��

3.���

���������������������� ���������

&����������� ����������� DE +������

����� 5.3.3 ��

Shapely������ GEOS��������� ����

�1����equals������ ������

�2���disjoint������ �������

�3����intersects������ ���������������

�4����touches������ ����������������

���

�5����crosses������ �������������

�6���within������ A ������� B ���

�7���contains������ B ������� A ������

�# �������

�8��&�overlaps������ �����������������

��������

Page 34: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�6� �� SpatiaLite �����

����������������������� GIS ��������

�����������������������������������

����������������������������� GIS �����

�������� GIS ������������������ GIS �����

�������������������

������ GIS�������������������������

Shapefile�������������������������������

���� GIS ��������� GIS �����������������

� ESRI � Coverage ����� GRASS GIS ���������������

��������������������������������

�������MySQL�PostgreSQL ������������� PostgreSQL

� PostGIS ���������������������������

��������������������������������

� SpatiaLite ������������������ ����������

Python ��������������������������������

������������������� GIS ����������

���

��� SpatiaLite������������������������

������ PostGIS �������� MySQL��������

���������� Python��� SpatiaLite�����������

�������

�1����������

�2�SpatiaLite ��������������

�3�� Python ��� SpatiaLite ������

�4�SpatiaLite �������

�5��� SpatiaLite ����������

�6��� SpatiaLite �������� ��

�����������������������������

Page 35: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 182 · Python ��� GIS —— �������������

6.1 ����������

������������������������������

���������������� �����������

���������������� ISO SQL/MM�ISO/TC 211���

OGC SFSQL���������������������������

���� �����ISO/TC 211���������� � ���

���������������� SQL ����������

����������������������������

WKT ��������/�����������������������

���������������������� WKT ����

�����������������������������

������������������������������ ��

��������������������������������

� ����� ���� ���������10km ���������

� ����� ������������������������

��������� �������������������������

�������������� � �������

6.1.1 SQLite � SpatiaLite ��

���� SQLite�SpatiaLite ������

1. SQLite ��

SQLite ��� Alpha ����� 2000 � 5 �����������

SQLite 3�SQLite � ACID������������������

�� C������������������������������

������������������� KB������SQLite ����

��������������������������������

������� Windows/Linux/UNIX ������������� �

����� �� Python�PHP�Java�C#�Tcl����� ��� ��open

database connectivity�ODBC����� MySQL�PostgreSQL �����

���������SQLite �������� SQLite �������

����������������� ��������� SQLite�

� ACID�������� ���������������atomicity�����

�consistency������isolation�����durability��

Page 36: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 6 � �� SpatiaLite ����� · 183 ·

������������ ���� ������Python 2.5����

��� SQLite ���

2. SpatiaLite ��

��� SpatiaLite �������������SpatiaLite � SQLite ����������SpatiaLite � �������� PostGIS ���� OGC

��������������� SQLite������������ SQLite�

�������

3. SpatiaLite ���

SpatiaLite� SQLite������������ OGC���������

���������

�1������ ������������� ����� ��� �

��� ���� �

�2���������������spatial reference identifier�SRID��

���������

�3������������������� ����

��

�4�������� WKT � WKB ���Shapefile ������

�5��������������� �������������

����� ����������������

�6� OpenGIS ������������

�7��� PROJ.4 � EPSG ���������

�8��� GNU libiconv ���������

�9��� SQLite � R-tree ������������������

MBR �����������

�10����������������������������

��� ������������������

�11�VirtualShape ��� SQLite �� Shapefile ���������

������ Shapefile���� SQL� ���������� Shapefile�

�12�VirtualText��� SQLite ����������������

����������������������� SQL � ��������

������������

� ����������� OGC � ��� OGC �����

Page 37: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�7� GIS ����� Mapnik ������

��������������������������������

����������� ������������������������

�������������������

�������� ���������������1��%�

���������2� ����������� ��������

����� GIS � ����������� Artem Pavlenko�����

����� Mapnik�OpenStreetMap�MapBox��'� Mapnik �������

���� ��

����� � Mapnik�Mapnik ����������������

���������%����Mapnik ���� ���������

������ ����������� GIS ��� Web ������

�� Python �������� Mapnik�����������������

Python �����������������������������

��������������

Mapnik ���������������� C++ ��������

���� Python "������������ XML �����������

�����������

Mapnik �� AGG�Anti-Grain geometry����������%��(�

������ GIS �����������"������#������

����(�����$����������� 3����scalable vector

graphics�SVG�������������� Google Maps ��������

����Mapnik ���� OpenStreetMap �������

���������

�1��� Mapnik ��������������

�2�� Mapnik ����������

�3������������ ����������

�4����������������

Page 38: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 7 � GIS ����� Mapnik ����� · 233 ·

7.1 Mapnik �����������

Mapnik����������������)��������Mapnik�

�������������������� ����� ���

� Python����Mapnik������� C++����������

���� Python������������������� �����Mapnik

���� Python ������� �����* Mapnik ��� �

���������!��!���

Debian 8 ����� Mapnik 2�Mapnik 2 ���� ��������

������� �����Mapnik 2 ��� Python 2 ��������'�

� Mapnik 3 ���������Mapnik 2 � Mapnik 3 ��������

Debian 9�Ubuntu 18.04� Debian 10 ��Mapnik 3 � ����������

�������������������������

1 # aptitude install python3-mapnik

Python ���� Mapnik ������2015 �������� Node.js �

��Python � Mapnik ��� ���

7.1.1 Mapnik ��

Mapnik �����������������������������

������������������Mapnik ��������

Mapnik � API �������������� ��������� PNG

� PDF��

��� ��� Python ��������������

1 $ python3 -c "import mapnik;print (mapnik. file )"

2 /usr/lib/python3/dist -packages/mapnik/ init .py

7.1.2 ���������

Mapnik ���������������������4����

�symbolizer��� 7.1�������� ����������������

��������������������������������

�������� ���� ����4������������

���Mapnik ���������������������

� ��� � https://github.com/mapnik/mapnik/issues/2773 ���� ���

Page 39: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 234 · Python ��� GIS —— �������������

� 7.1 Mapnik ����

� Mapnik���� ���������������������� �

� ��������������� CSS �� z-index ���������

�� ����

1.�����

Mapnik ����� �����������������&��

����� ��������������������� Shapefile����

������������������� � �������������

��

� GIS �������� �������������������

� ����� ����������������������������

�����������������������������

�������������������������� ����

����� ��������������������� �������

��������������������������� ������

��������#��������� ����"$������ ��

��������������� � WebGIS ��� �

2.���

��� Mapnik�������� Mapnik������ ������

��Mapnik ��� ������ Z %�������� ��������

� � �������$�� ����-��� �� �� ��������������

��������������������������������� ��� �������

�� ��� ���

Page 40: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�8� �� Basemap �������

�� GIS ����������������� GIS ����������

�����������������������GIS�����������

�������������������������

Matplotlib� Linux��������� 2007��������������

������ GIS����������������������������

Matplotlib ��� Basemap������Toolkit������������

��������� �

�����Basemap����������������������

���������������� GIS �����������

Matplotlib � Python ������������� NumPy ������

��Matplotlib ����������������������������

�������Matplotlib �� NumPy� SciPy�������������

�����������������

Matplotlib �� Basemap ���������������Basemap ��

� Matplotlib ���������������������������

MATLAB �����IDL����GrADS ����������� Python

��������������PyNGL� CDAT�climate data analysis tools��

8.1 Basemap ���������

����� Basemap ����������

8.1.1 ��

1. Basemap��

Basemap ��� ������� PROJ.4 ��� 4 ������

������� 25 ������������ Basemap ����

� Geos �������������������������

� Basemap � 2020 ��� Python 2.7 ������ ���2020 ��� Python 2.7 �

�� �Basemap ����� ��� Cartopy ������������������� ��

Page 41: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

8 � �� Basemap ����� · 273 ·

��Basemap ��������������������������

���� Shapefile ����

Basemap ��������������������

Basemap ����� ��� ��� ���� CDAT � Python ��

������������������Basemap�����������

�������������������� ������

2.��

Basemap� Python������������������������

������������ pip �� �� �

� Debain/Ubuntu ��Basemap ��������� �� �

1 # apt-get install python3-mpltoolkits.basemap

������������� ���������������

Git ������� ���Basemap ��� Geos ������ Basemap ��

������ GEOS_DIR�� libgeos_c.h� geos_c.h����� �� ��

���������

8.1.2 Basemap ����

1. Basemap��������

���� Python ��� Basemap ���������������

���� Basemap� plt�������

1 >>> from mpl_toolkits.basemap import Basemap

2 >>> import matplotlib .pyplot as plt

����� �����

1 >>> bsmap=Basemap()

��� Basemap�������� �����������

�� ����� (0, 0)� Plate Carree�� �������� ��

��������� drawcoastlines()�������

1 >>> bsmap.drawcoastlines ()

2 >>> plt.show ()

� CDAT � Python ��cdat-lite���������� ��� 6.0.1���� 2015 � 12 ��

� ������������������� Plate Carree ������ Ptolemy ���

������x=lon; y=lat����������������������������

������

Page 42: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 274 · Python ��� GIS —— ����� �����

���������������������� ����Matp-

lotlib ������������������������� plt.savefig

(file_name)��������������� show() ��������

������ ����

��������������������� 8.1����������

���������

1 >>> plt.savefig('xx_test.png')

� 8.1 ����

2.� Basemap�������

������������������������������

�������������������������������

� Basemap ������������ �������������

�ortho��� ��drawmapboundary()�������

1 >>> bsmap=Basemap(projection ='ortho',lat_0=0, lon_0=105)

2 >>> bsmap.drawmapboundary (fill_color='aqua ')

3.����������

���� ���������������������

�� fillcontinents()����color ��������� �� gry�

lake_color��������������� aqua����������

������������ 8.2��

1 >>> bsmap.fillcontinents (color= 'coral',lake_color='aqua ')

Page 43: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

�9� Python ������ GIS ���

��� GIS �������� Python ��������������

���� PyShp�GeoJSON�Descartes�GeoPandas�Folium������

���� ���������

PyShp���� Shapefile � �GeoJSON� �� GeoJSON������

�Descartes �������GeoPandas ����������Folium �

� Web �� �������

9.1 �� PyShp � Shapefile

��� PyShp�Python Shapefile Library�������� Shapefile ���

� Python��OGR��������#����� �� ������ PyShp

��� Shapefile�������������

9.1.1 PyShp ������

PyShp���� Python��� Python 2.4-3.x������ Shapefile�.shp�

.shx�.dbf ���� �� ������ ������ ���������

�������� ��������������

PyShp �������� Google Code������ GitHub�https://git-

hub.com/GeospatialPython/pyshp����������PyShp ��� Reader�

Writer � Editor ������ Shapefile ��� �!����� PyShp 2.0

�� �������� Editor����� Reader�� Writer�����

�� �� Debian 10 ���������� PyShp ���

1 # aptitude install python3-pyshp

Debian 9� Ubuntu 18.04���� PyShp��� �� �������

�������� ��� PyShp ����� pip �� �� �

1 $ pip3 install pyshp

������ Python ����� ��������� shapefile�

1 >>> import shapefile

Page 44: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

9 � Python ������ GIS ��� · 303 ·

9.1.2 �� Shapefile

PyShp ��� Reader ����� Shapefile ������������

� Shapefile ������������

�����������������������������

������������������������������

�parts�������������

����� 4 ����

�1������shapeType���� ��������������shapeType

=1��shapeType=3����shapeType=5��

�2��� ��bbox������������� ����� ��

�3�����parts����������� ����������

�������

�4����points���� ������������

���������������������� ���������

���������������

1.�������� Shapefile

���� Shapefile� ������� Reader�������� Shapefile�

��������������!����Shapefile�����������

����������� .shp � .dbf ����

1 >>> import shapefile

2 >>> sf=shapefile .Reader("/gdata/GSHHS_c")

3 >>> sf2=shapefile .Reader("/gdata/GSHHS_c.shp")

4 >>> sf3=shapefile .Reader("/gdata/GSHHS_c.dbf")

��������"������������������ OGR

�������� OGR�����������#������������

�����

� Python��������������� Shapefile������

������� ��������������� URL�ZIP�����

�������������� Shapefile�

1 >>> myshp=open("/gdata/GSHHS_c.shp", "rb")

2 >>> mydbf=open("/gdata/GSHHS_c.dbf", "rb")

3 >>> r=shapefile .Reader(shp=myshp , dbf=mydbf)

Page 45: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

· 304 · Python ��� GIS —— ����� �����

� ����������.shx������.shx��� Shapefile�����

����������������� ���� Shapefile�������.shx

����� PyShp �����������

2.���������

Shapefile ������� �����������������

Shapefile ������Shapefile �������� Reader�� shapes()�

shape()�����shapes()���������������������

������������ shape() �����������������

�������

������� shapes()��� Shapefile ����

1 >>> shapes=sf.shapes()

2 >>> len(shapes)

3 3784

���� iterShapes()��!� Shapefile �����

1 >>> len(list(sf.iterShapes ()))

2 3784

�� shapeType�bbox�points�parts�������������

���������������

1 >>> for name in dir(shapes [3]):

2 ... if not name.startswith ('__'):

3 ... name

4 'bbox '

5 'parts'

6 'points '

7 'shapeType '

����������������

1 >>> shapes [3]. shapeType

2 5

��� shapeType���shapeType ��� Shapefile � �������

���

������������bbox ����������������

���� shapeType ��shapeType ==0�� �� AttributeError�����

Page 46: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� �

� 8.20 ������

� 8.21 �������

� 8.24 �����������

Page 47: Python - OSGeo › pygis › misc › pygis-bukun.pdf · Python 与开源GIS ——数据处理、空间分析与地图制图 卜 坤 著 北 京

� 9.6 ������

� 9.7 ���������� � 9.8 ���������

� 9.10 GeoPandas ��������

� 9.11 GeoPandas � union �����

� 9.15 GeoPandas � identity �����