01-地理数据介绍
源代码请看此处
1.1 Python地理空间矢量数据简介
%matplotlib inline
import pandas as pd
import geopandas
导入地理数据
地理空间数据通常可以从特定的GIS文件格式或数据存储中获得,如ESRI shapefiles、GeoJSON文件、geopackage文件、PostGIS(PostgreSQL)数据库、...
我们可以使用GeoPandas库中的geopandas.read_file函数,来读取其中的很多GIS文件格式(依靠的是fiona库,它是GDAL/OGR的python接口)。
例如,我们先读取一个包含世界所有国家边界的shapefile文件,zip文件放到在/data目录下)。
countries=geopandas.read_file("zip://data/ne_110m_admin_0_countries.zip")
countries.head()
featurecla | scalerank | LABELRANK | SOVEREIGNT | SOV_A3 | ADM0_DIF | LEVEL | TYPE | ADMIN | ADM0_A3 | ... | NAME_KO | NAME_NL | NAME_PL | NAME_PT | NAME_RU | NAME_SV | NAME_TR | NAME_VI | NAME_ZH | geometry | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Admin-0 country | 1 | 6 | Fiji | FJI | 0 | 2 | Sovereign country | Fiji | FJI | ... | 피지 | Fiji | Fidżi | Fiji | Фиджи | Fiji | Fiji | Fiji | 斐濟 | MULTIPOLYGON (((180.00000 -16.06713, 180.00000... |
1 | Admin-0 country | 1 | 3 | United Republic of Tanzania | TZA | 0 | 2 | Sovereign country | United Republic of Tanzania | TZA | ... | 탄자니아 | Tanzania | Tanzania | Tanzânia | Танзания | Tanzania | Tanzanya | Tanzania | 坦桑尼亚 | POLYGON ((33.90371 -0.95000, 34.07262 -1.05982... |
2 | Admin-0 country | 1 | 7 | Western Sahara | SAH | 0 | 2 | Indeterminate | Western Sahara | SAH | ... | 서사하라 | Westelijke Sahara | Sahara Zachodnia | Saara Ocidental | Западная Сахара | Västsahara | Batı Sahra | Tây Sahara | 西撒哈拉 | POLYGON ((-8.66559 27.65643, -8.66512 27.58948... |
3 | Admin-0 country | 1 | 2 | Canada | CAN | 0 | 2 | Sovereign country | Canada | CAN | ... | 캐나다 | Canada | Kanada | Canadá | Канада | Kanada | Kanada | Canada | 加拿大 | MULTIPOLYGON (((-122.84000 49.00000, -122.9742... |
4 | Admin-0 country | 1 | 2 | United States of America | US1 | 1 | 2 | Country | United States of America | USA | ... | 미국 | Verenigde Staten van Amerika | Stany Zjednoczone | Estados Unidos | Соединённые Штаты Америки | USA | Amerika Birleşik Devletleri | Hoa Kỳ | 美国 | MULTIPOLYGON (((-122.84000 49.00000, -120.0000... |
5 rows × 95 columns
countries.plot()
我们可以观察到:
使用 .head()可以得到数据集的前五列,就像使用Pandas一样
有一个 geometry列,用于存储不同的国家的边界多边形
我们可以使用 .plot()方法来快速得到数据的基本可视化效果
1.2 GeoDataFrame 介绍
我们使用GeoPandas库来读取地理空间数据,然后返回一个GeoDataFrame对象。
type(countries)
geopandas.geodataframe.GeoDataFrame
一个GeoDataFrame包含一个表格式的地理空间数据集
它有一个geometry列,用来保存几何信息(或GeoJSON要素)
其他列是描述每个几何体的属性(或GeoJSON属性)
这样的GeoDataFrame就像pandas.DataFrame一样,但它具有一些额外的功能,用于处理地理空间数据
一个.geometry属性,总是返回带有几何信息的列(返回一个GeoSeries)。列名本身不一定是 geometry,但它总是作为.geometry属性被访问。
它有一些额外的方法来处理空间数据(面积、距离、缓冲区、交叉点......),我们将在后面的教程中看到
countries.geometry
0 MULTIPOLYGON (((180.00000 -16.06713, 180.00000...
1 POLYGON ((33.90371 -0.95000, 34.07262 -1.05982...
2 POLYGON ((-8.66559 27.65643, -8.66512 27.58948...
3 MULTIPOLYGON (((-122.84000 49.00000, -122.9742...
4 MULTIPOLYGON (((-122.84000 49.00000, -120.0000...
...
172 POLYGON ((18.82982 45.90887, 18.82984 45.90888...
173 POLYGON ((20.07070 42.58863, 19.80161 42.50009...
174 POLYGON ((20.59025 41.85541, 20.52295 42.21787...
175 POLYGON ((-61.68000 10.76000, -61.10500 10.890...
176 POLYGON ((30.83385 3.50917, 29.95350 4.17370, ...
Name: geometry, Length: 177, dtype: geometry
type(countries.geometry)
geopandas.geoseries.GeoSeries
countries.geometry.area
0 1.639511