Python对Shapefile文件读取(PyShp)与窗体构建(Tkinter)

         该文章对想要学习PyShp或Tkinter的或许会有帮助,建议对照源码查看该文章,程序源码在资源中获取-_-,源码链接:Python对Shapefile文件读取(ShpPy)与窗体构建(Tkinter)程序源码-管理软件文档类资源-CSDN下载程序使用Python实现了Shapefile面图层各个图斑的绘制,同时显示文字标注。程序可以对图形的更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/JJSXBL/86263805

        若CSDN无法下载,可以使用百度网盘,链接:https://pan.baidu.com/s/1PuTOBuo9AFN3aWuM6YxrhA 
提取码:n8jx 

1        程序介绍

1.1      简介

        程序使用Python实现了Shapefile面图层各个图斑的绘制,同时显示文字标注。程序可以对图形的显示样式进行修改。

1.2      程序总览

1.3      程序界面

 

 1.4      程序功能

        文件:打开,导出GeoJson,关闭图形

        编辑:显示标注,关闭标注,图斑颜色,边界颜色,边界宽度,标注颜色

        退出:关闭程序

2        环境配置与使用

        程序开发使用的环境是Python3.9,运行程序最好在Python3以上。

        程序运行前,需要使用pip install Pyshp安装shape文件读取的包,使用import shapefile对该包进行导入

        程序包含两个.py文件,分别为

        要想程序运行,两个文件需要在同一个文件夹下,ShapefileResolve.py为shape文件解析模块,ShapefileGUI.py需要导入解析模块,该文件进行程序界面显示,图形显示和事件响应。

        程序启动只需执行ShapefileGUI.py文件即可,在文件所在目录打开cmd命名后,运行python ShapefileGUI.py命令(如下图,(venv)是Python的虚拟环境,若Pyshp包安装在全局环境,则不需要进入虚拟环境)。

        Data文件下的“Text.shp”和“省.sho”是程序运行的示例数据,选择任意一个打开即可。程序运行时候的输出文件会放在ShapefileGUI.py同目录的output目录下,如果该文件夹不存在,程序会自动创建。

3        基础知识

3.1      Pyshp

        Shapefile 格式是由 Esri 创建的流行的地理信息系统矢量数据格式。Python Shapefile 库 (pyshp) 为 ESRI Shapefile 格式提供读写支持。读取流程为:

        创建读取对象:sf = shapefile.Reader(filename),读取时filename可以是.shp/.shx/.dbf后缀的文件,三个文件要在同一个文件夹,pyshp库可以自动识别并同时读取这些文件。

        读取到的数据包括几何对象和属性表,几何对象使用shapes = sf.shapes()获取,属性表使用records = sf.records()获取,之后可以使用获取到的数据完成各种功能。

3.2      Tkinter

        Tkinter(即 tk interface) 是 Python 标准 GUI 库,GUI (Graphical User Interface)指的是“图形用户界面”。 Tkinter中基本控件很多,常见的按钮,标签,菜单栏,文本框等等,本程序用到的只有菜单栏和画布。

        使用包含以下几个过程

创建主窗体-加载各个控件-实现响应事件

完整流程和相关函数再程序代码中介绍。

4        程序代码

4.1      文件读取

        为了代码更容易复用,创建了一个模块专门用来进行文件读取。

        代码结构如:

         各个函数功能介绍

函数名

介绍

__init__

这个是类的构造函数,在程序中需要输入一个filename参数,之后创建Shapefile对象

get_Polygon

获取Shapefile对象的每个图斑的点序列,拆分图斑为多个多边形,返回一个多边形边界的数组的集合

get_textByAttribute

输入参数,获取图斑的属性值,例如当attributename=’省’, index=2时,获取第三个图斑的名称

get_CenterPosition

获取图斑的中心点,在此获取的点是外包矩形中心。

get_counts

获取图斑总数

getboundry

获取shape文件的范围,返回一个list,四个值分别是左下角经度纬度,右上角经度纬度

getGeoJson

获取一个Deojson对象

4.2      页面布局

        下为布局相关代码,使用tkinter作为窗体架构,包含菜单栏控件,菜单控件,Canvas画布控件,添加菜单控件使用add_command,添加子菜单使用add_cascade方法,画布控件是本程序的关键,用它可以绘制多边形和文字,并且可以对绘制后的对象进行修改

        相关说明在代码注释中

4.3      事件响应

        下面的事件就对应了界面中的各个功能,并且调用了ResolveShp类中的功能。

        相关说明在代码注释中

猜你喜欢

转载自blog.csdn.net/JJSXBL/article/details/126027930
今日推荐