问题描述

因前一段时间一个做地籍小伙伴联系我,说他们的一个软件出的界址点签章表不符合甲方要求,具体情况在这样的:

因为在界址点签章表中牵涉到四邻签字的问题,其中宗地情况如图所示,红色的线是宗地线,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界址签章表的修改相关推荐

  1. python英语-我们用程序整理出了一份Python英语高频词汇表,拿走不谢!

    原标题:我们用程序整理出了一份Python英语高频词汇表,拿走不谢! 有不少编程初学者会问这样一个问题:我英语不好,还能不能学编程?会不会有影响? 我的回答是:能,会. 能学,是因为虽然编程用的都是英 ...

  2. 秀啊,用Python快速开发在线数据库更新修改工具

    ❝ 本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 这是我的系列教程「Python+Dash ...

  3. Python中的顺序表介绍

    Python中的顺序表介绍 在 Python 中,列表是一种基本的数据类型,列表的数据组成了一个序列,序列里的数据是有序的(索引),可以快速地找到指定的数据. 在开发中,经常需要将一组数据作为一个整体 ...

  4. python有序列表无序列表区别_用Python链表实现有序表与无序表

    用Python链表实现有序表与无序表 <数据结构与算法>MOOC(北大地空)课堂笔记 2020.4 by dlnb526 啥是链表 链表,顾名思义,顾名思义,链表像锁链一样,由一节节节点连 ...

  5. python数据结构: 有序表

    1. 有序表 ❖有序表是一种数据项依照其某可比性质(如整数大小.字母表先后)来决定在列表中的位置 ❖越"小"的数据项越靠近列表的头,越靠"前" 2.抽象数据类型 ...

  6. windows 通过修改注册表来修改主机名

    XP更改计算机名 2012-05-09 06:12:53 分类: WINDOWS 在运行里输入:regedit 打开注册表 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont ...

  7. Pandas: Python界的Excel

    文章目录 Pandas: Python界的Excel 前言 Excel vs. Pandas 基本概念 导入数据 导出数据 表格 行 列 单元格 基本操作 插入行 插入列 删除行 删除列 数据操作 筛 ...

  8. 界址检查功能使用方法

    界址检查功能使用方法 作者:xiaoyan 界址检查功能界面入口. 单击以打开界址检查选择任务界面 本地瓦片选择需要检测的瓦片文件夹下的sci文件.该文件位于如下图红圈所示文件夹内. 边界数据源选择u ...

  9. 通过python对纸质签到表进行统计

    通过python对纸质签到表进行统计 单位取消了刷脸签到,改用纸质签到.不幸交由我负责,更不幸还要求对签到情况进行统计.签到人员六十几人,一天四张签到表,一个月下来就非常多,人工统计太低效和浪费人了. ...

最新文章

  1. 2021 “AI Earth”人工智能创新挑战赛 AI助力精准气象和海洋预测
  2. mysql max_allowed_packet 设置过小导致记录写入失败
  3. proe输入数字时成双出现_天猫双11花呗可提额,支付宝输入几个数字,试试就知道...
  4. 百度SEO最新强引蜘蛛软件工具
  5. 【Java】javaWeb中的三大组件与八大监听器
  6. bootstrap使用
  7. 求向量的垂线_高考数学填空题如何快速求直线关于直线对称的直线方程
  8. ReactiveCocoa中信号的使用
  9. linux连接lua遇到的问题
  10. STORM的DRPC通讯
  11. 干货|手把手教你写一个串口调试助手
  12. java中xom是啥包?_XML问题,XOM Java XML API
  13. TabTimes专访《无尽之剑 II》开发者Donald Mustard
  14. 2022 智简魔方财务快云模板前台+购物车+用户中心模板 全解 无授权
  15. Maven依赖jar包的查询
  16. Python 如何安装 MySQLdb ?
  17. 《游戏改变世界》读后感 一 (懊悔?and我眼中的好游戏)
  18. 【PSO】熟悉PSO算法
  19. linux进程间通信有kindle版的,计算机网络6寸pdf适合kindle-1.pdf
  20. 藏在80年代的儿时游戏里的”通证经济“

热门文章

  1. 电气绕组服务市场现状研究分析-
  2. android 获取手机颜色代码,Android获取当前主题的颜色属性
  3. 虚拟机提示找不到引导映像_虚拟机找不到镜像文件(值得信赖软件)
  4. Android芝麻信用接入(旧版本)
  5. Linux Perf性能分析常用手段(火焰图,gprof,kernelshark)
  6. python硬件编程智能家居_python 能用在智能家居开发吗
  7. java 快读 acm
  8. Chrome广告插件暗藏挖矿代码,可使电脑瞬间卡死
  9. CAD获取光标相对窗口的坐标
  10. Java毕设项目投标文件在线制作系统(java+VUE+Mybatis+Maven+Mysql)