如何利用python读取shp文件并且读取后选取指定省份?

在我们的学习过程中,不可避免要使用到shp文件,但是shp文件有的时候实在是太复杂啦,刚开始我实在是害怕用到shp文件,因为有些文件可能包含很多地区的边界线,也可能包含省界的边界线,可能包含的是县级的边界线,其中包含的信息很多,但是我们可能需要的只是一个省或者一个地区范围内的shp文件,这种情况我们应该怎么去从大的shp文件中把自己想要的shp文件中拆出来呢?

这里主要使用的模块是shapefile,shapefile是GIS中非常重要的一种数据类型,在ArcGIS中被称为要素类(Feature Classes),其中的要素主要包括点(point)、线(polyline)和多边形(polygon)。Python脚本是ArcGIS官方推荐的脚本语言,通过Python脚本能够很方便的调用ArcGIS中的各种工具和函数批量完成所需操作。本文所使用的这个库(Python Shapefile Library)是一个Python库,用于在Python脚本中对ArcGIS中的Shapefile文件(.shp,.shx,.dbf等格式)进行读写操作。

接下来看看我们的代码吧!首先导入我们需要的一些模块:

import shapefile 
import geopandas as gpd
from matplotlib import pyplot as plt

 接下来,我们读取下载的shp文件中的dbf,这里的shp文件能够满足我们日常需要使用的中国范围内的省界啦,如果有需要的话可以私信我哦!

files=shapefile.Reader(r'C:\Users\sha\Desktop\study\中国省级行政区shp\省界\省界_region.dbf',encoding='gbk')

接下来我们对我们的这个shp包含的东西进行一个查看:

records=files.records()
# 输入records可以查看shp的border的每组代表的含义

这样我们就可以看出,每个省的边界的代码是多少啦,在前面的数值就是在这个列表中对应的序号。

接下来进行读取:(这里就需要对shp文件压缩包中也进行读取哦)

file=shapefile.Reader(r'C:\Users\sha\Desktop\study\中国省级行政区shp\省界\省界_region.shp')
border_shape = file
# 通过创建reader类的对象进行shapefile文件的读取
# # border_points
border = border_shape.shapes()

# # .shapes()读取几何数据信息,存放着该文件中所有对象的 几何数据
# # border是一个列表

这样,我们可以将border读出来成为一个列表,然后我们查看我们需要的是哪个省的,然后读取这个border中对应的那个省:

border_points = border[30].points
print(border_points)# 返回第1个对象的所有点坐标

读取出来后进行代码的绘画:

x, y = zip(*border_points)
# x=(x1,x2,x3,…)
# y=(y1,y2,y3,…)

fig, ax = plt.subplots()  # 生成一张图和一张子图
# plt.plot(x,y,'k-') # x横坐标 y纵坐标 ‘k-’线性为黑色
plt.plot(x, y, color='#6666ff', label='fungis')  # x横坐标 y纵坐标 ‘k-’线性为黑色

ax.axis('equal')

 这样就好啦,比如这里我绘画的是重庆市的,所以我们选取的是代码30。效果图就是这样的:

初次见面,请多关照!希望能解决你的一点小烦恼哦!

一个也也也也在努力学习python的ocean小菜鸟!

水平有限,欢迎指正!!!

欢迎评论、收藏、点赞、转发、关注。

关注我不后悔,记录学习进步的过程~~

  • 10
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值