Python: 只使用了 shapefile 的一部分
Python: Only using part of a shapefile
我正在使用 Python 3.6 创建显示北美降水数据的地图。到目前为止,我的代码将我的数据提取到 shapefile
中,然后将其绘制在地图上。
我的问题是我下载的 shapefile
包含所有大陆的形状。我想知道有没有一种方法只能从我的 shapefile
阅读北美大陆的内容?
如果这不可能,那么有人知道我在哪里可以下载只有北美的 shapefile
吗?谢谢!
这是我的代码中读取 shapefile
:
的部分
import shapefile
sf=shapefile.Reader('continents')
这是 shapefile 的 link。
看一下您提到的 shapefile,我们可以看到它的属性 Table(即 "CONTINENT")中有一个属性。因此,我们需要搜索所有的形状和select符合你想要的大陆(北美)的形状,像这样:
import shapefile
#read the shapefile
sf=shapefile.Reader('continent.shp')
#obtain shapes and its records
#the shapes are the actual coordinate points
#the record contains all attributes related to each shape
shape_records = sf.shapeRecords()
#search for the ones with desired records
#this shapefile has only one attribute calles CONTINENT
desired_shapes = []
for s in shape_records:
if s.record[0] == 'North America':
desired_shapes.append(s.shape)
#or do whatever you want with that element s.shape is the actual shape
如果您想查看描述 shapefile
用法的 this 页面。使用工具(如 QGis)查看数据具有哪些属性非常有用,这样您就可以继续以编程方式检测它们。
我正在使用 Python 3.6 创建显示北美降水数据的地图。到目前为止,我的代码将我的数据提取到 shapefile
中,然后将其绘制在地图上。
我的问题是我下载的 shapefile
包含所有大陆的形状。我想知道有没有一种方法只能从我的 shapefile
阅读北美大陆的内容?
如果这不可能,那么有人知道我在哪里可以下载只有北美的 shapefile
吗?谢谢!
这是我的代码中读取 shapefile
:
import shapefile
sf=shapefile.Reader('continents')
这是 shapefile 的 link。
看一下您提到的 shapefile,我们可以看到它的属性 Table(即 "CONTINENT")中有一个属性。因此,我们需要搜索所有的形状和select符合你想要的大陆(北美)的形状,像这样:
import shapefile
#read the shapefile
sf=shapefile.Reader('continent.shp')
#obtain shapes and its records
#the shapes are the actual coordinate points
#the record contains all attributes related to each shape
shape_records = sf.shapeRecords()
#search for the ones with desired records
#this shapefile has only one attribute calles CONTINENT
desired_shapes = []
for s in shape_records:
if s.record[0] == 'North America':
desired_shapes.append(s.shape)
#or do whatever you want with that element s.shape is the actual shape
如果您想查看描述 shapefile
用法的 this 页面。使用工具(如 QGis)查看数据具有哪些属性非常有用,这样您就可以继续以编程方式检测它们。