一种基于GIS地图的网格化区域动态计算生成方法
文献发布时间:2023-06-19 18:29:06
技术领域
本发明涉及网格化区域治理技术领域,具体是涉及一种基于GIS地图的网格化区域动态计算生成方法。
背景技术
GIS,全称:Geographic Information Science,地理信息科学的缩写。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。GIS技术的应用可大可小,可以是地震局的地震预测、可以是大银行的网点选址、可以是创业公司的用户分布也可以是你口袋里的旅游攻略。当前市域基层治理过程中,经常需要网格化分片区实施基层治理。基于此,本发明提出了一种GIS地图网格区域计算方法动态生成无交叉但无缝衔接的GIS地图网格的方法。
发明内容
本发明的目的在于提供一种基于GIS地图的网格化区域动态计算生成方法,包括以下步骤:
步骤1:绘制无交叉且无缝衔接的网格区域;
步骤2:判断两个网格无交叉且无缝衔接;
步骤3:判断绘制的所有网格是否已全覆盖且未超过需要绘制的目标GIS地图区域。
进一步地,在所述步骤1中,在GIS地图上绘制网格,按顺时针或逆时针顺序依次点击绘制网格顶点,结束绘制后,系统通过网格顶点绘制顺序将相邻的两个网格顶点连线形成一个封闭的多边形,即生成一个网格,其连接线称为网格线段,如果网格线段存在交叉,则将交叉点也记为一个网格交叉顶点。
步骤1中产生以下三种情况:
(1)网格1为正确网格,即不存在任何网格线段在网格内;
(2)网格2存在网格线段的交叉点,但不存在任意其他网格顶点在网格内,则该情况仍可视为正确网格;
(3)网格3存在一个完整的封闭区域在网格内,即存在不少于1个网格顶点在网格区域内,即为错误网格。
进一步地,在所述步骤2中,任意两个正确网格形成的三种情况如下:
(1)网格4和网格5:当新绘制网格时,其所有网格顶点均不在任意其他网格线段上,且不在任意网格区域内,则该网格绘制成功,表示网格不相邻,存在缝隙;
(2)网格1和网格5:当两个网格中存在一个网格的网格顶点在另一个网格的网格线段上,且该网格顶点相连的其中一条网格线段与当前网格线段存在部分或全部重合,则判断两个网格无缝衔接,且重合的网格线段部分称为相邻边;
(3)网格1和网格4:当两个网格中存在一个网格的任意一个网格顶点在另一个网格的网格区域内,则判断两个网格相交,则网格绘制错误,应取消后绘制的网格,提示无法生成网格,继续重新绘制。
进一步地,在所述步骤3中,当所有网格都至少与一个网格存在相邻边,即无缝衔接时,可能已经完成目标GIS地图区域的网格绘制;此时需要再判断当前绘制网格是否已经全覆盖且未超过需要绘制的目标GIS地图区域。
更进一步地,所述步骤3判断的具体实施方式如下:
判断是否当前所有网格的顶点集合包含目标GIS地图区域的所有顶点,且所有网格面积之和为目标GIS地图区域的面积之和,且不存在任意网格的顶点在目标GIS地图区域之外,若满足该条件,则当前绘制网格已经全覆盖且未超过需要绘制的目标GIS地图区域,结束GIS网格区域动态绘制;
如果存在任意网格顶点在目标GIS地图区域之外,则提示将该顶点所在网格应取消重新绘制;或者将该网格的超出网格区域的顶点删除,而选择该网格顶点相邻的两条网格线段与目标GIS地图区域的边界相交的网格交叉顶点来替代,然后重新按照顺时针或逆时针顺序绘制网格,然后再看所有网格面积之和是否与目标GIS地图区域相等;如果相等,则完成目标GIS地图区域网格绘制;
如果不相等,则继续执行后续步骤,即不存在任意网格的顶点在目标GIS地图区域之外,但所有网格面积之和小于目标GIS地图区域,则说明存在未填充的网格区域,那么在不改变网格数量的情况下,可以通过扩大临近目标GIS地图区域边缘的网格,来实现目标GIS地图区域的全覆盖填充。
进一步地,上述实现目标GIS地图区域的全覆盖具体步骤如下:
①找到未被覆盖的目标GIS地图区域的顶点,判断与其直线距离最近的网格顶点Y点,以及与其最近的一a2点;
如果该网格没有网格线段与目标GIS网格区域的网格线段存在相邻边,且a2点不再其他网格的网格线段上,则找到与a2点相邻的Y点两条网格线段中最近的网格线段上离a2点最近的网格顶点f1;判断a2点在不在f1点的另一条非相邻目标GIS目标网格区域的网格线段上,如果是,则将f1点、Y点依次加入网格A的网格顶点集的a2点后,重新按照顺时针或逆时针方向生成网格;如果不是,删除网格顶点a2,将f1点网格A1、Y点依次加入网格A原网格顶点集的a2点后,重新按照顺时针或逆时针方向生成网格;
如果该网格有网格线段与目标GIS网格区域的网格线段存在相邻边,设有一e2点和一e3点在目标GIS网格区域的网格线段上,则类似网格E样式,再判断与Y点最近的网格E的网格顶点e1是否在其他网格的网格线段上,如果是,则判断该线段上是否有离Y点更近的网格顶点,如果有,则将a1点、Y点依次加入网格E的网格顶点集的e1点后,重新按照顺时针或逆时针方向生成网格E1;如果该线段上不存在离Y点更近的网格顶点,则只将Y点加入网格E的网格顶点集的e1点后,重新按照顺时针或逆时针方向生成网格;
接下来依次以此步骤将所有GIS目标区域的网格顶点覆盖;
②判断当前所有网格面积是否与GIS目标网格区域面积相同,如果是,则结束网格绘制,如果不是,则存在多个网格未相邻的情况,找到网格中,无相邻边的网格线段,组成的封闭网格区域,在其中任意取一点O,与无相邻边的网格顶点连线,然后将O点分别加入无相邻边的网格线段的两个顶点顶点之间,将O点加入该网格的网格顶点集,重新按照顺时针或逆时针方向生成网格,生成新的网格A2、网格B1、网格C1;
接下来依次以此步骤将所有GIS目标区域进行网格绘制全覆盖填充;
③最后验证下绘制的所有网格是否已全覆盖且未超过需要绘制的目标GIS地图区域即可。
本发明的有益效果是:
本发明通过一种GIS地图网格区域计算方法动态生成无交叉但无缝衔接的GIS地图网格,并可根据目标点位的GIS经纬度自动判断目标点位所属网格。例如,当新增或调整GIS地图网格区域后,通过本发明所述方法可快速判断新增网格与已有其他网格是否存在交叉,是否无缝衔接;当网格区域调整成功后,遍历所有网格内的楼栋GIS经纬度,判断所有楼栋的所属网格并自动更新至楼栋属性;还可应用于网格报事处置,即选取GIS地图上任意点位,通过算法解析所属网格自动分配事件处置工作流;但当目标点位位于两个网格相邻边时,可以辅助人工决策来判断事件所属网格。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明实施例中网格的三种情况;
图2是本发明实施例中两个网格的连接情况;
图3是本发明实施例中绘制的目标GIS地图区域网格;
图4是本发明实施例中目标GIS地图区域的全覆盖填充一;
图5是本发明实施例中目标GIS地图区域的全覆盖填充二;
图6是本发明实施例中目标GIS地图区域的全覆盖填充三。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例
本实施例提出了一种智慧社区的GIS网格动态计算生成方法,包括以下步骤:
步骤1:绘制无交叉且无缝衔接的网格区域
当用户在GIS地图上绘制网格,按顺时针或逆时针顺序依次点击绘制网格顶点,结束绘制后,系统通过网格顶点绘制顺序将相邻的两个网格顶点连线形成一个封闭的多边形,即生成一个网格,其连接线称为网格线段,如果网格线段存在交叉,则将交叉点也记为一个网格交叉顶点。
需要说明的是:本实施例默认无需用户将网格开始顶点和结束顶点设为一个顶点。
那么将存在如图1所示的三种情况,网格1为正确网格,即不存在任何网格线段在网格内。网格2存在网格线段的交叉点,但不存在任意其他网格顶点在网格内,则该情况仍可视为正确网格。网格3存在一个完整的封闭区域在网格内,即存在不少于1个网格顶点在网格区域内,即为错误网格。
步骤2:判断两个网格无交叉且无缝衔接
任意两个网格形成图2所示的情况,如网格1和网格5,网格1和网格4,网格4和网格5。
如网格4和网格5:当新绘制网格时,其所有网格顶点均不在任意其他网格线段上,且不在任意网格区域内,则该网格绘制成功,表示网格不相邻,存在缝隙。
如网格1和网格5:当两个网格中存在一个网格的网格顶点在另一个网格的网格线段上(包含网格顶点外),且该网格顶点相连的其中一条网格线段与当前网格线段存在部分或全部重合(即网格线段的GIS经纬度指向方向相同),则判断两个网格无缝衔接,且重合的网格线段部分称为相邻边。
如网格1和网格4:当两个网格中存在一个网格的任意一个网格顶点在另一个网格的网格区域内,则判断两个网格相交,则网格绘制错误,应取消后绘制的网格,提示无法生成网格,继续重新绘制。
步骤3:判断绘制的所有网格是否已全覆盖且未超过需要绘制的目标GIS地图区域
当所有网格都至少与一个网格存在相邻边,即无缝衔接时,可能已经完成目标GIS地图区域的网格绘制。这时候需要再判断当前绘制网格是否已经全覆盖且未超过需要绘制的目标GIS地图区域。如图3进行示例。
基于上述,步骤3判断的具体实施方式如下:
首先,判断是否当前所有网格的顶点集合包含目标GIS地图区域的所有顶点,且所有网格面积之和为目标GIS地图区域的面积之和,且不存在任意网格的顶点在目标GIS地图区域之外,若满足该条件,则当前绘制网格已经全覆盖且未超过需要绘制的目标GIS地图区域,结束GIS网格区域动态绘制。
如果存在任意网格顶点在目标GIS地图区域之外,则提示将该顶点所在网格应取消重新绘制。或者将该网格的超出网格区域的顶点删除,而选择该网格顶点相邻的两条网格线段与目标GIS地图区域的边界相交的网格交叉顶点来替代,然后重新按照顺时针或逆时针顺序绘制网格,然后再看所有网格面积之和是否与目标GIS地图区域相等。如果相等,则完成目标GIS地图区域网格绘制。
如果不相等,则继续执行后续步骤,即不存在任意网格的顶点在目标GIS地图区域之外,但所有网格面积之和小于目标GIS地图区域,则说明存在未填充的网格区域,如图3所示。那么在不改变网格数量的情况下,可以通过扩大临近目标GIS地图区域边缘的网格,来实现目标GIS地图区域的全覆盖填充。如图4所示。
进一步地,实现目标GIS地图区域的全覆盖具体步骤如下:
①找到未被覆盖的目标GIS地图区域的顶点,判断与其直线距离最近的网格顶点,例如找到图4中Y点,以及与其最近的a2点。
如果该网格没有网格线段与目标GIS网格区域的网格线段存在相邻边,且a2点不再其他网格的网格线段上,则找到与a2点相邻的Y点两条网格线段中最近的网格线段上离a2点最近的网格顶点f1。判断a2点在不在f1点的另一条非相邻目标GIS目标网格区域的网格线段上,如果是,则将f1点、Y点依次加入网格A的网格顶点集的a2点后,重新按照顺时针或逆时针方向生成网格;如果不是,如图5所示,删除网格顶点a2,将f1点网格A1、Y点依次加入网格A原网格顶点集的a2点后,重新按照顺时针或逆时针方向生成网格。
如果该网格有网格线段与目标GIS网格区域的网格线段存在相邻边(e2点和e3点在目标GIS网格区域的网格线段上),则类似网格E样式,再判断与Y点最近的网格E的网格顶点e1是否在其他网格的网格线段上,如果是,则判断该线段上是否有离Y点更近的网格顶点,如果有,则如图4的a1点,将a1点、Y点依次加入网格E的网格顶点集的e1点后,重新按照顺时针或逆时针方向生成网格,如图5所示,网格E1;如果该线段上不存在离Y点更近的网格顶点,则只将Y点加入网格E的网格顶点集的e1点后,重新按照顺时针或逆时针方向生成网格。
接下来依次以此步骤将所有GIS目标区域的网格顶点覆盖。
②然后,判断当前所有网格面积是否与GIS目标网格区域面积相同,如果是,则结束网格绘制,如果不是,则存在多个网格未相邻的情况,如图5所示,找到网格中,无相邻边的网格线段,组成的封闭网格区域,在其中任意取一点O,与无相邻边的网格顶点连线,如图5所示。然后将O点分别加入无相邻边的网格线段的两个顶点顶点之间,将O点加入该网格的网格顶点集,重新按照顺时针或逆时针方向生成网格,如图6所示,生成新的网格A2、网格B1、网格C1。
接下来依次以此步骤将所有GIS目标区域进行网格绘制全覆盖填充。
③最后验证下绘制的所有网格是否已全覆盖且未超过需要绘制的目标GIS地图区域即可。
需要说明的是:本实施例中引用的通用算法为:
(1)多边形面积计算:首先将多边形存在两个网格线段相交情况后,视为两个多边形进行面积计算。每个多边形面积计算时将任意顶点与其他顶点连线组成的三角形面积和相加则为多边形面积。
(2)点是否在多边形内判断:可以通过射线法、夹角判断、面积判断等方法。
①射线判断:过目标点做一条直线(两条反方向的射线),每条射线与多边形边的交点数量都是奇数,则点在多边形内,否则在多边形外部;
②夹角判断:以目标点为顶点,与多边形一条边的两个端点(端点分先后顺序)组成一个夹角(计算出的夹角会有正负),所有夹角之和为360度;
③面积判断:目标点与多边形每条边组成的三角形,面积之和等于多边形面积则在内部,否则在外部(原理与判断夹角类似,面积计算量更大)。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种计算行人出现概率的地图的生成方法及系统
- 基于GIS的区域网格化人口密度空间化计算方法
- 基于GIS的区域网格化人口密度空间化计算方法