📜  在 python 中读取 shp(1)

📅  最后修改于: 2023-12-03 15:23:16.658000             🧑  作者: Mango

在 Python 中读取 shp 文件

在 GIS 领域,.shp 格式是非常常见的矢量数据文件格式,例如道路地图、国界线等。Python 是一门非常强大的编程语言,也越来越多地用于地理信息处理和空间数据分析。因此,在 Python 中读取和加载 .shp 数据文件是必要的学习内容之一。

读取 shp 文件的两种方法
方法一:使用 geopandas 包

GeoPandas 是一个基于 pandas 库的 GIS 库,它提供了一个能够同时处理矢量和栅格地理数据的一些方便的数据结构和函数,可以帮助我们更加容易地读取空间数据集。

下面是一个例子,展示了如何使用 GeoPandas 读取 .shp 文件:

import geopandas as gpd

shp_file = "path/to/your/file.shp"
gdf = gpd.read_file(shp_file)

其中,shp_file 是你的 .shp 文件的路径。使用 read_file 函数将数据加载为 GeoDataFrame。

方法二:使用 pyshp 包

PyShp 是一个用于读取、写入和编辑 ESRI Shapefile 文件的 Python 包。它提供了一些方便的工具来读取和处理 .shp 文件。

下面是一个例子,展示了如何使用 PyShp 读取 .shp 文件:

import shapefile

shp_file = "path/to/your/file.shp"
sf = shapefile.Reader(shp_file)

其中,shp_file 是你的 .shp 文件的路径。使用 Reader 函数将数据加载为 shapefile.Reader 对象。

GeoDataFrame 和 shapefile

无论你使用哪种方法读取 .shp 文件,你最终都可以将它转换为 GeoDataFrame 或 shapefile.Reader 对象。

  • GeoDataFrame:是一个 pandas.DataFrame 的子类,它包含了空间信息。GeoDataFrame 是使用 GeoPandas 包读取 .shp 文件时返回的数据类型。
  • shapefile.Reader:是 pyshp 包中的一个对象。它包含了 .shp 文件和相关文件的所有数据。

如果你使用的是 GeoPandas,你可以像处理 pandas.DataFrame 一样处理 GeoDataFrame。

如果你使用的是 pyshp,你可以使用 Reader 对象的属性和方法来获取数据,例如:

# 获取每个 shape 中的坐标点
shape_records = sf.shapeRecords()
points = [shape_record.shape.points for shape_record in shape_records]

# 获取字段名
fields = sf.fields
field_names = [field[0] for field in fields[1:]]

# 获取属性值
records = sf.records()
总结

本文介绍了在 Python 中读取 .shp 文件的两种方法,并介绍了如何将它们转换为 GeoDataFrame 或 shapefile.Reader 对象。通过本文的介绍,相信读者已经掌握了基本的数据读取技能。