python中shapefile库读取shapefile文件信息

 更新时间:2023年06月29日 10:03:35   作者:努力搬砖的giser  
本文主要介绍了python中shapefile库读取shapefile文件信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

开发准备

安装命令:pip install pyshp

使用导入:import shapefile

Shapefile文件的读操作

通过创建Reader类的对象进行shapefile文件的读操作。

file = shapefile.Reader('shapefile name')

“几何数据”通过Reader类的shapes( )和shape( )方法来读取,二者的区别在于:shapes()方法不需要指定参数,其返回值是一个列表,包含该文件中所有的"几何数据"对象,而shape( )方法则需要通过指定参数返回所需要的"几何数据"对象。

shape = file.shape(i)#读取第i+1个要素,索引序列从0开始(参数是整数类型)
shapes = file.shapes()#读取全部要素
# -*- coding: utf-8 -*-
import shapefile# 使用pyshp
file = shapefile.Reader("E://arcgisData//行政区划数据//省界_region.shp")#读取
#读取元数据
print(str(file.shapeType))  # 输出shp类型
print(file.encoding)# 输出shp文件编码
print(file.bbox)  # 输出shp的文件范围(外包矩形)
print(file.numRecords)  # 输出shp文件的要素数据
print(file.fields)# 输出所有字段信息
# print(file.records())  # 输出所有属性表

补充 shp类型信息

shp属性表字段信息

字段索引字段类型
C字符,文字
N数字,带或不带小数
F浮动(与“N”相同)
L逻辑,表示布尔值True / False值
D日期
M备忘录,在GIS中没有意义,而是xbase规范的一部分

展示单个要素
实现代码:

import shapefile  # 使用pyshp
from matplotlib import pyplot as plt
file = shapefile.Reader("E://arcgisData//行政区划数据//省界_region.shp")
border_shape = file
# 通过创建reader类的对象进行shapefile文件的读取
# border_points
border = border_shape.shapes()
# .shapes()读取几何数据信息,存放着该文件中所有对象的 几何数据
# border是一个列表
border_points = border[0].points
print(border_points)# 返回第1个对象的所有点坐标
# border_points = [(x1,y1),(x2,y2),(x3,y3),…]
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.grid()  # 添加网格线
ax.axis('equal')
plt.show()

展示效果:

shapefile文件的写操作

创建点状要素类

import shapefile  # 使用pyshp
file = shapefile.Writer("E://arcgisData//test//站点_2")#新建数据存放位置
#创建两个字段
file.field('FIRST_FLD')
file.field('SECOND_FLD','C','40')     #'SECOND_FLD'为字段名称,C代表数据类型为字符串,长度为40
file.point(1,1)
file.record('First','Point')
file.point(300,10)
file.record('Second','Point')
file.point(400,30)
file.record('Third','Point')
file.point(200,200)
file.record('Fourth','Point')
#写入数据
file.close()

创建线状要素类

import shapefile  # 使用pyshp
file = shapefile.Writer("E://arcgisData//test//polyline")#新建数据存放位置
#创建两个字段
file.field('FIRST_FLD')
file.field('SECOND_FLD','C','40')     #'SECOND_FLD'为字段名称,C代表数据类型为字符串,长度为40
file.line([[[1,5],[5,5],[5,1],[3,3],[1,1]]])
file.record('First','polyline')
file.line([[[1,500],[300,30],[1,16]]])
file.record('Second','polyline')
#写入数据
file.close()

创建面状要素类

import shapefile  # 使用pyshp
file = shapefile.Writer("E://arcgisData//test//polygon")#新建数据存放位置
#创建两个字段
file.field('FIRST_FLD')
file.field('SECOND_FLD','C','40')     #'SECOND_FLD'为字段名称,C代表数据类型为字符串,长度为40
file.poly([[[1,5],[5,5],[5,1],[3,3],[1,1]]])
file.record('First','polygon')
file.poly([[[1,500],[300,30],[1,16],[1,500]]])
file.record('Second','polygon')
#写入数据
file.close()

到此这篇关于python中shapefile库读取shapefile文件信息的文章就介绍到这了,更多相关python读取shapefile文件信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python删除列表中特定元素的几种方法

    python删除列表中特定元素的几种方法

    这篇文章主要介绍了python删除列表中特定元素的几种方法,文章围绕主题展开详细的内容介绍,具有一定的参考价价值,需要的小伙伴可以参考一下
    2022-05-05
  • python类中super() 的使用解析

    python类中super() 的使用解析

    super() 函数是用于调用父类(超类)的一个方法。这篇文章主要介绍了python类中super() 的使用,需要的朋友可以参考下
    2019-12-12
  • Python遍历目录的4种方法实例介绍

    Python遍历目录的4种方法实例介绍

    这篇文章主要介绍了Python遍历目录的4种方法实例介绍,本文讲解了使用os.popen运行shell列表命令、利用glob模块、利用os.listdir(推荐)、利用os.walk(推荐)等4种方法,需要的朋友可以参考下
    2015-04-04
  • Python streamlit库快速构建交互式Web应用

    Python streamlit库快速构建交互式Web应用

    Streamlit 是一个专为数据科学家和机器学习工程师设计的Python库,它可以快速构建交互式Web应用,下面就来详细的介绍一下streamlit库的使用,感兴趣的可以了解一下
    2025-12-12
  • Python实现准确获取PDF文件中的标题

    Python实现准确获取PDF文件中的标题

    想要在PDF文件中,解析获取全部的标题,是一件比较麻烦的事情,这篇文章将介绍一种较为准确的提取标题的方式,感兴趣的小伙伴可以了解一下
    2024-02-02
  • Python使用sorted对字典的key或value排序

    Python使用sorted对字典的key或value排序

    这篇文章主要介绍了Python使用sorted对字典的key或value排序,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • python 利用栈和队列模拟递归的过程

    python 利用栈和队列模拟递归的过程

    这篇文章主要介绍了python 利用栈和队列模拟递归的过程,文中并通过两段代码给大家介绍了下递归和非递归的区别,需要的朋友可以参考下
    2018-05-05
  • 一文带你了解Python中的延迟绑定

    一文带你了解Python中的延迟绑定

    Python中的延迟绑定是指在嵌套函数中,内部函数在被调用时才会绑定外部函数的变量,而不是在定义内部函数时就绑定。本文将通过一些例子带大家深入了解Python中的延迟绑定,感兴趣的可以了解一下
    2023-05-05
  • pytorch实现对输入超过三通道的数据进行训练

    pytorch实现对输入超过三通道的数据进行训练

    今天小编就为大家分享一篇pytorch实现对输入超过三通道的数据进行训练,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python使用Tkinter库如何设置tkinter ttk框架背景颜色

    Python使用Tkinter库如何设置tkinter ttk框架背景颜色

    本文介绍了在Python的Tkinter库中,如何使用style.configure方法为ttk框架设置背景颜色及其他样式属性,以定制美观的GUI界面
    2024-09-09

最新评论