[发明专利]一种点与复杂多边形的位置关系判断方法及存储介质在审
申请号: | 202211307058.1 | 申请日: | 2022-10-24 |
公开(公告)号: | CN115619971A | 公开(公告)日: | 2023-01-17 |
发明(设计)人: | 刘雨 | 申请(专利权)人: | 昆明能讯科技有限责任公司 |
主分类号: | G06T17/20 | 分类号: | G06T17/20;G06T17/05;G06T7/62;G06F16/29 |
代理公司: | 昆明今威专利商标代理有限公司 53115 | 代理人: | 赛晓刚 |
地址: | 650000 云南省昆明市经开区云大*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 复杂 多边形 位置 关系 判断 方法 存储 介质 | ||
1.一种点与复杂多边形的位置关系判断方法,其特征在于,包括以下步骤:
步骤(1)划分网格区间并分配多边形,包括:
计算每个多边形的最小外接矩形Envelope,及Envelope的宽度w和高度h,记并将所有多边形按其s的值由小到大排序,最小的s值记为smin,最大的s值记为smax;
输入区间数en,区间宽度构建区间:
E1=[smin,smin+ew),
E2=[smin+ew,smax+2*ew),
...,
Ei=[smin+(i-1)*ew,smax+i*ew),
...,
Een=[smin+(en-1)*ew,smax]
遍历每个多边形,若一个多边形的s值在区间i的取值范围内,则将此多边形分配到区间i;
步骤(2)在每个区间上生成网格,包括:
遍历各个区间,对于区间Ei,输入网格高度hi和宽度wi,记地图坐标范围为[(xmin,ymin),(xmax,ymax)],网格行数为网格列数为其中floor为向下取整,网格坐标范围为:
[((xmax-xmin)*c),((ymax-ymin)*c),((xmax-xmin)*(c+1)),((ymax-ymin)*(c+1))]
其中r为格子行号,c为格子列号,在每个格子上分配集合P、R;
步骤(3)多边形切割划分,包括:
对于每个区间,遍历此区间上分配的多边形,遍历区间上的每个网格格子;
若格子完全被多边形覆盖,则将多边形编号加入格子上的集合P;
若格子不完全被多边形覆盖,则将多边形编号加入格子上的集合R;
步骤(4)网格数据缩编,包括:
遍历每个区间,为其分配散列HP、HR,散列的键为行号和列号,散列的值为一个存储多边形编号的链表,遍历此区间上的每个网格格子,将格子中集合P中的多边形编号添加到散列HP中以格子行列号为键的散列值链表中,将格子中集合R中的多边形编号添加到散列HR中以格子行列号为键的散列值链表中,随后移除P、R的空间占用;
遍历结束后,各个网格数据被缩编到其区间上的散列中;
步骤(5)目标点与多边形的位置判断,包括:
输入一个目标点,记输入目标点坐标为(x,y),记RES为覆盖目标点的多边形编号集合;
遍历每个区间,对于区间Ei,其网格高度为hi,网格宽度为wi,得到目标点所属网格行号为row=floor((y-ymin)*hi/(ymax-ymin))、列号为col=floor((x-xmin)*wi/(xmax-xmin)),根据行列号从散列HP中取出多边形编号链表,将链表中的编号加入集合RES,根据行列号从散列HR中取出多边形编号链表,遍历各编号,用射线法计算编号对应的多边形在此格子内的部分是否覆盖目标点,若是,则将编号加入集合RES;
遍历结束后,在集合RES内的编号即目标点所属多边形编号,反之,不在集合RES内的编号即与目标点不相交的多边形编号。
2.根据权利要求1所述的方法,其特征在于,所述步骤(1)中,输入的区间数en采用经验公式计算,计算公式为:
其中:δs为s的方差,n为多边形总数,此公式旨在使得区间数量与多边形数正相关,与多边形大小的分散分布(即方差)正相关。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于昆明能讯科技有限责任公司,未经昆明能讯科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211307058.1/1.html,转载请声明来源钻瓜专利网。