Python界址签章表的修改
问题描述
因前一段时间一个做地籍小伙伴联系我,说他们的一个软件出的界址点签章表不符合甲方要求,具体情况在这样的:
因为在界址点签章表中牵涉到四邻签字的问题,其中宗地情况如图所示,红色的线是宗地线,001号宗地的四个邻宗的情况就是:周围除了和南面的002接壤之外全是集体的,集体的我们这里按000表示。
其他三条边相当于每条边都只要集体这一个权利人,每条边签一个人的就行了,而南面这条边它就牵涉到两个宗地的情况,四邻签字就需要多加一行了,把每条边的起点、终点和中间点给填上,具体表格模板情况如下:
然而他们的软件导出的表格是这样的,每两个点直接就就是一行,并没要将四邻的整条边体现出来;
解决办法
已有数据
小伙伴给我提供的数据有这个村的界址点shp图层、已经导出的界址点签章表,以及其他的一些信息,由于他们之前用的软件已经导出过一次表格,我只需把其修改一些就行了,并没有涉及到图形之间的拓扑问题,这点还是很好的。
大致思路
1首先找出东西南北4个角的界址点号;
2看起点和终点之间如果是否存在不同的邻宗,若有,则将这条边分开,没有,就把中间点号给补齐
具体流程
首先获取4个角点的界址点号,我用arcpy遍历界址点图层的数据,获取到每个界址点的坐标信息(当然后来我放弃了arcpy,选则了dbfread,因为这些坐标信息已经写到了表里面了),根据所选宗地做一个最小外接矩形,离这个矩形顶点近的那四个点就被选出来了。根据坐标信息求出xmin,ymin,xmax,ymax(竖轴为x轴),下图最外面的一个即是求出来的外接矩形,算出每个界址点到外接矩形顶点的距离,距离小的就是宗地是顶点了O(∩_∩)O哈哈~
1号界址点是他们已经确定好的了,于是任务就缩小到了3个,岂不是美滋滋,然而此时我发现3号点好像离右下角更近,但它做顶点的话显然是不符合现实情况。这时候用到了求多边形的内角,根据多边形内角设立一个阈值,小于这个阈值的才进行距离的比较,于是就踏上了求多边形内角的救赎之路。这里用到了坐标反算,让我们来温习一下数字测图的功课吧。
坐标反算公式是有两个的,一个是可以求角度的,一个是可以求距离的,求距离的我们在前面已经用到了
这时求出来的α并不是方位角,而是一个象限角,象限角的概念是由基本方向线北端或南端顺时针或逆时针方向量到直线的角度,其取值范围为0°~90°,根据方位角与象限角之间的关系进行换算,这个是出自于李长春、何荣编写的数字测图与方法(煤炭工业出版社)上第23页的截图和描述。
期间可能会出现大于360°的角或小于0°的角,加上或减去360°即可,再根据导线测量里的方位角计算公式,算出右角,这个插入公式我还不是很会用,就用“前,后,右”的拼音代替吧,由于界址点都是按顺时针排序的,所以求出右角就是多边形的内角了。将角度小于某个阈值的界址点与外接矩形的顶点距离进行比较,返回宗地的四个角点,多边形小于180°的角是否在四个以上我也没有去考证过。
拿到宗地的四个角点之后呢,就可以在表格里进行重新编辑了,这里我用到了一个python-docx的包,一开始我看网上说这个包不能打开doc格式的文档,我还用win32com进行了格式转换,因为要另存和删除比较麻烦,后来我大胆地尝试了一下,python-docx还是可以打开doc的。后面就是一些枯燥无味的循环和排序了,这周末追花园宝宝睡得晚,有点困了,后面的事情呢就给忘记了。
封装好的程序我已经放到了我的资源里面,可以趁机多蹭小伙伴几个币(*^▽^*)
Python界址签章表的修改相关推荐
- python英语-我们用程序整理出了一份Python英语高频词汇表,拿走不谢!
原标题:我们用程序整理出了一份Python英语高频词汇表,拿走不谢! 有不少编程初学者会问这样一个问题:我英语不好,还能不能学编程?会不会有影响? 我的回答是:能,会. 能学,是因为虽然编程用的都是英 ...
- 秀啊,用Python快速开发在线数据库更新修改工具
❝ 本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 这是我的系列教程「Python+Dash ...
- Python中的顺序表介绍
Python中的顺序表介绍 在 Python 中,列表是一种基本的数据类型,列表的数据组成了一个序列,序列里的数据是有序的(索引),可以快速地找到指定的数据. 在开发中,经常需要将一组数据作为一个整体 ...
- python有序列表无序列表区别_用Python链表实现有序表与无序表
用Python链表实现有序表与无序表 <数据结构与算法>MOOC(北大地空)课堂笔记 2020.4 by dlnb526 啥是链表 链表,顾名思义,顾名思义,链表像锁链一样,由一节节节点连 ...
- python数据结构: 有序表
1. 有序表 ❖有序表是一种数据项依照其某可比性质(如整数大小.字母表先后)来决定在列表中的位置 ❖越"小"的数据项越靠近列表的头,越靠"前" 2.抽象数据类型 ...
- windows 通过修改注册表来修改主机名
XP更改计算机名 2012-05-09 06:12:53 分类: WINDOWS 在运行里输入:regedit 打开注册表 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont ...
- Pandas: Python界的Excel
文章目录 Pandas: Python界的Excel 前言 Excel vs. Pandas 基本概念 导入数据 导出数据 表格 行 列 单元格 基本操作 插入行 插入列 删除行 删除列 数据操作 筛 ...
- 界址检查功能使用方法
界址检查功能使用方法 作者:xiaoyan 界址检查功能界面入口. 单击以打开界址检查选择任务界面 本地瓦片选择需要检测的瓦片文件夹下的sci文件.该文件位于如下图红圈所示文件夹内. 边界数据源选择u ...
- 通过python对纸质签到表进行统计
通过python对纸质签到表进行统计 单位取消了刷脸签到,改用纸质签到.不幸交由我负责,更不幸还要求对签到情况进行统计.签到人员六十几人,一天四张签到表,一个月下来就非常多,人工统计太低效和浪费人了. ...
最新文章
- 在衡量MPLS性能时需要注意什么
- html图片上下翻滚展示代码
- 图解Oracle dump 命令初步
- 公平锁的lock()方法走读
- cookie与session以及他们的常规用途——web开发必须熟知的知识
- 【图像分割】基于matlab改进的细菌觅食算法双阈值图像分割【含Matlab源码 069期】
- 关于解决Win10家庭中文版没有组策略编辑器的问题
- 【笔记】《Web全栈工程师的自我修养》
- [教程] lede安装配置功能简介
- 当下最强的 AI art 生成模型 Stable Diffusion 最全面介绍
- 黑客逆向破解基础-1:壳、加壳和脱壳分别是什么?加壳的解压原理介绍。
- Vue----组件库
- NC单据模板公式使用
- TP Link 路由器 设置
- 一个关于随机矩阵谱范数的不等式
- linux与windows内核哪个难学,国产操作系统为何都基于Linux内核?又和Windows像?
- ubuntu 系统狠慢 或者很卡的原因
- 训练赛一:bfs广搜题目 CF115B Lawnmower
- 大数据项目(BP神经网络)
- lcb2板服务器状态说明,西子奥的斯服务器LCB2RCB2服务器使用[技术专攻]