CN117312471B - 海量位置点的海陆属性判断方法及装置 - Google Patents

海量位置点的海陆属性判断方法及装置 Download PDF

Info

Publication number
CN117312471B
CN117312471B CN202311255165.9A CN202311255165A CN117312471B CN 117312471 B CN117312471 B CN 117312471B CN 202311255165 A CN202311255165 A CN 202311255165A CN 117312471 B CN117312471 B CN 117312471B
Authority
CN
China
Prior art keywords
polygon
geohash
sea
geographic
ocean
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
CN202311255165.9A
Other languages
English (en)
Other versions
CN117312471A (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.)
Zhongke Star Map Co ltd
Unit 91977 Of Pla
Original Assignee
Zhongke Star Map Co ltd
Unit 91977 Of Pla
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 Zhongke Star Map Co ltd, Unit 91977 Of Pla filed Critical Zhongke Star Map Co ltd
Priority to CN202311255165.9A priority Critical patent/CN117312471B/zh
Publication of CN117312471A publication Critical patent/CN117312471A/zh
Application granted granted Critical
Publication of CN117312471B publication Critical patent/CN117312471B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

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)
  • Remote Sensing (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Instructional Devices (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请公开了一种海量位置点的海陆属性判断方法及装置,本申请方法包括获取位置点的经纬坐标;基于GeoHash算法对位置点的经纬坐标进行编码得到位置点对应的GeoHash码;在数据容器中查找是否存在位置点对应的GeoHash码;若不存在位置点对应的GeoHash码,则确定位置点的海陆属性为陆地;若存在与位置点对应的GeoHash码,则获取位置点对应的GeoHash码对应的关系值;若关系值为第一数据值,则确定位置点的海陆属性为海洋;若关系值为第二数据值,则根据位置点是否包含在海洋多边形内确定位置点的海陆属性。本申请解决现有的位置点海陆属性判断方法耗时长,影响实时态势系统的业务流程的问题。

Description

海量位置点的海陆属性判断方法及装置
技术领域
本申请涉及大数据技术领域,具体而言,涉及一种海量位置点的海陆属性判断方法及装置。
背景技术
随着社会信息化的发展,各种各样的传感器设备不断完善,各种带有地理位置信息的数据日益丰富和完善。如何应对地理大数据的处理需求成为当前各类信息系统的一大挑战。位置点的海陆属性判断是指对位置点属于地球表面的陆地范围还是除此之外的海洋范围进行判断,如何快速判断带有经纬度坐标的位置点的海陆属性是实时态势系统的基本要求。
传统的海陆属性判断多利用点在多边形的相关算法进行判定,主要包括面积和判别法、夹角和判别法、光线投射法等。在实际应用时,首先获取表征海洋范围的多边形集合,然后将位置点与多边形集合中的每个多边形进行包含运算。上述算法的复杂度与海洋多边形数据的点数相关,点数越计算越复杂,而海洋多边形数据的点数在40万左右,因此上述算法也更复杂,这样会造成处理空间点海陆属性判断时的时间消耗比较大,无法响应系统实时化的处理要求,影响实时态势系统的业务流程。
发明内容
本申请的主要目的在于提供一种海量位置点的海陆属性判断方法及装置,解决现有的位置点海陆属性判断方法耗时长,影响实时态势系统的业务流程的问题。
为了实现上述目的,根据本申请的第一方面,提供了一种海量位置点的海陆属性判断方法。
根据本申请的海量位置点的海陆属性判断方法包括:获取位置点的经纬坐标;基于GeoHash算法对所述位置点的经纬坐标进行编码得到所述位置点对应的GeoHash码;在数据容器中查找是否存在所述位置点对应的GeoHash码,所述数据容器为根据GeoHash码对应的地理多边形与海洋多边形的相互关系构建的映射容器,所述数据容器以GeoHash码为键值,所述键值对应的映射数据包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比;若不存在所述位置点对应的GeoHash码,则确定所述位置点的海陆属性为陆地;若存在与所述位置点对应的GeoHash码,则获取所述位置点对应的GeoHash码对应的关系值;若所述关系值为第一数据值,则确定所述位置点的海陆属性为海洋,所述第一数据值表示GeoHash码对应的地理多边形包含在海洋多边形内;若所述关系值为第二数据值,则根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性,所述第二数据值表示GeoHash码对应的地理多边形与海洋多边形部分相交。
可选的,所述根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性包括:根据预设关系算法计算所述位置点是否包含在海洋多边形内;若所述位置点包含在海洋多边形内,则确定所述位置点的海陆属性为海洋;若所述位置点不包含在海洋多边形内,则确定所述位置点的海陆属性为陆地。
可选的,所述方法还包括构建所述数据容器,所述构建所述数据容器包括:基于GeoHash算法在数据库中构建中间数据表,所述中间数据表包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;将所述中间数据表的每行数据装配成一个结构体对象;按照所述每行数据中的GeoHash码作为所述数据容器的键值,将每行数据对应的结构体对象作为所述数据容器的数据值的方式构建所述数据容器。
可选的,所述基于GeoHash算法在数据库中构建中间数据表包括:基于GeoHash算法生成地球表面在预设球面剖分层级下的编码集合;基于GeoHash算法对所述编码集合中的每个GeoHash码进行解码得到每个GeoHash码对应的地理多边形;在数据库中新建中间数据表,设置GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;根据几何相交算法确定地理多边形与海洋多边形的相互关系;若地理多边形与海洋多边形的相互关系为地理多边形包含在海洋多边形内,则向所述中间数据表中插入第一数据项{GeoHash码,第一数据值,1};若地理多边形与海洋多边形的相互关系为部分相交,则计算地理多边形与海洋多边形的相交面积与地理多边形的面积之比P,并向所述中间数据表中插入第二数据项{GeoHash码,第二数据值,P};若地理多边形在海洋多边形外,则与地理多边形对应的GeoHash码不记录到所述中间数据表中;直到所述编码集合中的所有GeoHash码都处理完为止。
可选的,所述构建所述数据容器还包括:为所述数据容器的键值构建哈希索引。
可选的,所述在数据容器中查找是否存在所述位置点对应的GeoHash码包括:计算所述位置点对应的GeoHash码对应的哈希值;根据所述哈希值在所述数据容器中进行查找是否存在所述位置点对应的GeoHash码。
为了实现上述目的,根据本申请的第二方面,提供了一种海量位置点的海陆属性判断装置。
根据本申请的海量位置点的海陆属性判断装置包括:第一获取单元,用于获取位置点的经纬坐标;编码单元,用于基于GeoHash算法对所述位置点的经纬坐标进行编码得到所述位置点对应的GeoHash码;查找单元,用于在数据容器中查找是否存在所述位置点对应的GeoHash码,所述数据容器为根据GeoHash码对应的地理多边形与海洋多边形的相互关系构建的映射容器,所述数据容器以GeoHash码为键值,所述键值对应的映射数据包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比;第一确定单元,用于若不存在所述位置点对应的GeoHash码,则确定所述位置点的海陆属性为陆地;第二获取单元,用于若存在与所述位置点对应的GeoHash码,则获取所述位置点对应的GeoHash码对应的关系值;第二确定单元,用于若所述关系值为第一数据值,则确定所述位置点的海陆属性为海洋,所述第一数据值表示GeoHash码对应的地理多边形包含在海洋多边形内;第三确定单元,用于若所述关系值为第二数据值,则根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性,所述第二数据值表示GeoHash码对应的地理多边形与海洋多边形部分相交。
可选的,所述第三确定单元包括:第一计算模块,用于根据预设关系算法计算所述位置点是否包含在海洋多边形内;第一确定模块,用于若所述位置点包含在海洋多边形内,则确定所述位置点的海陆属性为海洋;第二确定模块,用于若所述位置点不包含在海洋多边形内,则确定所述位置点的海陆属性为陆地。
可选的,所述装置还包括构建单元,所述构建单元用于构建所述数据容器,所述构建单元包括:第一构建模块,用于基于GeoHash算法在数据库中构建中间数据表,所述中间数据表包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;装配模块,用于将所述中间数据表的每行数据装配成一个结构体对象;第二构建模块,用于按照所述每行数据中的GeoHash码作为所述数据容器的键值,将每行数据对应的结构体对象作为所述数据容器的数据值的方式构建所述数据容器。
可选的,所述第一构建模块还用于:基于GeoHash算法生成地球表面在预设球面剖分层级下的编码集合;基于GeoHash算法对所述编码集合中的每个GeoHash码进行解码得到每个GeoHash码对应的地理多边形;在数据库中新建中间数据表,设置GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;根据几何相交算法确定地理多边形与海洋多边形的相互关系;若地理多边形与海洋多边形的相互关系为地理多边形包含在海洋多边形内,则向所述中间数据表中插入第一数据项{GeoHash码,第一数据值,1};若地理多边形与海洋多边形的相互关系为部分相交,则计算地理多边形与海洋多边形的相交面积与地理多边形的面积之比P,并向所述中间数据表中插入第二数据项{GeoHash码,第二数据值,P};若地理多边形在海洋多边形外,则与地理多边形对应的GeoHash码不记录到所述中间数据表中;直到所述编码集合中的所有GeoHash码都处理完为止。
可选的,所述构建单元还包括:第三构建模块,用于为所述数据容器的键值构建哈希索引。
可选的,所述查找单元包括:第二计算模块,用于计算所述位置点对应的GeoHash码对应的哈希值;查找模块,用于根据所述哈希值在所述数据容器中进行查找是否存在所述位置点对应的GeoHash码。
为了实现上述目的,根据本申请的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行上述第一方面中任意一项所述的海量位置点的海陆属性判断方法。
为了实现上述目的,根据本申请的第四方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行上述第一方面中任意一项所述的海量位置点的海陆属性判断方法。
在本申请实施例的海量位置点的海陆属性判断方法及装置中,首先获取位置点的经纬坐标,并基于GeoHash算法对所述位置点的经纬坐标进行编码得到所述位置点对应的GeoHash码;然后在数据容器中查找是否存在所述位置点对应的GeoHash码;若不存在所述位置点对应的GeoHash码,则确定所述位置点的海陆属性为陆地;若存在与所述位置点对应的GeoHash码,则获取所述位置点对应的GeoHash码对应的关系值;若所述关系值为第一数据值,则确定所述位置点的海陆属性为海洋;若所述关系值为第二数据值,则根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性。可以看到,本申请实施例中的海陆属性判断是将点与地理多边形的几何运算转换为查找数据容器中是否包含特定字符串的操作,因此有效降低了算法的计算复杂度,提高海量位置点海陆属性判断的处理效率。另外,本申请实施例充分利用离散化地理空间的理念,易于实现,使得海陆属性判断的时间效率显著提高,并且能够保障结果的正确性。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的一种海量位置点的海陆属性判断方法流程图;
图2是根据本申请实施例提供的一种GeoHash不同层级编码长度所对应的位置精度;
图3是根据本申请实施例提供的一种构建中间数据表的流程图;
图4是根据本申请实施例提供的另一种构建中间数据表的流程图;
图5是根据本申请实施例提供的另一种海量位置点的海陆属性判断方法流程图;
图6是根据本申请实施例提供的又一种海量位置点的海陆属性判断方法流程图;
图7是根据本申请实施例提供的一种海量位置点的海陆属性判断装置的组成框图;
图8是根据本申请实施例提供的另一种海量位置点的海陆属性判断装置的组成框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
根据本申请实施例,提供了一种海量位置点的海陆属性判断方法,如图1所示,该方法包括如下的步骤S101-S107:S101.获取位置点的经纬坐标;S102.基于GeoHash算法对位置点的经纬坐标进行编码得到位置点对应的GeoHash码;S103.在数据容器中查找是否存在位置点对应的GeoHash码;若不存在位置点对应的GeoHash码,执行步骤S104.确定位置点的海陆属性为陆地;若存在与位置点对应的GeoHash码,执行步骤S105.获取位置点对应的GeoHash码对应的关系值;对于步骤S105的结果,若关系值为第一数据值,则执行步骤S106.确定位置点的海陆属性为海洋;若关系值为第二数据值,则执行步骤S107.根据位置点是否包含在海洋多边形内确定位置点的海陆属性。
步骤S101中,位置点是需要判断其海陆属性的位置点,获取位置点的经纬坐标能够通过接收用户的输入获取,也可以是其他的获取方式,此处不做限制。
步骤S102中,GeoHash是一种公共的地球球面剖分编码系统,它首先将地球球面展平为二维平面,其水平方向范围即经度范围[-180°,180°],其垂直方向范围即纬度范围[-90°,90°]。GeoHash技术实际上是使用特定长度的字符串表示特定的地球剖分后的地理多边形范围,这里的长度指代了球面剖分的层级。图2展示了GeoHash不同层级编码长度所对应的位置精度。图2中,geohash length、lat bits、lng bits、lat error、lng error、kmerror分别表示GeoHash码长度、纬度位数、经度位数、纬度误差、经度误差、GeoHash码误差。
GeoHash算法包括编码和解码两部分,其编码过程即根据一定的精度要求将经纬度坐标转换为特定的字符串,其解码过程即将特定的字符串转换为地理多边形范围。步骤S102中基于GeoHash算法对位置点的经纬坐标进行编码得到位置点对应的GeoHash码的实现流程包括:1)将位置点的经纬坐标转换为二进制;2)将转换后的二进制编码合并,具体的合并原则为:从偶数0开始,经度占偶数位,维度占奇数位;3)将合并后的二进制编码转为Base32编码,具体的编码原则为:按照每5位一组,分成6组,每组计算其对应的十进制数值,按照Base32进行编码,最终得到位置点对应的GeoHash码。
步骤S103中,数据容器为根据GeoHash码对应的地理多边形与海洋多边形的相互关系构建的映射容器,数据容器以GeoHash码为键值,键值对应的映射数据包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比。
数据容器是需要提前构建的。具体的,构建数据容器包括:
第一步,基于GeoHash算法在数据库中构建中间数据表,中间数据表包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列。具体的,图3示出了构建中间数据表的流程图,如图3所示,构建中间数据表包括如下的步骤S201-S207:
S201.基于GeoHash算法生成地球表面在预设球面剖分层级下的编码集合。
其中,预设球面剖分层级是可以根据业务需求参考图2中的不同层级编码长度所对应的位置精度来确定。根据若预设球面剖分层级为n,根据n级网格大小确定经度、纬度的二进制编码串;然后将得到的经纬度编码串以交替的方式进行排列,获得新的编码串;对得到的新的二进制编码串进行处理,将其中每五个二进制数截取并转换为一个十进制数,然后使用Base32编码,从而获得最终的GeoHash编码。
基于GeoHash算法生成地球表面在预设球面剖分层级下的编码集合的原理可以理解为:将整个地球设想为一个二维平面,将地球上所有区域展开平铺后通过递归分解将该平面切分为多个模块,之后,再将其中的模块再进行分块,随着范围不断缩小,位置精度也越来越高,实际应用中缩小的程度由预设球面剖分层级确定,最后得到的每个分块都由一定的标识(GeoHash码)来表示该块。所有的GeoHash码组成的编码集合可以记作Ω={blocki|i∈[0,Max_Num-1]},其中,blocki为第i个GeoHash码,Max_Num为该层级下的GeoHash码总数,每一个GeoHash码表示剖分后的一个地理多边形(分块)。
S202.基于GeoHash算法对编码集合中的每个GeoHash码进行解码得到每个GeoHash码对应的地理多边形;
由于编码集合中每一个编码表示一个地理多边形,因此将每个GeoHash码进行解码可以得到对应的一个地理多边形。
S203.在数据库中新建中间数据表,设置GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;
S204.根据几何相交算法确定地理多边形与海洋多边形的相互关系;
此处的几何相交算法可以为任一种可以实现多边形相互关系判断的算法,比如可以为O'Rourke's Algorithm,O'Rourke's Algorithm属于边追赶算法(Edge ChasingAlgorithm),还可以为平面扫描算法(Plane Sweeping)等。
本步骤中具体是确定编码集合中每个GeoHash码对应的地理多边形分别与每个海洋多边形之间的相交关系。海洋多边形是通过外部数据库可以直接获取到的已知的多边形数据。地理多边形与海洋多边形的相互关系包括包含、部分相交、不相交三种情况。
S205.若地理多边形与海洋多边形的相互关系为地理多边形包含在海洋多边形内,则向中间数据表中插入第一数据项{GeoHash码,第一数据值,1}。
本步骤属于相互关系为包含的情况,前述新建的中间数据表中包括三列,将第一数据项插入到中间数据表中,即将“GeoHash码、第一数据值、1”依次插入GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比这三列,构成中间数据表中的一行数据。
具体的,第一数据值可以为1,也可以为其他的用于表示包含关系的一个字符,第三列中的“1”是因为地理多边形包含在海洋多边形内,所以地理多边形与海洋多边形的相交面积为地理多边形的面积,因此地理多边形与海洋多边形的相交面积与地理多边形的面积之比为1。
S206.若地理多边形与海洋多边形的相互关系为部分相交,则计算地理多边形与海洋多边形的相交面积与地理多边形的面积之比P,并向中间数据表中插入第二数据项{GeoHash码,第二数据值,P};
本步骤属于相互关系为部分相交的情况,前述新建的中间数据表中包括三列,将第二数据项插入到中间数据表中,即将“GeoHash码、第二数据值、P”依次插入GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比这三列,构成中间数据表中的一行数据。
具体的,第一数据值可以为2,也可以为其他的用于表示相交关系的一个字符,第三列中的“P”是通过先计地理多边形与海洋多边形的相交面积,然后再将该面积与地理多边形的面积相比得到的值。
S207.若地理多边形在海洋多边形外,则与地理多边形对应的GeoHash码不记录到中间数据表中。
本步骤属于相互关系为不相交的情况,即地理多边形与海洋多边形没有交集,这种情况下地理多边形对应的GeoHash码不记录到中间数据表中,这样做相当于把完全没有可能属于海洋属性的位置点排除在表外,使得在数据容器中通过简单的查找,如果不存在位置点对应的GeoHash码,则可以快速的确定位置点的海陆属性为陆地,提高效率。
按照上述步骤S205-S207方式对编码集合中的每个GeoHash码相关联的数据进行数据处理,直到编码集合中的所有GeoHash码都处理完为止,完成中间数据表的构建。
为了对构建中间数据表的流程进行更清楚的说明,图4示出了另一种构建中间数据表的流程图,其中,Ω为编码集合,blocki为编码集合中的第i个GeoHash码,i∈[0,Max_Num-1],Max_Num为编码集合中GeoHash码的总数,Polyi为第i个GeoHash码对应的地理多边形,Polyocean为海洋多边形,第一数据值为1,第二数据值为2,如图4所示,构建中间数据表的流程为:开始—基于GeoHash算法生成地球表面在预设球面剖分层级下的编码集合Ω—令i=0,i<Max_Num-1—取Ω中的元素blocki—基于GeoHash算法对blocki进行解码得到对应的Polyi—确定Polyi与Polyocean的相互关系—若Polyi包含在Polyocean内,则向中间数据表中插入项{blocki,1,1},之后判断i是否等于Max_Num-1;若Polyi与Polyocean部分相交,则计算Polyi与Polyocean的相交面积与Polyi的面积之比P,然后向中间数据表中插入项{blocki,2,P},之后判断i是否等于Max_Num-1;若Polyi在Polyocean外,判断i是否等于Max_Num-1—若i不等于Max_Num-1,则执行i++后继续取Ω中的元素blocki继续后续流程;若等于Max_Num-1,则结束。
第二步,将中间数据表的每行数据装配成一个结构体对象;
将中间数据表中的GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比装配成一个结构体对象,每一行对应一个结构体对象,结构体对象可以记作GeoHashBlock。
第三步,按照每行数据中的GeoHash码作为数据容器的键值,将每行数据对应的结构体对象作为数据容器的数据值的方式构建数据容器。
具体实现为:先新建一个数据容器,然后将中间数据表中的数据逐行加载到新建的数据容器中,加载时将中间数据表中每一行中的GeoHash码作为Key,将中间数据表中的每一行数据构成的结构体对象作为Value,直到中间数据表中所有的数据加载完成为止最终得到数据容器。
步骤S104中,从前述中间数据表的构建可以看到若GeoHash码对应的地理多边形不在海洋多边形内则不会记录到中间数据表中,数据容器与中间数据表中的GeoHash码是一致的,因此如果在数据容器中没有查找到位置点对应的GeoHash,则表示GeoHash码对应的地理多边形不在海洋多边形内,GeoHash码对应的地理多边形内的所有的位置点都不在海洋多边形内,因此可以确定步骤S101中的位置点的海陆属性为陆地。
步骤S105中,GeoHash码对应的关系值为GeoHash码对应的地理多边形与海洋多边形的关系值,从前述中的中间数据表、数据容器的构建流程可以看到,此处的关系值有两种情况:第一数据值和第二数据值。获取位置点对应的GeoHash码对应的关系值是通过数据容器中的Key(GeoHash码)找到对应的Value(结构体对象)中的关系值。其中,若获取到的关系值为第一数据值表示GeoHash码对应的地理多边形包含在海洋多边形内;若获取到的关系值为第二数据值表示GeoHash码对应的地理多边形与海洋多边形部分相交。
步骤S106中,因为第一数据值表示GeoHash码对应的地理多边形包含在海洋多边形内,因此GeoHash码对应的地理多边形中所有的位置点都包含在海洋多边形内,因此可以确定步骤S101中的位置点的海陆属性为海洋。
步骤S107中,因为第二数据值表示GeoHash码对应的地理多边形与海洋多边形部分相交,因此GeoHash码对应的地理多边形中只有部分位置点包含在海洋多边形内,无法直接确定步骤S101中的位置点的海陆属性。因此还需要进行进一步的判断,判断方法为根据位置点是否包含在海洋多边形内确定位置点的海陆属性。如图5所示步骤S107具体包括:根据预设关系算法计算位置点是否包含在海洋多边形内;若位置点包含在海洋多边形内,则确定位置点的海陆属性为海洋;若位置点不包含在海洋多边形内,则确定位置点的海陆属性为陆地。其中,预设关系算法可以为任何的计算点与多边形关系的算法,比如可以为面积和判别法、夹角和判别法、光线投射法等。
进一步的,为了进一步的提高数据查找的效率,本申请的海量位置点的海陆属性判断方法还包括在构建数据容器时为数据容器的键值构建哈希索引,这样在数据容器中查找是否存在位置点对应的GeoHash码时变为计算位置点对应的GeoHash码对应的哈希值;根据哈希值在数据容器中进行查找是否存在位置点对应的GeoHash码。
进一步的,为了对海量位置点的海陆属性判断方法的流程进行更清楚的说明,图6示出了又一种海量位置点的海陆属性判断的流程图,其中,位置点q的经纬坐标为(lon,lat),blockq为位置点q对应的GeoHash码,第一数据值为1,第二数据值为2,数据容器为Map,如图6所示,海量位置点的海陆属性判断的流程为:开始—输入位置点q(lon,lat)—对q进行GeoHash编码得到blockq—在Map中查找是否存在blockq项—若是,则获取blockq项对应的关系值;若否,则确定位置点q的海陆属性为陆地—若关系值为1,则确定位置点q的海陆属性为海洋;若关系值为2,则判断位置点q是否包含在海洋多边形内—若包含在内,则确定位置点q的海陆属性为海洋;若不包含在内,则确定位置点q的海陆属性为陆地。
从以上的描述中,可以看出,本申请实施例的海量位置点的海陆属性判断方法中,首先获取位置点的经纬坐标,并基于GeoHash算法对所述位置点的经纬坐标进行编码得到所述位置点对应的GeoHash码;然后在数据容器中查找是否存在所述位置点对应的GeoHash码;若不存在所述位置点对应的GeoHash码,则确定所述位置点的海陆属性为陆地;若存在与所述位置点对应的GeoHash码,则获取所述位置点对应的GeoHash码对应的关系值;若所述关系值为第一数据值,则确定所述位置点的海陆属性为海洋;若所述关系值为第二数据值,则根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性。可以看到,本申请实施例中的海陆属性判断是将点与地理多边形的几何运算转换为查找数据容器中是否包含特定字符串的操作,因此有效降低了算法的计算复杂度,提高海量位置点海陆属性判断的处理效率。另外,本申请实施例充分利用离散化地理空间的理念,易于实现,使得海陆属性判断的时间效率显著提高,并且能够保障结果的正确性。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本申请实施例,还提供了一种用于实施上述图1-6方法的海量位置点的海陆属性判断装置300,如图7所示,该装置包括:第一获取单元31,用于获取位置点的经纬坐标;编码单元32,用于基于GeoHash算法对所述位置点的经纬坐标进行编码得到所述位置点对应的GeoHash码;查找单元33,用于在数据容器中查找是否存在所述位置点对应的GeoHash码,所述数据容器为根据GeoHash码对应的地理多边形与海洋多边形的相互关系构建的映射容器,所述数据容器以GeoHash码为键值,所述键值对应的映射数据包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比;第一确定单元34,用于若不存在所述位置点对应的GeoHash码,则确定所述位置点的海陆属性为陆地;第二获取单元35,用于若存在与所述位置点对应的GeoHash码,则获取所述位置点对应的GeoHash码对应的关系值;第二确定单元36,用于若所述关系值为第一数据值,则确定所述位置点的海陆属性为海洋,所述第一数据值表示GeoHash码对应的地理多边形包含在海洋多边形内;第三确定单元37,用于若所述关系值为第二数据值,则根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性,所述第二数据值表示GeoHash码对应的地理多边形与海洋多边形部分相交。
进一步的,如图8所示,所述第三确定单元37包括:第一计算模块371,用于根据预设关系算法计算所述位置点是否包含在海洋多边形内;第一确定模块372,用于若所述位置点包含在海洋多边形内,则确定所述位置点的海陆属性为海洋;第二确定模块373,用于若所述位置点不包含在海洋多边形内,则确定所述位置点的海陆属性为陆地。
进一步的,如图8所示,所述装置还包括构建单元38,所述构建单元用于构建所述数据容器,所述构建单元38包括:第一构建模块381,用于基于GeoHash算法在数据库中构建中间数据表,所述中间数据表包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;装配模块382,用于将所述中间数据表的每行数据装配成一个结构体对象;第二构建模块383,用于按照所述每行数据中的GeoHash码作为所述数据容器的键值,将每行数据对应的结构体对象作为所述数据容器的数据值的方式构建所述数据容器。
进一步的,如图8所示,所述第一构建模块381还用于:基于GeoHash算法生成地球表面在预设球面剖分层级下的编码集合;基于GeoHash算法对所述编码集合中的每个GeoHash码进行解码得到每个GeoHash码对应的地理多边形;在数据库中新建中间数据表,设置GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;根据几何相交算法确定地理多边形与海洋多边形的相互关系;若地理多边形与海洋多边形的相互关系为地理多边形包含在海洋多边形内,则向所述中间数据表中插入第一数据项{GeoHash码,第一数据值,1};若地理多边形与海洋多边形的相互关系为部分相交,则计算地理多边形与海洋多边形的相交面积与地理多边形的面积之比P,并向所述中间数据表中插入第二数据项{GeoHash码,第二数据值,P};若地理多边形在海洋多边形外,则与地理多边形对应的GeoHash码不记录到所述中间数据表中;直到所述编码集合中的所有GeoHash码都处理完为止。
进一步的,如图8所示,所述构建单元38还包括:第三构建模块384,用于为所述数据容器的键值构建哈希索引。
进一步的,如图8所示,所述查找单元33包括:第二计算模块331,用于计算所述位置点对应的GeoHash码对应的哈希值;查找模块332,用于根据所述哈希值在所述数据容器中进行查找是否存在所述位置点对应的GeoHash码。
具体的,本申请实施例的装置中各单元、模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
从以上的描述中,可以看出,本申请实施例的海量位置点的海陆属性判断装置中,首先获取位置点的经纬坐标,并基于GeoHash算法对所述位置点的经纬坐标进行编码得到所述位置点对应的GeoHash码;然后在数据容器中查找是否存在所述位置点对应的GeoHash码;若不存在所述位置点对应的GeoHash码,则确定所述位置点的海陆属性为陆地;若存在与所述位置点对应的GeoHash码,则获取所述位置点对应的GeoHash码对应的关系值;若所述关系值为第一数据值,则确定所述位置点的海陆属性为海洋;若所述关系值为第二数据值,则根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性。可以看到,本申请实施例中的海陆属性判断是将点与地理多边形的几何运算转换为查找数据容器中是否包含特定字符串的操作,因此有效降低了算法的计算复杂度,提高海量位置点海陆属性判断的处理效率。另外,本申请实施例充分利用离散化地理空间的理念,易于实现,使得海陆属性判断的时间效率显著提高,并且能够保障结果的正确性。
根据本申请实施例,还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行上述方法实施例中的海量位置点的海陆属性判断方法。
根据本申请实施例,还提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行上述方法实施例中的海量位置点的海陆属性判断方法。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种海量位置点的海陆属性判断方法,其特征在于,所述方法包括:
获取位置点的经纬坐标;
基于GeoHash算法对所述位置点的经纬坐标进行编码得到所述位置点对应的GeoHash码;
在数据容器中查找是否存在所述位置点对应的GeoHash码,所述数据容器为根据GeoHash码对应的地理多边形与海洋多边形的相互关系构建的映射容器,所述数据容器以GeoHash码为键值,所述键值对应的映射数据包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比;
若不存在所述位置点对应的GeoHash码,则确定所述位置点的海陆属性为陆地;
若存在与所述位置点对应的GeoHash码,则获取所述位置点对应的GeoHash码对应的关系值;获取所述位置点对应的GeoHash码对应的关系值是通过数据容器中的键值GeoHash码找到对应的结构体对象中的关系值,所述结构体对象由GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比装配成,所述关系值有第一数据值和第二数据值两种,所述第一数据值表示GeoHash码对应的地理多边形包含在海洋多边形内,所述第二数据值表示GeoHash码对应的地理多边形与海洋多边形部分相交;
若所述关系值为第一数据值,则确定所述位置点的海陆属性为海洋;
若所述关系值为第二数据值,则根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性。
2.根据权利要求1所述的海量位置点的海陆属性判断方法,其特征在于,所述根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性包括:
根据预设关系算法计算所述位置点是否包含在海洋多边形内;
若所述位置点包含在海洋多边形内,则确定所述位置点的海陆属性为海洋;
若所述位置点不包含在海洋多边形内,则确定所述位置点的海陆属性为陆地。
3.根据权利要求1所述的海量位置点的海陆属性判断方法,其特征在于,所述方法还包括构建所述数据容器,所述构建所述数据容器包括:
基于GeoHash算法在数据库中构建中间数据表,所述中间数据表包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;
将所述中间数据表的每行数据装配成一个结构体对象;
按照所述每行数据中的GeoHash码作为所述数据容器的键值,将每行数据对应的结构体对象作为所述数据容器的数据值的方式构建所述数据容器。
4.根据权利要求3所述的海量位置点的海陆属性判断方法,其特征在于,所述基于GeoHash算法在数据库中构建中间数据表包括:
基于GeoHash算法生成地球表面在预设球面剖分层级下的编码集合;
基于GeoHash算法对所述编码集合中的每个GeoHash码进行解码得到每个GeoHash码对应的地理多边形;
在数据库中新建中间数据表,设置GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比三列;
根据几何相交算法确定地理多边形与海洋多边形的相互关系;
若地理多边形与海洋多边形的相互关系为地理多边形包含在海洋多边形内,则向所述中间数据表中插入第一数据项{GeoHash码,第一数据值,1};
若地理多边形与海洋多边形的相互关系为部分相交,则计算地理多边形与海洋多边形的相交面积与地理多边形的面积之比P,并向所述中间数据表中插入第二数据项{GeoHash码,第二数据值,P};
若地理多边形在海洋多边形外,则与地理多边形对应的GeoHash码不记录到所述中间数据表中;
直到所述编码集合中的所有GeoHash码都处理完为止。
5.根据权利要求3所述的海量位置点的海陆属性判断方法,其特征在于,所述构建所述数据容器还包括:
为所述数据容器的键值构建哈希索引。
6.根据权利要求5所述的海量位置点的海陆属性判断方法,其特征在于,所述在数据容器中查找是否存在所述位置点对应的GeoHash码包括:
计算所述位置点对应的GeoHash码对应的哈希值;
根据所述哈希值在所述数据容器中进行查找是否存在所述位置点对应的GeoHash码。
7.一种海量位置点的海陆属性判断装置,其特征在于,所述装置包括:
第一获取单元,用于获取位置点的经纬坐标;
编码单元,用于基于GeoHash算法对所述位置点的经纬坐标进行编码得到所述位置点对应的GeoHash码;
查找单元,用于在数据容器中查找是否存在所述位置点对应的GeoHash码,所述数据容器为根据GeoHash码对应的地理多边形与海洋多边形的相互关系构建的映射容器,所述数据容器以GeoHash码为键值,所述键值对应的映射数据包括GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比;
第一确定单元,用于若不存在所述位置点对应的GeoHash码,则确定所述位置点的海陆属性为陆地;
第二获取单元,用于若存在与所述位置点对应的GeoHash码,则获取所述位置点对应的GeoHash码对应的关系值,获取所述位置点对应的GeoHash码对应的关系值是通过数据容器中的键值GeoHash码找到对应的结构体对象中的关系值,所述结构体对象由GeoHash码、GeoHash码对应的地理多边形与海洋多边形的关系值、地理多边形与海洋多边形的相交面积与地理多边形的面积之比装配成,所述关系值有第一数据值和第二数据值两种,所述第一数据值表示GeoHash码对应的地理多边形包含在海洋多边形内,所述第二数据值表示GeoHash码对应的地理多边形与海洋多边形部分相交;
第二确定单元,用于若所述关系值为第一数据值,则确定所述位置点的海陆属性为海洋;
第三确定单元,用于若所述关系值为第二数据值,则根据所述位置点是否包含在海洋多边形内确定所述位置点的海陆属性。
8.根据权利要求7所述的海量位置点的海陆属性判断装置,其特征在于,所述第三确定单元包括:
第一计算模块,用于根据预设关系算法计算所述位置点是否包含在海洋多边形内;
第一确定模块,用于若所述位置点包含在海洋多边形内,则确定所述位置点的海陆属性为海洋;
第二确定模块,用于若所述位置点不包含在海洋多边形内,则确定所述位置点的海陆属性为陆地。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1至6中任意一项所述的海量位置点的海陆属性判断方法。
10.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1至6中任意一项所述的海量位置点的海陆属性判断方法。
CN202311255165.9A 2023-09-26 2023-09-26 海量位置点的海陆属性判断方法及装置 Active CN117312471B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311255165.9A CN117312471B (zh) 2023-09-26 2023-09-26 海量位置点的海陆属性判断方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311255165.9A CN117312471B (zh) 2023-09-26 2023-09-26 海量位置点的海陆属性判断方法及装置

Publications (2)

Publication Number Publication Date
CN117312471A CN117312471A (zh) 2023-12-29
CN117312471B true CN117312471B (zh) 2024-05-28

Family

ID=89296608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311255165.9A Active CN117312471B (zh) 2023-09-26 2023-09-26 海量位置点的海陆属性判断方法及装置

Country Status (1)

Country Link
CN (1) CN117312471B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015138759A1 (en) * 2014-03-14 2015-09-17 Twitter, Inc. Density-based dynamic geohash
CN108052629A (zh) * 2017-12-19 2018-05-18 郑州师范学院 一种基于高精度dem数据的快速海陆判断方法
CN111220956A (zh) * 2019-11-08 2020-06-02 北京理工雷科电子信息技术有限公司 一种基于地理信息的机载雷达对海探测陆地目标剔除方法
CN114663439A (zh) * 2022-03-21 2022-06-24 中国人民解放军战略支援部队信息工程大学 一种遥感影像海陆分割方法
CN114880421A (zh) * 2022-07-08 2022-08-09 北谷电子有限公司 位置服务方法、系统、电子设备和存储介质
CN115438081A (zh) * 2022-07-28 2022-12-06 中国电子科技集团公司第二十八研究所 一种海量船舶位置点云多级聚合与实时更新方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015138759A1 (en) * 2014-03-14 2015-09-17 Twitter, Inc. Density-based dynamic geohash
CN108052629A (zh) * 2017-12-19 2018-05-18 郑州师范学院 一种基于高精度dem数据的快速海陆判断方法
CN111220956A (zh) * 2019-11-08 2020-06-02 北京理工雷科电子信息技术有限公司 一种基于地理信息的机载雷达对海探测陆地目标剔除方法
CN114663439A (zh) * 2022-03-21 2022-06-24 中国人民解放军战略支援部队信息工程大学 一种遥感影像海陆分割方法
CN114880421A (zh) * 2022-07-08 2022-08-09 北谷电子有限公司 位置服务方法、系统、电子设备和存储介质
CN115438081A (zh) * 2022-07-28 2022-12-06 中国电子科技集团公司第二十八研究所 一种海量船舶位置点云多级聚合与实时更新方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Zhenxing Yao et al.A Fault Location Model Oriented to C4ISR System.《2019 IEEE 3rd Information Technology ,Networking Electronic and Automation Control Conference》.2019,第1949-1952页. *
张静 等.基于海岸线数据库的遥感图像海陆分割.《电子测量技术》.2020,第2020年卷(第23期),第115-120页. *
赵士龙 等.基于GeoHash的船舶入区检测告警方法研究.《电脑编程技巧与维护》.2020,(04),第151-153页. *

Also Published As

Publication number Publication date
CN117312471A (zh) 2023-12-29

Similar Documents

Publication Publication Date Title
CN109165215B (zh) 一种云环境下时空索引的构建方法、装置及电子设备
US9965821B2 (en) Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit
US9396512B2 (en) Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit
CN113946700A (zh) 一种时空索引构建方法、装置、计算机设备及存储介质
CN107766433B (zh) 一种基于Geo-BTree的范围查询方法及装置
JP2004164596A (ja) 2分木を巡回する方法およびシステム
De Floriani et al. Intervisibility on terrains
WO2021072874A1 (zh) 基于双数组的位置查询方法、装置、计算机设备及存储介质
US10810235B1 (en) Efficient region identification using hierarchical geocoded information
CN112732834B (zh) 一种面向空间数据的区块网安全组织存储映射方法
CN116860905B (zh) 一种城市信息模型的空间单元编码生成方法
CN109683858A (zh) 数据处理方法及装置
CN116775661A (zh) 基于北斗网格技术的空间大数据存储与管理方法
CN113806601B (zh) 一种周边兴趣点检索方法及存储介质
CN111414445A (zh) 一种应用地理信息的地址反解析方法
CN109885638B (zh) 一种三维立体空间索引方法及系统
Penninga et al. A simplicial complex‐based DBMS approach to 3D topographic data modelling
CN111507430B (zh) 基于矩阵乘法的特征编码方法、装置、设备及介质
Ai et al. A map generalization model based on algebra mapping transformation
CN117312471B (zh) 海量位置点的海陆属性判断方法及装置
CN115952252B (zh) 基于动态渲染的语义瓦片数据处理方法、装置和电子设备
CN112100308A (zh) 一种北斗时空轨迹的相似性查询方法
CN111767264B (zh) 基于地质信息编码的分布式存储方法和数据读取方法
CN116310109A (zh) 一种基于北斗网格的空间三维模型网格填充方法
CN111506576B (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