CN115979202A - 一种基于gis的面积量测方法及系统 - Google Patents
一种基于gis的面积量测方法及系统 Download PDFInfo
- Publication number
- CN115979202A CN115979202A CN202211580445.2A CN202211580445A CN115979202A CN 115979202 A CN115979202 A CN 115979202A CN 202211580445 A CN202211580445 A CN 202211580445A CN 115979202 A CN115979202 A CN 115979202A
- Authority
- CN
- China
- Prior art keywords
- coordinate
- area measurement
- array
- coordinate array
- gis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本发明提出了一种基于GIS的面积量测方法,输入地图坐标,同时获取当前面积量测的坐标数组;根据当前面积量测坐标数组长度,进行不同的处理,若当前面积量测坐标数组长度为0或1,则在坐标数组末尾新增输入的地图坐标,生成点实体,返回输入;若当前面积量测坐标数组长度为2,则在坐标数组末尾新增输入的地图坐标,生成多边形实体,并计算多边形实体的面积;若当前面积量测坐标数组长度大于2,则判断坐标数组是否符合重叠相交规则,对于筛选符合规则的坐标数组加入输入的地图坐标,生成多边形实体,计算多边形实体的面积。本发明解决了在部分情况下面积计算异常的情况。
Description
技术领域
本发明涉及地理信息系统领域,具体涉及一种基于GIS的面积量测方法及系统。
背景技术
地理信息系统(Geographic Information System,简称GIS)是一种获取、处理、显示与应用地理信息的计算机技术系统。其主要包括数据输入、数据处理以及数据显示等。目前,传统的面积量测功能主要是各地理信息应用提供方提供的简易面积方法,但是此类面积量测方法在复杂的面积量测情况下会出现不同类型的问题,具体包括:图形重叠时可能出现面积为0,甚至为负的情况;相近的图形,得到的结果相差巨大,甚至出现倒挂的情况,导致量测结果不精准。
发明内容
本发明的目的在于提出一种基于GIS的面积量测方法及系统。
实现本发明目的的技术解决方案为:一种基于GIS的面积量测方法,包括如下步骤:
步骤1:输入地图坐标,同时获取当前面积量测的坐标数组;
步骤2:根据步骤1中当前面积量测坐标数组长度,进行不同的处理,若当前面积量测坐标数组长度为0或1,则在坐标数组末尾新增输入的地图坐标,生成点实体,并转至步骤1;若当前面积量测坐标数组长度为2,则在坐标数组末尾新增输入的地图坐标,生成多边形实体,并转至步骤4计算多边形实体的面积;若当前面积量测坐标数组长度大于2,则转至步骤3判断坐标数组是否符合重叠相交规则,对于筛选符合规则的坐标数组加入输入的地图坐标,生成多边形实体,计算多边形实体的面积;
步骤3:将输入坐标与坐标数组中首个坐标组成遍历坐标L1,将首个坐标和第二个坐标组成被遍历坐标L2,基于快速排斥算法验证L1与L2是否有重叠,若当前无重叠,则将坐标数组中的第二个坐标和第三个坐标组成被遍历坐标L2,继续遍历;若当前有重叠部分,则进行跨立验算,验证是否相交,若跨立验算的结果为相交,则遍历结束,判定当前坐标数组不符合规则,若跨立验算的结果为不相交,则将坐标数组中的第二个坐标和第三个坐标组成被遍历坐标L2,继续遍历;以此类推,直至完成所有坐标的遍历;
步骤4:根据坐标数组,计算多边形实体的面积。
进一步的,步骤2中,若当前面积量测坐标数组长度为0,则在坐标数组末尾新增输入的地图坐标,生成点实体;若当前面积量测坐标数组长度为1,则在坐标数组末尾新增输入的地图坐标,生成线第二个点实体。
进一步的,步骤3中,将遍历坐标对L1的坐标记为:[P11(x11,y11),P12(x12,y12)],将被遍历坐标对L2的坐标记为:[P21(x21,y21),P22(x22,y22)],以L1和L2的坐标作为对角组成矩形,则两个矩形的坐标分别为:R1:[P11(x11,y11),P12(x12,y11),P13(x12,y12),P14(x11,y12)],R2:[P21(x21,y21),P22(x22,y21),P23(x22,y22),P24(x21,y22)],R1和R2有重叠和不重叠两种位置关系,快速排斥算法对矩形R1和矩形R2进行重叠判断,其步骤如下:
1.设置矩形R1和R2的边界
将x11和x12中较小值记为X1min,较大值记为X1max,将y11和y12中较小值记为Y1min,较大值记为Y1max;
将x21和x22中较小值记为X2min,较大值记为X2max,将y21和y22中较小值记为Y2min,较大值记为Y2max;
2.比对R1和R1是否有重叠:
(1)判断Y1min是否小于Y2max;
(2)判断X2max是否小于X2min;
(3)判断Y2min是否小于Y1max;
(4)判断X1max是否小于X2min;
3.若上述(1)式(2)式(3)式(4)式的判断结果全部为真,则矩形R1和R1无重叠,即两线段必定不相交。
进一步的,步骤3中,将遍历坐标对L1的坐标记为:[P11(x11,y11),P12(x12,y12)],将被遍历坐标对L2的坐标记为:[P21(x21,y21),P22(x22,y22)],若L1和L2相交,则线段L2的两个端点P21和P22必定在线段L1左右两侧,且同时线段L1的两个端点P11和P12必定在线段L2左右两侧,对此,跨立验算需要通过向量叉乘,求线段L1和L2的端点坐标之间的向量积:
V1=(x21-x11)*(y12-y11)-(x12-x11)*(y21-y11)
V2=(x22-x11)*(y12-y11)-(x12-x11)*(y22-y11)
V3=(x11-x21)*(y22-y21)-(x22-x21)*(y11-y21)
V4=(x12-x21)*(y22-y21)-(x22-x21)*(y12-y21)
上述式中,若V1*V2>0且V3*V4>0,则说明两条线段相交;否则两条线不相交。
进一步的,步骤4中,对于面积量测坐标数组PA:[(x1,y1),(x2,y2),...,(xi,yi)],其面积A为:
其中,n为PA数组长度,xi为PA中第i个坐标的经度数值,yi为PA中第i个坐标的纬度数值。
一种基于GIS的面积量测系统,基于所述的面积量测方法,实现基于GIS的面积量测。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,基于所述的面积量测方法,实现基于GIS的面积量测。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,基于所述的面积量测方法,实现基于GIS的面积量测。
本发明与现有技术相比,其显著优点为:
(1)通过跨立验算剔除不符合规则的输入坐标,解决了在部分情况下面积计算异常的情况。
(2)通过快速排斥减少计算复杂度,提高遍历效率,有效降低运行负载。
附图说明
图1是本发明的一种基于GIS的面积量测方法的流程示意图;
图2是矩形有重叠部分的情况示意图;
图3是矩形无重叠部分的情况示意图;
图4是线段交叉的情况示意图;
图5是线段不交叉的情况示意图;
图6是输入第一个面积量测实体的示例图;
图7是输入第二个面积量测实体的示例图;
图8是生成多边形实体并计算面积的示例图;
图9是不符合规则的输入坐标的示例图;
图10是符合规则的输入坐标的示例图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
一种基于GIS的面积量测方法,量测流程如图1所示,包括如下步骤:
步骤1:通过文本输入、地图点击或其他方式输入地图坐标,同时获取当前面积量测的坐标数组。
步骤2:根据步骤1中当前面积量测坐标数组长度,进行不同的处理,具体处理项如下:
1.若当前面积量测坐标数组长度为0,则坐标数组末尾新增该坐标,GIS引擎在该坐标生成点实体;
2.若当前面积量测坐标数组长度为1,则坐标数组末尾新增该坐标,GIS引擎根据坐标数组生成线第二个点实体;
3.若当前面积量测坐标数组长度为2,则坐标数组末尾新增该坐标,GIS引擎根据坐标数组生成多边形实体,同时删除点实体。通过面积算法(见步骤5)计算当前坐标数组的面积。同时将坐标数组内第一个存入的坐标定义为“量测起点”;
4.若当前面积量测坐标数组长度大于2,对坐标数组进行遍历(见步骤3),通过对坐标数组遍历的结果判断当前输入坐标是否符合规则。
步骤3:对坐标数组遍历所处理的内容如下:
1.将输入坐标与坐标数组中首个坐标组成“遍历坐标”L1,对坐标数组进行遍历。遍历次数为坐标数组的长度减1。对每次遍历,将遍历下标所在的坐标和后一位坐标组成“被遍历坐标”L2。
2.“遍历坐标”L1与“被遍历坐标”L2进行“快速排斥”(见步骤6)算法验证L1与L2是否有重叠。若当前无重叠,则遍历继续;若当前有重叠部分,则进行“跨立验算”(见步骤7)验证是否相交。若“跨立验算”(见步骤7)的结果为相交,则遍历结束,判定当前输入坐标不符合规则;若“跨立验算”(见步骤7)的结果为不相交,则继续遍历。
3.若遍历结束后,“遍历坐标”L1与“被遍历坐标”L2不存在“跨立验算”的结果为相交的情况,则判定当前输入坐标符合规则。
步骤4:若步骤3中获取的判定结果为不符合规则,则不对输入坐标作后续处理——不更新坐标数组、不重新绘制图形、不重新计算面积;若步骤3中获取的判定结果为符合规则,坐标数组末尾新增该坐标;地图引擎根据新的坐标数组更新多边形实体,并重新渲染;调用面积算法(见步骤5)重新计算当前新坐标数组的面积。
步骤5:步骤2和步骤4中所使用的面积算法具体内容如下:
对于面积量测坐标数组[(x1,y1),(x2,y2),...,(xi,yi)],其中xi为坐标的经度数值,yi为坐标的纬度数值。其面积为:
步骤6:步骤3中所使用“快速排斥”算法具体步骤如下:
1.将“遍历坐标对”L1的坐标记为:[P11(x11,y11),P12(x12,y12)],将“被遍历坐标对”L2的坐标记为:[P21(x21,y21),P22(x22,y22)]。
以L1和L2的坐标作为对角组成矩形,则两个矩形的坐标分别为:
R1:[P11(x11,y11),P12(x12,y11),P13(x12,y12),P14(x11,y12)]
R2:[P21(x21,y21),P22(x22,y21),P23(x22,y22),P24(x21,y22)]
则R1和R2有重叠和不重叠两种位置关系(如图2和图3),对矩形R1和矩形R2进行重叠判断,其步骤如下:
1.设置矩形R1和R2的边界
将x11和x12中较小值记为X1min,较大值记为X1max,将y11和y12中较小值记为Y1min,较大值记为Y1max;
将x21和x22中较小值记为X2min,较大值记为X2max,将y21和y22中较小值记为Y2min,较大值记为Y2max。
2.比对R1和R1是否有重叠:
(1)判断Y1min是否小于Y2max;
(2)判断X2max是否小于X2min;
(3)判断Y2min是否小于Y1max;
(4)判断X1max是否小于X2min;
3.若上述(1)式(2)式(3)式(4)式的判断结果全部为真,则矩形R1和R1无重叠,即两线段必定不相交。
步骤7:步骤3中“跨立验算”算法具体内容如下:
1将“遍历坐标对”L1的坐标记为:[P11(x11,y11),P12(x12,y12)],将“被遍历坐标对”L2的坐标记为:[P21(x21,y21),P22(x22,y22)]。若L1和L2相交,则线段L2的两个端点P21和P22必定在线段L1左右两侧,且同时线段L1的两个端点P11和P12必定在线段L2左右两侧,如下图4和图5。
对此,需要通过向量叉乘,求线段L1和L2的端点坐标之间的向量积:
V1=(x21-x11)*(y12-y11)-(x12-x11)*(y21-y11)
V2=(x22-x11)*(y12-y11)-(x12-x11)*(y22-y11)
V3=(x11-x21)*(y22-y21)-(x22-x21)*(y11-y21)
V4=(x12-x21)*(y22-y21)-(x22-x21)*(y12-y21)
上述式中,若V1*V2>0且V3*V4>0,则说明两条线段相交;否则两条线不相交。
实施例
为了验证本发明方案的有效性,进行如下实验。
一种基于GIS的面积量测方法,具体包括以下步骤:
步骤1:通过文本输入、地图点击或其他方式输入地图坐标,同时获取当前面积量测的坐标数组。
步骤2:根据步骤1中当前面积量测坐标数组长度,进行不同的处理,具体处理项如下:
1若当前面积量测坐标数组长度为0,则坐标数组末尾新增该坐标,GIS引擎在该坐标生成点实体,如图6;
2若当前面积量测坐标数组长度为1,则坐标数组末尾新增该坐标,GIS引擎根据坐标数组生成第二个点实体,如图7;
3若当前面积量测坐标数组长度为2,则坐标数组末尾新增该坐标,GIS引擎根据坐标数组生成多边形实体,同时删除点实体。通过面积算法(见步骤5)计算当前坐标数组的面积。同时将坐标数组内第一个存入的坐标定义为“量测起点”,如图8;
4若当前面积量测坐标数组长度大于2,对坐标数组进行遍历(见步骤3),通过对坐标数组遍历的结果判断当前输入坐标是否符合规则。
步骤3:对坐标数组进行遍历,判定当前输入坐标是否符合规则。若判定结果为不符合规则,则不对输入坐标作后续处理——不更新坐标数组、不重新绘制图形、不重新计算面积;若判定结果为符合规则,坐标数组末尾新增该坐标;地图引擎根据新的坐标数组更新多边形实体,并重新渲染;调用面积算法重新计算当前新坐标数组的面积。如图9图10。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (8)
1.一种基于GIS的面积量测方法,其特征在于,包括如下步骤:
步骤1:获取地图输入坐标P,同时获取当前面积量测的坐标数组PA:[P1,P2,P2,…,Pn];
步骤2:根据步骤1中当前面积量测坐标数组PA的长度进行不同的处理,若当前面积量测坐标数组PA长度为0或1,则在坐标数组PA末尾新增输入的地图坐标P,地图生成点实体,并转至步骤1;若当前面积量测坐标数组PA长度为2,则在坐标数组PA末尾新增输入的地图坐标,生成多边形实体,并转至步骤4计算多边形实体的面积;若当前面积量测坐标数组PA长度大于2,则转至步骤3判断输入坐标P与坐标数组PA是否符合重叠相交规则,若符合则在坐标数组PA末尾添加输入坐标P,生成多边形实体,计算多边形实体的面积;
步骤3:将输入坐标P与坐标数组PA首个坐标P1组成遍历坐标对L1,将数组PA首个坐标P1和其后续坐标P2组成被遍历坐标对L2,进行快速排斥算法验证L1与L2是否有重叠,若当前无重叠,则将坐标数组PA中的第二个坐标P2和其后续坐标P3组成被遍历坐标对L2,继续遍历;若当前有重叠部分,则进行跨立验算,验证是否相交,若跨立验算的结果为相交,则遍历结束,判定当前输入坐标P不符合规则,若跨立验算的结果为不相交,则将坐标数组PA中的第二个坐标P2和其后续坐标P3组成被遍历坐标对L2,继续遍历;以此类推,直至完成所有坐标的遍历;
步骤4:根据坐标数组,计算多边形实体的面积。
2.根据权利要求1所述的基于GIS的面积量测方法,其特征在于,步骤2中,若当前面积量测坐标数组长度为0,则在坐标数组PA末尾新增输入的地图坐标P,地图生成点实体;若当前面积量测坐标数组长度为1,则在坐标数组PA末尾新增输入的地图坐标P,地图生成线第二个点实体。
3.根据权利要求1所述的基于GIS的面积量测方法,其特征在于,步骤3中,将遍历坐标对L1的坐标记为:[P11(x11,y11),P12(x12,y12)],将被遍历坐标对L2的坐标记为:[P21(x21,y21),P22(x22,y22)],以L1和L2的坐标作为对角组成矩形,则两个矩形的坐标分别为:R1:[P11(x11,y11),P12(x12,y11),P13(x12,y12),P14(x11,y12)],R2:[P21(x21,y21),P22(x22,y21),P23(x22,y22),P24(x21,y22)],R1和R2有重叠和不重叠两种位置关系,快速排斥算法对矩形R1和矩形R2进行重叠判断,其步骤如下:
1.设置矩形R1和R2的边界
将x11和x12中较小值记为X1min,较大值记为X1max,将y11和y12中较小值记为Y1min,较大值记为Y1max;
将x21和x22中较小值记为X2min,较大值记为X2max,将y21和y22中较小值记为Y2min,较大值记为Y2max;
2.比对R1和R1是否有重叠:
(1)判断Y1min是否小于Y2max;
(2)判断X2max是否小于X2min;
(3)判断Y2min是否小于Y1max;
(4)判断X1max是否小于X2min;
3.若上述(1)式(2)式(3)式(4)式的判断结果全部为真,则矩形R1和R1无重叠,即两线段必定不相交。
4.根据权利要求1所述的基于GIS的面积量测方法,其特征在于,步骤3中,将“遍历坐标对”L1的坐标记为:[P11(x11,y11),P12(x12,y12)],将“被遍历坐标对”L2的坐标记为:[P21(x21,y21),P22(x22,y22)],若L1和L2相交,则线段L2的两个端点P21和P22必定在线段L1左右两侧,且同时线段L1的两个端点P11和P12必定在线段L2左右两侧,对此,跨立验算需要通过向量叉乘,求线段L1和L2的端点坐标之间的向量积:
V1=(x21-x11)*(y12-y11)-(x12-x11)*(y21-y11)
V2=(x22-x11)*(y12-y11)-(x12-x11)*(y22-y11)
V3=(x11-x21)*(y22-y21)-(x22-x21)*(y11-y21)
V4=(x12-x21)*(y22-y21)-(x22-x21)*(y12-y21)
上述式中,若V1*V2>0且V3*V4>0,则说明两条线段相交;否则两条线不相交。
6.一种基于GIS的面积量测系统,其特征在于,基于权利要求1-5任一项所述的面积量测方法,实现基于GIS的面积量测。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,基于权利要求1-5任一项所述的面积量测方法,实现基于GIS的面积量测。
8.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,基于权利要求1-5任一项所述的面积量测方法,实现基于GIS的面积量测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211580445.2A CN115979202A (zh) | 2022-12-09 | 2022-12-09 | 一种基于gis的面积量测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211580445.2A CN115979202A (zh) | 2022-12-09 | 2022-12-09 | 一种基于gis的面积量测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115979202A true CN115979202A (zh) | 2023-04-18 |
Family
ID=85971455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211580445.2A Pending CN115979202A (zh) | 2022-12-09 | 2022-12-09 | 一种基于gis的面积量测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115979202A (zh) |
-
2022
- 2022-12-09 CN CN202211580445.2A patent/CN115979202A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106934842B (zh) | 闭合区域的识别方法和装置 | |
CN110660121B (zh) | 三维字体渲染方法、介质、设备及装置 | |
CN108960645A (zh) | 一种风险防控方法、系统及终端设备 | |
CN114283244A (zh) | 一种基于gpu的八叉树布尔运算加速求交方法 | |
CN115979202A (zh) | 一种基于gis的面积量测方法及系统 | |
WO2023231459A1 (zh) | 一种生成路口面的方法以及相关装置 | |
CN116385415A (zh) | 一种边缘缺陷检测方法、装置、设备及存储介质 | |
CN109636879A (zh) | 带岛的多边形曲线偏移算法 | |
Kim et al. | Topology of the prism model for 3D indoor spatial objects | |
CN115481268A (zh) | 一种平行线墙体数据识别方法、装置、设备及存储介质 | |
CN113689524A (zh) | 面向平面点集构建凸包的方法、装置、电子设备及介质 | |
Toeda et al. | On edge bundling and node layout for mutually connected directed graphs | |
CN113470145A (zh) | 地图数据处理方法、装置、设备以及存储介质 | |
CN112258386A (zh) | 图像变形加速处理方法及装置、电子设备和可读存储介质 | |
Horváth et al. | Implicit a posteriori error estimation using patch recovery techniques | |
Lohou | Detection of the non-topology preservation of Ma’s 3D surface-thinning algorithm, by the use of P-simple points | |
CN107291725B (zh) | 生成多向树的方法和装置 | |
CN111383293A (zh) | 一种图像要素矢量化的方法和装置 | |
CN115063509B (zh) | 一种基于daa直线表示的光栅化方法、装置及存储介质 | |
Laan et al. | Solving discrete zero point problems | |
CN115240401B (zh) | 车辆位置确定方法、装置、设备、介质和产品 | |
CN115953501B (zh) | 有序离散点集合的生成方法、装置、设备及存储介质 | |
CN117556781B (zh) | 一种目标图形的确定方法、装置、电子设备及存储介质 | |
CN116912395B (zh) | 基于OpenGL的图形混合渲染方法、装置及存储介质 | |
CN107622038A (zh) | 基于核密度估计的概率潮流输出随机变量评估方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |