CN110633262B - 基于Spark的地图相交区域面积计算方法及*** - Google Patents

基于Spark的地图相交区域面积计算方法及*** Download PDF

Info

Publication number
CN110633262B
CN110633262B CN201910908692.2A CN201910908692A CN110633262B CN 110633262 B CN110633262 B CN 110633262B CN 201910908692 A CN201910908692 A CN 201910908692A CN 110633262 B CN110633262 B CN 110633262B
Authority
CN
China
Prior art keywords
grid
vertex
mesh
area
minimum
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.)
Active
Application number
CN201910908692.2A
Other languages
English (en)
Other versions
CN110633262A (zh
Inventor
张旭
林垚
夏英
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Herun Software Co ltd
Dragon Totem Technology Hefei Co ltd
Original Assignee
Chongqing University of Post and Telecommunications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chongqing University of Post and Telecommunications filed Critical Chongqing University of Post and Telecommunications
Priority to CN201910908692.2A priority Critical patent/CN110633262B/zh
Publication of CN110633262A publication Critical patent/CN110633262A/zh
Application granted granted Critical
Publication of CN110633262B publication Critical patent/CN110633262B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/29Geographical information databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Remote Sensing (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明涉及一种基于Spark的地图相交区域面积计算方法、***及设备,属于地图信息***领域,所述方法包括:根据经纬度和网格个数,将地图划分成网格形式,确定多边形区域包含的单元网格的编号或编码,将单元网格的编号或编码,存入Spark的分布式文件***中,根据单元网格的编号或编码确定可能存在相交的多边形区域,判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积,本发明通过建立空间索引,来快速且准确的找出地图区域中相交的区域,从而高效的计算海量地图数据场景下的相交区域的面积。

Description

基于Spark的地图相交区域面积计算方法及***
技术领域
本发明涉及地图信息技术领域,特别涉及一种基于Spark计算引擎的地图相交区域面积计算方法、***及计算机设备。
背景技术
在土地资源规划等应用中,经常涉及大量的地图相交区域计算,比如给定两张不同类别的地图:林地地图和建筑地图,在计算违规建筑占地面积时,我们往往需要比对两地图并提取出相交区域进行。因此对这一问题的研究具有重要的理论意义和应用价值。同时,区域通常在地图上是以多边形的形式存在,因此该类问题可以转化成海量多边形相交面积的计算问题。一直以来,任意多边形相交面积的高效计算都是地理信息***(GIS,Geographic Information System)中研究的重点。
多边形相交面积的计算离不开多边形相交集的判定,这是计算相交面积的前提。近年来,针对多边形位置关系的判定已有较多的研究成果。比如处理凸多边形的经典算法有Shamos和O’Rourke算法;支持任意多边形裁剪的经典算法有weiler算法和Vatti算法。相比求解多边形每条边相交情况的暴力算法,上述算法在计算效率上有所提高,但算法复杂度较高,不适用于大数据(海量地图信息)场景下的多边形面积计算。
Spark是专为大规模数据处理而设计的快速通用的计算引擎。它是一种基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合,需要反复操作的次数越多,所需读取的数据量越大,受益越大。由于栅格化后的地图数据反复操作次数多,因此Spark能适用于处理地图大数据的场景。
将地图进行栅格化处理后可以更方便的存储和索引数据,并且在一定程度上降低了多边形相交算法的复杂度。但传统的地图栅格化处理后计算相交面积的方法,在大数据环境下存在计算速度慢,效率不高的问题。其主要原因在于找出互为相交的区域需要遍历所有区域,极大地增加了时间开销。
发明内容
本发明为解决上述问题,提出了基于Spark的地图相交区域面积计算方法、***及计算机设备。本发明通过建立空间索引,来快速且准确的找出地图区域中相交的区域,有效减少数据量并提高查询速度。
根据本发明的一个方面,提供一种基于Spark的地图相交区域面积计算方法,包括:
步骤1,根据经纬度和网格个数,将地图划分成网格形式;
步骤2,读取地图数据,包括多边形区域的ID和多边形区域的顶点序列,根据网格编号规则确定多边形区域包含的第一类单元网格的编号,或根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码;将第一类单元网格的编号或第二类单元网格的编码进行分块后存入Spark的分布式文件***中;
步骤3,根据Spark的分布式文件***中存储的第一类单元网格的编号或第二类单元网格的编码,确定包含相同第一类单元网格编号的多边形区域,或属于相同第二类单元网格编码的多边形区域,为可能存在相交的多边形区域;
步骤4,判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积。
根据本发明的另一方面,提供一种基于Spark的地图相交区域面积计算***,包括:
地图网格化模块,用于根据经纬度和网格个数将地图划分成网格形式;
单元网格编号码确定模块,用于读取地图数据,包括多边形区域的ID和多边形区域的顶点序列,根据网格编号规则确定多边形区域包含的第一类单元网格的编号,或根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码;
Spark的分布式文件存储模块,用于将第一类单元网格的编号或第二类单元网格的编码分块后,进行存储;
快速相交多边形区域确定模块,用于根据Spark的分布式文件***中存储的第一类单元网格的编号或第二类单元网格的编码,确定包含相同第一类单元网格编号的多边形区域,或属于相同第二类单元网格编码的多边形区域,为可能存在相交的多边形区域;
相交区域面积计算模块,用于判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积。
根据本发明的另一个方面,提供一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的基于Spark的地图相交区域面积计算方法。
本发明的有益效果在于,提出了一种基于空间索引的地图相交区域面积计算方法、***及计算机设备,在给定多个地图后,本发明可以快速的检索所有地图内相交区域的位置信息,从而快速计算相交区域面积大小。
附图说明
图1是本发明实施例提供的一种基于Spark的地图相交区域面积计算方法流程图;
图2是本发明实施例中计算多边形包含的网格编号方法示意图;
图3是本发明实施例提供的另一种基于Spark的地图相交区域面积计算方法流程图;
图4是本发明实施例中多边形编码规则中的最小四分网格示意图;
图5是本发明实施例中利用多边形编码规则确定相交的方法示意图;
图6是本发明实施例提供的一种基于Spark的地图相交区域面积计算***结构图;
图7是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面本发明具体的实施方式进行阐述,来进一步说明本发明的出发点以及相应的技术方案。
图1是本发明实施例提供的一种基于Spark计算引擎的地图相交区域面积计算方法流程图,所述方法包括以下步骤:
步骤101,根据经纬度和网格个数将地图划分成网格形式;
对于地图给定最大经度xmax、最大纬度ymax、最小经度xmin、最小纬度ymin和每个网格的边长sideLength,建立网格索引,生成网格并为每个网格进行编号,方便后续快速定位多边形位置和ID,所述边长sideLength可根据实际应用需求和精度要求进行设置。
步骤102,读取地图数据,包括多边形区域的ID和多边形区域的顶点序列,根据网格编号规则确定多边形区域包含的第一类单元网格的编号;将第一类单元网格的编号进行分块后存入Spark的分布式文件***中;
优选的,根据网格编号规则确定多边形区域包含的第一类单元网格的编号,包括:
根据多边形的顶点序列计算出多边形的第一类单元网格的编号,所述第一类单元网格的编号包括顶点网格编号、边经过的网格编号和完全包含的网格编号;首先计算顶点网格编号,对于坐标为(xi,yi)的顶点i,计算顶点i的网络编号为:
Figure BDA0002214069090000051
其中xmin为地图的最小经度,ymin为地图的最小维度,sideLength为网格的边长;
再计算多边形的边经过的网格编号,依顶点序列顺序两两遍历所有顶点坐标,计算两坐标(xi,yi)和(xi+1,yi+1)的斜截式方程y=kx+b,计算两顶点X轴的变化范围「xi,xi+1」,取整后带入斜截式方程中计算得到纵轴值y,若y<yi,则两坐标的连接直线经过了顶点xi左方的网格,若y≥yi,则直线经过xi上方的网格;
最后计算多边形完全包含的网格编号,计算顶点序列的最小外接矩形(如图2中深灰色和浅灰色组成的区域),去掉最小外接矩形最外层的网格,得到一个更小的矩形区域(如图2中的浅灰色组成区域),将更小的矩形区域中的网格编号减去出现过的顶点网格编号和出现过的边网格编号后,得到完全包含的网格编号(如图2中的2-3网格)。
如图2所示,该白色实线围成的多边形其顶点网格编号包括(1-3,2-1,3-3,3-4),边经过的网格编号包括(2-4,3-2,2-2,1-2),完全包含的网格编号为2-3。
将第一类单元网格的编号进行分块后存入Spark的分布式文件***中,是为了方便后续操作的重复读取,可以提高确定多个地图中多边形相交的速度。
步骤103,根据Spark的分布式文件***中存储的第一类单元网格的编号,确定包含相同第一类单元网格编号的多边形区域,为可能存在相交的多边形区域。比如另一多边形与图2中的多边形包含相同的网格2-3,则可判断两个多边形存在相交情况。
步骤104,判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积。
优选的,对于可能存在相交的两个多边形A和B,其顶点集合分别为A’和B’,遍历顶点集合B’,利用射线法判断各个顶点是否在多边形A中,若B存在任意一个顶点在A内,则A与B相交,若B所有顶点均在A内,则A包含B;
若A包含B,则计算被包含的多边形B的面积为相交区域的面积,若A与B相交,则提取出两多边形相交的顶点序列Z,根据顶点序列Z计算相交区域的面积。
图3是本发明提供的另一种基于Spark的地图相交区域面积计算方法,包括以下步骤:
步骤301,根据经纬度和网格个数,将地图划分成网格形式;
对于地图给定最大经度xmax、最大纬度ymax、最小经度xmin、最小纬度ymin和每个网格的边长sideLength,建立网格索引,生成网格并为每个网格进行编号,方便后续快速定位多边形位置和ID,所述边长sideLength可根据实际应用需求和精度要求进行设置。
步骤302,读取地图数据,包括多边形区域的ID和多边形区域的顶点序列,根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码;将第二类单元网格的编码,进行分块后存入Spark的分布式文件***中;
优选的,根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码,包括:
根据多边形区域提取出最小外接矩形,遍历多边形的顶点集合,提取出最大和最小的经纬度信息作为最小外接矩形的4个顶点,最小外接矩形的最小经度为Lonmin,最大经度为Lonmax,最小纬度为Latmin,最大纬度为Latmax,计算所述4个顶点在整个地图中所处网格的坐标,整形处理后转换成二进制形式,所述4个顶点的坐标为:
最小经度Grid_xmin
Figure BDA0002214069090000071
最大经度Grid_xmax
Figure BDA0002214069090000072
最小纬度Grid_ymin
Figure BDA0002214069090000073
最大纬度Grid_ymax
Figure BDA0002214069090000074
其中xmin为地图的最小经度,xmax为地图的最大经度,ymin为地图的最小维度,ymax为地图的最大维度;
遍历二进制码的长度L,提取最小外接矩形的左下角顶点(Grid_xmin,Grid_ymin)对应长度的值XminLYminL,提取右上角顶点(Grid_xmax,Grid_ymax)对应长度的值XmaxLYmaxL,若两个顶点的长度的值相等表示该外接多边形4个顶点在一个网格内,且该网格已是其最小单位网格,若不相等,则重复上述步骤往上找,直至找到最小单元网格;对最小单元网格进行编码,得到多边形区域属于的第二类单元网格的编码。
举例说明,假设左下角顶点坐标为(5,4),二进制化后的左下角顶点为(0101,0100),二进制码的长度L为4,从第1位到第4位遍历,将对应位进行提取并结合得到XminLYminL,表示为(00,11,00,10),再将二进制转换为十进制可得到左下角顶点编码为1412;右上角顶点坐标可同理求得,假设右上角顶点坐标为(7,4),提取XmaxLYmaxL为(00,11,10,10),编码为1422。由于编码第三位不等,因此该最小外接矩形的最小单元网格应是14XX,最终该外接矩形编码为1400。
具体编码规则如图4和图5所示。图4是一个最小的四分网格,根据X轴和Y轴坐标我们可以为每一个网格编码(编码范围为1-4)。图5是一个编码实例,浅灰色三角形外接矩形只占一个网格因此其编码为21;灰色圆形区域最小外接矩形存在跨网格的情况,因此向上寻找最小四分网格即左上角虚线构成的这个大正方形,编码为20,其中0表示该多边形跨网格;正中黑色五边形由于跨网格,编码为00,这一情况在实际数据中很少见。
步骤303,根据Spark的分布式文件***中保存的第二类单元网格的编码,确定属于相同第二类单元网格编码的多边形区域,为可能存在相交的多边形区域;
具体匹配规则举例说明如下:假设现有编码21的多边形,那么编码为21和20的多边形都有可能与其相交。
步骤304,判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积。
优选的,对于可能存在相交的两个多边形A和B,其顶点集合分别为A’和B’,遍历顶点集合B’,利用射线法判断各个顶点是否在多边形A中,若B存在任意一个顶点在A内,则A与B相交,若B所有顶点均在A内,则A包含B;
若A包含B,则计算被包含的多边形B的面积为相交区域的面积,若A与B相交,则提取出两多边形相交的顶点序列Z,根据顶点序列Z计算相交区域的面积。
图6是本发明实施例提供的一种基于Spark的地图相交区域面积计算***,所述***包括以下模块:
地图网格化模块601,用于根据经纬度和网格个数,将地图划分成网格形式;
对于地图给定最大经度xmax、最大纬度ymax、最小经度xmin、最小纬度ymin和每个网格的边长sideLength,建立网格索引,生成网格并为每个网格进行编号,方便后续快速定位多边形位置和ID,所述边长sideLength可根据实际应用需求和精度要求进行设置。
单元网格编号码确定模块602,用于读取地图数据,包括多边形区域的ID和多边形区域的顶点序列,根据网格编号规则确定多边形区域包含的第一类单元网格的编号,或根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码;
Spark的分布式文件存储模块603,用于将第一类单元网格的编号或第二类单元网格的编码分块后,进行存储;
快速相交多边形区域确定模块604,用于根据Spark的分布式文件***中存储的第一类单元网格的编号或第二类单元网格的编码,确定包含相同第一类单元网格编号的多边形区域,或属于相同第二类单元网格编码的多边形区域,为可能存在相交的多边形区域;
相交区域面积计算模块605,用于判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积。
优选的,单元网格编号码602,确定模块根据网格编号规则确定多边形区域包含的第一类单元网格的编号,包括:
根据多边形的顶点序列计算出多边形的第一类单元网格的编号,所述第一类单元网格的编号包括顶点网格编号、边经过的网格编号和完全包含的网格编号;首先计算顶点网格编号,对于坐标为(xi,yi)的顶点i,计算顶点i的网络编号为:
Figure BDA0002214069090000101
其中xmin为地图的最小经度,ymin为地图的最小维度,sideLength为网格的边长;
再计算多边形的边经过的网格编号,依顶点序列顺序两两遍历所有顶点坐标,计算两坐标(xi,yi)和(xi+1,yi+1)的斜截式方程y=kx+b,计算两顶点X轴的变化范围「xi,xi+1」,取整后带入斜截式方程中计算得到纵轴值y,若y<yi,则两坐标的连接直线经过了顶点xi左方的网格,若y≥yi,则直线经过xi上方的网格;
最后计算多边形完全包含的网格编号,计算顶点序列的最小外接矩形,去掉最小外接矩形最外层的网格,得到一个更小的矩形区域,将更小的矩形区域中的网格编号减去出现过的顶点网格编号和边网格编号后,得到完全包含的网格编号。
优选的,单元网格编号码确定模块602,根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码,包括:
根据多边形区域提取出最小外接矩形,遍历多边形的顶点集合,提取出最大和最小的经纬度信息作为最小外接矩形的4个顶点,最小外接矩形的最小经度为Lonmin,最大经度为Lonmax,最小纬度为Latmin,最大纬度为Latmax,计算所述4个顶点在整个地图中所处网格的坐标,整形处理后转换成二进制形式,所述4个顶点的坐标为:
最小经度Grid_xmin
Figure BDA0002214069090000111
最大经度Grid_xmax
Figure BDA0002214069090000112
最小纬度Grid_ymin
Figure BDA0002214069090000113
最大纬度Grid_ymax
Figure BDA0002214069090000114
其中xmin为地图的最小经度,xmax为地图的最大经度,ymin为地图的最小维度,ymax为地图的最大维度;
遍历二进制码的长度L,提取最小外接矩形的左下角顶点(Grid_xmin,Grid_ymin)对应长度的值XminLYminL,提取右上角顶点(Grid_xmax,Grid_ymax)对应长度的值XmaxLYmaxL,若两个顶点的长度的值相等表示该外接多边形4个顶点在一个网格内,且该网格已是其最小单位网格,若不相等,则重复上述步骤往上找,直至找到最小单元网格;对最小单元网格进行编码,得到多边形区域属于的第二类单元网格的编码。
优选的,相交区域面积计算模块605,判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积,包括:
对于可能存在相交的两个多边形A和B,其顶点集合分别为A’和B’,遍历顶点集合B’,利用射线法判断各个顶点是否在多边形A中,若B存在任意一个顶点在A内,则A与B相交,若B所有顶点均在A内,则A包含B;
若A包含B,则计算被包含的多边形B的面积为相交区域的面积,若A与B相交,则提取出两多边形相交的顶点序列Z,根据顶点序列Z计算相交区域的面积。
图7是本发明实施例提供的一种计算机设备的结构示意图。如图7所示,该计算机设备包括通过***总线720连接的处理器710、非易失性存储介质730、内存储器750及网络接口740。其中,计算机设备的非易失性存储介质730存储有操作***731及计算机可执行指令732,该计算机可执行指令732用于实现本发明实施例中提供的Spark的地图相交区域面积计算方法。该处理器710用于提供计算和控制能力,支撑整个计算机设备的运行。计算机设备中的内存储器750为非易失性存储介质730中的操作***731及计算机可执行指令732的运行提供环境,网络接口740用于与其它的计算机设备进行网络通信。该计算机设备可以是手机、平板电脑、PC(personal computer)等终端,也可以是服务器等。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体地计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。

Claims (7)

1.一种基于Spark的地图相交区域面积计算方法,其特征在于,包括:
步骤1,根据经纬度和网格个数将地图划分成网格形式;
步骤2,读取地图数据,包括多边形区域的ID和多边形区域的顶点序列,根据网格编号规则确定多边形区域包含的第一类单元网格的编号,或根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码;将第一类单元网格的编号或第二类单元网格的编码,进行分块后存入Spark的分布式文件***中;
步骤3,根据Spark的分布式文件***中存储的第一类单元网格的编号或第二类单元网格的编码,确定包含相同第一类单元网格编号的多边形区域,或属于相同第二类单元网格编码的多边形区域,为可能存在相交的多边形区域;
步骤4,判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积;
其中,所述根据网格编号规则确定多边形区域包含的第一类单元网格的编号,包括:
根据多边形的顶点序列计算出多边形的第一类单元网格的编号,所述第一类单元网格的编号包括顶点网格编号、边经过的网格编号和完全包含的网格编号;首先计算顶点网格编号,对于坐标为(xi,yi)的顶点i,计算顶点i的网络编号为:
Figure FDA0003571789240000011
其中xmin为地图的最小经度,ymin为地图的最小维度,sideLength为网格的边长;
再计算多边形的边经过的网格编号,依顶点序列顺序两两遍历所有顶点坐标,计算两坐标(xi,yi)和(xi+1,yi+1)的斜截式方程y=kx+b,计算两顶点X轴的变化范围
Figure FDA0003571789240000024
取整后带入斜截式方程中计算得到纵轴值y,若y<yi,则两坐标的连接直线经过了顶点xi左方的网格,若y≥yi,则直线经过xi上方的网格;
最后计算多边形完全包含的网格编号,计算顶点序列的最小外接矩形,去掉最小外接矩形最外层的网格,得到一个更小的矩形区域,将更小的矩形区域中的网格编号减去出现过的顶点网格编号和边网格编号后,得到完全包含的网格编号。
2.根据权利要求1所述的方法,其特征在于,根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码,包括:
根据多边形区域提取出最小外接矩形,遍历多边形的顶点集合,提取出最大和最小的经纬度信息作为最小外接矩形的4个顶点,最小外接矩形的最小经度为Lonmin,最大经度为Lonmax,最小纬度为Latmin,最大纬度为Latmax,计算所述4个顶点在整个地图中所处网格的坐标,整形处理后转换成二进制形式,所述4个顶点的坐标为:
最小经度Grid_xmin
Figure FDA0003571789240000021
最大经度Grid_xmax
Figure FDA0003571789240000022
最小纬度Grid_ymin
Figure FDA0003571789240000023
最大纬度Grid_ymax
Figure FDA0003571789240000031
其中xmin为地图的最小经度,xmax为地图的最大经度,ymin为地图的最小维度,ymax为地图的最大维度;
遍历二进制码的长度L,提取最小外接矩形的左下角顶点(Grid_xmin,Grid_ymin)对应长度的值XminLYminL,提取右上角顶点(Grid_xmax,Grid_ymax)对应长度的值XmaxLYmaxL,若两个顶点的长度的值相等表示该最小外接矩形4个顶点在一个网格内,且该网格已是其最小单位网格,若不相等,则重复上述步骤往上找,直至找到最小单元网格;对最小单元网格进行编码,得到多边形区域属于的第二类单元网格的编码。
3.根据权利要求1至2任一所述的方法,其特征在于,判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积,包括:
对于可能存在相交的两个多边形A和B,其顶点集合分别为A’和B’,遍历顶点集合B’,利用射线法判断各个顶点是否在多边形A中,若B存在任意一个顶点在A内,则A与B相交,若B所有顶点均在A内,则A包含B;
若A包含B,则计算被包含的多边形B的面积为相交区域的面积,若A与B相交,则提取出两多边形相交的顶点序列Z,根据顶点序列Z计算相交区域的面积。
4.一种基于Spark的地图相交区域面积计算***,其特征在于,包括:
地图网格化模块,用于根据经纬度和网格个数将地图划分成网格形式;
单元网格编号码确定模块,用于读取地图数据,包括多边形区域的ID和多边形区域的顶点序列,根据网格编号规则确定多边形区域包含的第一类单元网格的编号,或根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码;
Spark的分布式文件存储模块,用于将第一类单元网格的编号或第二类单元网格的编码分块后,进行存储;
快速相交多边形区域确定模块,用于根据Spark的分布式文件***中存储的第一类单元网格的编号或第二类单元网格的编码,确定包含相同第一类单元网格编号的多边形区域,或属于相同第二类单元网格编码的多边形区域,为可能存在相交的多边形区域;
相交区域面积计算模块,用于判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积;
其中,所述单元网格编号码确定模块,用于根据网格编号规则确定多边形区域包含的第一类单元网格的编号,具体用于:
根据多边形的顶点序列计算出多边形的第一类单元网格的编号,所述第一类单元网格的编号包括顶点网格编号、边经过的网格编号和完全包含的网格编号;首先计算顶点网格编号,对于坐标为(xi,yi)的顶点i,计算顶点i的网络编号为:
Figure FDA0003571789240000041
其中xmin为地图的最小经度,ymin为地图的最小维度,sideLength为网格的边长;
再计算多边形的边经过的网格编号,依顶点序列顺序两两遍历所有顶点坐标,计算两坐标(xi,yi)和(xi+1,yi+1)的斜截式方程y=kx+b,计算两顶点X轴的变化范围
Figure FDA0003571789240000042
取整后带入斜截式方程中计算得到纵轴值y,若y<yi,则两坐标的连接直线经过了顶点xi左方的网格,若y≥yi,则直线经过xi上方的网格;
最后计算多边形完全包含的网格编号,计算顶点序列的最小外接矩形,去掉最小外接矩形最外层的网格,得到一个更小的矩形区域,将更小的矩形区域中的网格编号减去出现过的顶点网格编号和边网格编号后,得到完全包含的网格编号。
5.根据权利要求4所述的***,其特征在于,单元网格编号码确定模块根据多边形区域提取出最小外接矩形,利用四分树算法确定多边形区域属于的第二类单元网格的编码,包括:
根据多边形区域提取出最小外接矩形,遍历多边形的顶点集合,提取出最大和最小的经纬度信息作为最小外接矩形的4个顶点,最小外接矩形的最小经度为Lonmin,最大经度为Lonmax,最小纬度为Latmin,最大纬度为Latmax,计算所述4个顶点在整个地图中所处网格的坐标,整形处理后转换成二进制形式,所述4个顶点的坐标为:
最小经度Grid_xmin
Figure FDA0003571789240000051
最大经度Grid_xmax
Figure FDA0003571789240000052
最小纬度Grid_ymin
Figure FDA0003571789240000053
最大纬度Grid_ymax
Figure FDA0003571789240000054
其中xmin为地图的最小经度,xmax为地图的最大经度,ymin为地图的最小维度,ymax为地图的最大维度;
遍历二进制码的长度L,提取最小外接矩形的左下角顶点(Grid_xmin,Grid_ymin)对应长度的值XminLYminL,提取右上角顶点(Grid_xmax,Grid_ymax)对应长度的值XmaxLYmaxL,若两个顶点的长度的值相等表示该最小外接矩形4个顶点在一个网格内,且该网格已是其最小单位网格,若不相等,则重复上述步骤往上找,直至找到最小单元网格;对最小单元网格进行编码,得到多边形区域属于的第二类单元网格的编码。
6.根据权利要求4至5任一所述的***,其特征在于,相交区域面积计算模块判断可能存在相交的多边形区域的相交关系,计算对应的相交区域的面积,包括:
对于可能存在相交的两个多边形A和B,其顶点集合分别为A’和B’,遍历顶点集合B’,利用射线法判断各个顶点是否在多边形A中,若B存在任意一个顶点在A内,则A与B相交,若B所有顶点均在A内,则A包含B;
若A包含B,则计算被包含的多边形B的面积为相交区域的面积,若A与B相交,则提取出两多边形相交的顶点序列Z,根据顶点序列Z计算相交区域的面积。
7.一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至3任一所述的方法。
CN201910908692.2A 2019-09-25 2019-09-25 基于Spark的地图相交区域面积计算方法及*** Active CN110633262B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910908692.2A CN110633262B (zh) 2019-09-25 2019-09-25 基于Spark的地图相交区域面积计算方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910908692.2A CN110633262B (zh) 2019-09-25 2019-09-25 基于Spark的地图相交区域面积计算方法及***

Publications (2)

Publication Number Publication Date
CN110633262A CN110633262A (zh) 2019-12-31
CN110633262B true CN110633262B (zh) 2022-06-24

Family

ID=68973731

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910908692.2A Active CN110633262B (zh) 2019-09-25 2019-09-25 基于Spark的地图相交区域面积计算方法及***

Country Status (1)

Country Link
CN (1) CN110633262B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113204605B (zh) * 2020-02-03 2024-07-02 百度在线网络技术(北京)有限公司 一种平面图相交判定方法、装置、设备和存储介质
CN111340364A (zh) * 2020-02-26 2020-06-26 上海东普信息科技有限公司 同城订单配送范围绘制方法及装置
CN111737381B (zh) * 2020-05-11 2023-08-25 江苏北斗卫星应用产业研究院有限公司 一种基于时空大数据的区域地块重叠识别与重叠面积计算方法
CN111931006A (zh) * 2020-07-29 2020-11-13 厦门蓝海天信息技术有限公司 一种海洋格点数据的存储方法
CN111984808A (zh) * 2020-08-17 2020-11-24 中国电子科技集团公司第五十四研究所 一种基于圆区域描述的遥感影像快速检索方法
CN112783891B (zh) * 2020-09-07 2022-06-14 杭州鸿泉物联网技术股份有限公司 基于经度和纬度匹配邻近多边形区域的方法及装置
CN114706930A (zh) * 2022-03-07 2022-07-05 东南大学 一种基于AOI数据和GeoHash算法的交通小区各类型用地面积统计方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106709857A (zh) * 2016-11-22 2017-05-24 中国人民解放军理工大学 一种基于概率统计的任意多边形相交面积计算方法
CN107872766A (zh) * 2017-10-20 2018-04-03 南京邮电大学 一种有向传感器网络节点感知区域相交方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106709857A (zh) * 2016-11-22 2017-05-24 中国人民解放军理工大学 一种基于概率统计的任意多边形相交面积计算方法
CN107872766A (zh) * 2017-10-20 2018-04-03 南京邮电大学 一种有向传感器网络节点感知区域相交方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于GPU的任意多边形相交面积计算方法;高艺 等;《测绘工程》;20171231;第26卷(第12期);第55-59页 *

Also Published As

Publication number Publication date
CN110633262A (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
CN110633262B (zh) 基于Spark的地图相交区域面积计算方法及***
US11875513B2 (en) Self-adaptive point cloud stripe division method
CN110990516B (zh) 地图数据的处理方法、装置和服务器
CN111260784B (zh) 一种城市三维空间网格压缩编码方法、装置及终端设备
JP2004164596A (ja) 2分木を巡回する方法およびシステム
CN109992640B (zh) 位置网格的确定方法及装置、设备及存储介质
CN113010620B (zh) 基于地理多级网格的自然资源数据索引统计方法及***
CN111598359B (zh) 物流场站选址方法及***
CN111339599B (zh) 一种bim模型到gis模型的转换方法
CN114238384B (zh) 区域定位方法、装置、设备和存储介质
CN112486987A (zh) 基于经纬度的城市查询方法、装置、设备及存储介质
CN113806601B (zh) 一种周边兴趣点检索方法及存储介质
CN116628123A (zh) 基于空间数据库的动态切片生成方法和***
Teng et al. IDEAL: a vector-raster hybrid model for efficient spatial queries over complex polygons
CN108133485B (zh) Gis栅格化连片问题区域识别方法、装置、终端和介质
CN115952252B (zh) 基于动态渲染的语义瓦片数据处理方法、装置和电子设备
CN117009411A (zh) 一种基于点云数据网格化空间存储与索引方法、装置及计算机可读存储介质
CN114116948B (zh) 地理矢量数据空间缓冲区分析方法、装置、设备及介质
CN114691691A (zh) 基于Geohash的空间数据处理方法、装置及电子设备
CN115858709A (zh) 多尺度空间数据的处理方法、电子设备及存储介质
CN114817775A (zh) 空间索引的生成方法和装置
CN113032509B (zh) 基于分布式集群的地图切片方法、装置、设备及介质
CN111506576B (zh) 一种基于区域四叉树的地块编码方法及装置
CN114138925A (zh) 位置点所属区域检索方法、装置、电子设备、介质及产品
CN113868555A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230913

Address after: No. 19, 12th Floor, Building 3, No. 77, Shunjiang Section, Wuhou Avenue, Wuhou District, Chengdu City, Sichuan Province, 610000

Patentee after: Chengdu Herun Software Co.,Ltd.

Address before: 230000 floor 1, building 2, phase I, e-commerce Park, Jinggang Road, Shushan Economic Development Zone, Hefei City, Anhui Province

Patentee before: Dragon totem Technology (Hefei) Co.,Ltd.

Effective date of registration: 20230913

Address after: 230000 floor 1, building 2, phase I, e-commerce Park, Jinggang Road, Shushan Economic Development Zone, Hefei City, Anhui Province

Patentee after: Dragon totem Technology (Hefei) Co.,Ltd.

Address before: 400065 Chongwen Road, Nanshan Street, Nanan District, Chongqing

Patentee before: CHONGQING University OF POSTS AND TELECOMMUNICATIONS

TR01 Transfer of patent right