发明内容
本发明要解决的技术问题在于,针对现有基于TIN的技术方法进行中心线提取存在的不能一次处理完成、需要过度加密边界或需要将复杂对象拆分为简单对象的不足,提供一种改进的基于TIN的面状要素中心线提取方法。
本发明解决其技术问题所采用的技术方案是:一种改进的基于TIN的面状要素中心线提取方法,包括以下步骤:
S101:获取矢量数据的数据集,并构建不规则三角网;
S102:通过矢量数据的包含关系,在不规则三角网中筛选处于矢量数据内部三角形;
S103:提取内部三角形各条边的中心点;
S104:计算内部三角形的邻居个数并存储至三角形属性;
S105:通过中心点与矢量数据的边界关系,获取不在矢量数据边界上的中心点;
S106:计算与不在矢量数据边界上的中心点相邻三角形的邻居个数的和,并记录到中心点属性中;
S107:根据中心点属性和三角形属性,连接各点,得到线段集合;
S108:根据线段集合确定矢量数据的出口点;
S109:将所述矢量数据出口点与线段集合外端点的连线增加至所述线段集合,最终形成路网。
进一步地,步骤S105中,通过中心点与矢量数据的边界关系,获取不在矢量数据边界上的中心点,具体为:
获取矢量数据边界,若中心点与边界的距离超过预设值,则中心点不在面状边界上,否则中心点处于面状边界上。
进一步地,所述三角形属性通过三角形的邻居个数划分,包括三类,第一类三角形具有1个邻居;第二类三角形具有2个邻居,第三类三角形具有3个邻居。
进一步地,所述中心点属性,通过三角形属性和中心点相邻三角形的邻居个数和划分,包括两大类,第一大类中心点为在第二类三角形上的中心点,第二大类中心点为在第三类三角形上的中心点。
进一步地,所述第二大类中心点还通过与其同三角形的其他中心点是否存在唯一最大值进一步细分,具体为:
具有唯一最大值的中心点被划分为第二大类中心点的第一子类;具有唯一最大值三角形内其他点被划分为第二大类中心点的第二子类;三角形内无唯一最大值的中心点被划分为第二大类中心点的第三子类。
进一步地,步骤S107中,所述线段集合,具体为:
被划分为第一大类的中心点之间直接相互连接,得到线段;
被划分为第二大类的中心点,按照其细分类别相互连接,具体为:
第二子类的中心点只与第一子类的中心点连接,得到线段;第三子类的中心点,与其对应的三角形中心连接,得到线段。
步骤S108中,所述矢量数据出口点的确定,具体过程为:通过三角形邻居类型个数获取边界三角形,计算该三角形上不属于末端线段的中点与末端线段外端点的夹角,取角度大的为矢量数据出口点。
本发明提供的有益效果是:实现了不需要过度加密边界点、单次计算完成提取中心线。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。
请参考图1,一种改进的基于TIN的面状要素中心线提取方法,包括以下:
S101:获取矢量数据的数据集,并构建不规则三角网;
本发明中的矢量数据,以三岔路、四岔路以及其他复杂路网结构为输入,并提取不规则三角网;作为其他替代,领域内技术人员还可以选择河流等其他数据,这里不作限定;同时在这里声明,下文提到的矢量数据、面状要素指的为统一概念;矢量数据为上位概念;面状要素,即为下位概念,是三岔路、四岔路的学术名称。
请参考图2,图2是即为本发明实施例中输入的矢量数据,其中包括了各种不同构造、形状的道路和路网结构;
S102:通过矢量数据的包含关系,在不规则三角网中筛选处于矢量数据内部三角形;
在这里,矢量数据的包含关系,指的是三角网生成的三角形是否完全包含在面状要素内部(即包含在边界内);
请参考图3,图3是通过划分泰森多边形并筛选出面状要素边界内部的三角形。图3对应于图2,在图3中,筛选出了位于边界内部的三角形网格;
S103:提取内部三角形各条边的中心点;
请参考图4,图4是本发明实施例中提取的内部三角形各边中心点示意图;在图4中,小黑点即表示各三角形的中点。可以看出,在图4中标记的点均为不在面状要素边界上的中心点。在步骤S103中,提取出的各条边的中心点,是包括在面状要素边界上的中心点和不在面状要素边界上的中心点的;但是,在本申请中,需要用到不在面状要素边界上的中心点,所以在图4中,在面状要素边界上的中心点没有标记出来。
S104:计算内部三角形的邻居个数并存储至三角形属性;
所述三角形属性通过三角形的邻居个数划分,包括三类,第一类三角形具有1个邻居;第二类三角形具有2个邻居,第三类三角形具有3个邻居。
为了便于理解,请参考图5,图5为本发明实施例三角形属性和点数据的示意图;
在图5中,位于三角形内部的数字,即为内部三角形邻居的个数;举例说明:从图5左边数,第二个三角形内部,标记数字2,代表该三角形有两个邻居;进一步,第三个三角形内部,同样标记数字2,代表该三角形也有两个邻居;第四个三角形内部,标记数字3,代表该三角形有三个邻居;这些邻居个数,都被存储至该三角形对应的三角形属性中;
S105:通过中心点与矢量数据的边界关系,获取不在矢量数据边界上的中心点;
步骤S105中,通过中心点与矢量数据的边界关系,获取不在矢量数据边界上的中心点,具体为:
获取矢量数据边界,若中心点与边界的距离超过预设值,则中心点不在面状边界上,否则中心点处于面状边界上;
这里请参考图4,图4中标记的小黑点,即为不在面状要素边界上的中心点,不在赘述;
S106:计算与不在矢量数据边界上的中心点相邻三角形的邻居个数的和,并记录到中心点属性中;
这里仍然参考图5,在图5中三角形各条边上的中心点旁边的数字,标记了与该中心点相邻三角形的邻居个数的和;举例说明:
仍然从图5左边开始,第一格内部标记为2的三角形,其右侧的那条边,标记数字为4,表示拥有这条边三角形的邻居个数的和,即2+2=4;
进一步往右看,下一条边的中心点,标记数字为5,表示拥有这条边的三角形的邻居个数的和,即为2+3=5;在中心点属性中,即存储了不在矢量数据边界上的中心点相邻三角形的邻居个数的和。
S107:按中心点属性和三角形属性连接各点,得到连接后的线段集合;
所述中心点属性,通过三角形属性和中心点相邻三角形的邻居个数和划分,包括两大类,第一大类中心点为在第二类三角形上的中心点,第二大类中心点为在第三类三角形上的中心点。
被划分为第一大类的中心点之间直接相互连接,得到线段;
被划分为第二大类的中心点,按照其细分类别相互连接,具体为:
第二子类的中心点只与第一子类的中心点连接,得到线段;第三子类的中心点,与其对应的三角形中心连接,得到线段。这里仍然可以参考图5,中心点的属性,如果用数字量化,即只能为4或者为5,可以理解如果中心点为4,即属于第1大类,如果中心点属性为5,即属于第二大类。
所述第二大类中心点还通过与其同三角形的其他中心点是否存在唯一最大值进一步细分,具体为:
具有唯一最大值的中心点被划分为第二大类中心点的第一子类;具有唯一最大值三角形内其他点被划分为第二大类中心点的第二子类;三角形内无唯一最大值的中心点被划分为第二大类中心点的第三子类。
这里请参考图6,图6中最粗的黑线标记出的三角形;其三条边的中点分别被标记为数字5,5,6;在这组数字中,存在唯一最大值6,则这个标记为6的中心点,即为第二大类中心点的第一子类,另外两个标记为5的中心点,即为第二大类中心点的第二子类;这时,连接方式即为将低值5的中心点与高值6的中心点连接;
请参考图7,图7中最粗黑线标记出的三角形,其三条边的中点分别被标记为5,5,5;在这组数字中,并不存在唯一最大值,则这三个中心点均被分类为二大类中心点的第三子类;这时,连接方式即为,三条边的中心点往整个三角形的中心点进行连接。
另外对于剩下的情况,比如三角形上只有两个中心点不在边界的,这两个中心点直接相互连接;
S108:根据线段集合确定矢量数据的出口点;
通过三角形邻居类型个数获取边界三角形,计算该三角形上不属于末端线段的中点与末端线段外端点的夹角,取角度大的为矢量数据出口点。这里的角度范围指0到180度之间的角度。
这里请参考图8,图8是本发明实施例出口点确定示意图;
在图8中,可以看到有三个三角形,其内部从左至右,分别标有数字1,2,2;其中标记为1的,表示该三角形只有1个邻居,即可以确定,它就是位于最外侧的三角形,道路出口点即选在该三角形的边界上;
根据前述的三角形属性与中心点属性,进行连线,图中标记为3,4的中心点之间,相互连接形成线段(连接规则在上面已经阐述,这里不再赘述);由于选择点时,位于面要素边界上的中点已经被筛除,中心线不能连接到出口处,这时需要判断备选出口点(最外侧内部数字为1的三角形上其余两个中点,这两个中点均位于面要素边界上)与当前端点(图8中数字为3的点)连线与前一线段(数字3、4的线段)的夹角来选择出口点。即图8中,实线黑色箭头与虚线黑色箭头,这两个线段与数字3,4之间连线线段的夹角;可以看出,实线黑色箭头的夹角大于虚线黑色箭头的夹角,所以道路出口点确定为实线黑色箭头的另一端点(即五角星标记点)。
从以上可以看出,出口三角形只有1个邻居,但是其三个中点有2个在边界上,只有1个是出口,通过这个三角形可以找到最近的以完成连接的线段,通过判断三角形上两个备选点与这条线连接后形成的夹角,从而判断出口点。
S109:将所述矢量数据出口点与线段集合外端点的连线增加至所述线段集合,最终形成路网。
采用S101~S108的规则,对不同的道路结构进行线段连接,最终形成路网;
最终形成的路网请参考图9,图9为本发明实施例的实施效果图;
从图9中可以看出,利用本发明的道路中心线提取方法,可以单次计算完成道路中心线的提取。
本发明的有益效果是:实现了不需要过度加密边界点、单次计算完成提取中心线。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。