CN110728652B - 面向二维规则矢量空间数据的可视域分析方法及装置 - Google Patents
面向二维规则矢量空间数据的可视域分析方法及装置 Download PDFInfo
- Publication number
- CN110728652B CN110728652B CN201910830422.4A CN201910830422A CN110728652B CN 110728652 B CN110728652 B CN 110728652B CN 201910830422 A CN201910830422 A CN 201910830422A CN 110728652 B CN110728652 B CN 110728652B
- Authority
- CN
- China
- Prior art keywords
- point
- vector data
- intersection
- array
- current
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
- G06T7/62—Analysis of geometric attributes of area, perimeter, diameter or volume
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Quality & Reliability (AREA)
- Remote Sensing (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
- Instructional Devices (AREA)
Abstract
一种面向二维规则矢量空间数据的可视域分析方法及装置,先获取目标点矢量数据,查找在其在可视范围内的遮挡物,计算目标点矢量数据与遮挡物体的各个顶点连线与遮挡物边界的所有交点,并筛选出有效交点和顶点;然后计算由遮挡物在可视范围内的最外侧顶点和目标点矢量数据的连线与目标点可视范围边界的交点,再计算由该交点所构成弧段的弧段点,进而由有效交点和顶点以及弧段点构成目标矢量数据视野盲区的边界点,将所有边界点连成一个封闭的几何图形,即为视野盲区,将可视范围内的所有视野盲区求并集得到目标点矢量数据可视范围内总视野盲区,最后将目标点矢量数据的可视范围与其总视野盲区作叠加求差,即可得到目标点矢量数据的可视域。
Description
技术领域
本发明涉及规则矢量空间数据的可视域分析领域,更具体地说,涉及一种面向二维规则矢量空间数据的可视域分析方法及对应的实现装置。
背景技术
传统的可视域分析都是基于三维地形的地形可视性分析,并且在不同的领域有着广泛的应用。但是如果在地形平坦的区域进行可视域分析,传统的三维地形可视性就不再适用。比如求某一小区的路灯可照射的范围,因为路灯的光源会被小区的建筑物所遮挡,其实际照射范围就是用其理论照射范围减去建筑物所遮挡的范围,即为路灯实际照射范围,因为小区地形比较平坦,无法进行地形可视性分析,因此传统的栅格可视域分析不再适用。
发明内容
为了解决这个问题,故提出了一种面向二维规则矢量空间数据的可视域分析方法及装置,即将光源数据作为目标点矢量数据,将遮挡物作为规则面状矢量数据,然后经过计算和分析,得到目标点矢量数据在遮挡物遮挡下的可视范围。此方法不仅能对可视域要求高的发射源安装点进行合理配置,而且能节约发射源所耗费的资源,为市政规划、建筑规划等相关领域提供了技术与方法支撑。
根据本发明的其中一方面,本发明解决其技术问题所采用的技术方案是:构造一种面向二维规则矢量空间数据的可视域分析方法,包含如下步骤:
步骤1)、使用MapGIS平台的SFeatureCls类的Open方法打开目标点矢量数据和遮挡物矢量数据;
步骤2)、使用MapGIS平台的SFeatureCls类的Select方法查询目标点矢量数据得到目标点矢量数据集dataset,并使用MapGIS平台的Recordset类的MoveFirst方法来获取目标点矢量数据集dataset的第一个矢量数据点,作为当前矢量数据点;
步骤3)、使用MapGIS平台的SFeatureCls类的Select方法,以当前矢量数据点为圆心,以某一固定长度为半径,对遮挡物矢量数据作圆查询,查询结果是一系列遮挡物的集合recordset,使用MapGIS平台的Recordset类的MoveFirst方法来获取遮挡物数据集recordset的第一个遮挡物,作为当前遮挡物;
步骤4)、获取到recordset的Geometry属性,根据属性Geometry获取当前遮挡物的边界Boundary,并将边界Boundary转换成GeoVarLine类,然后使用MapGIS平台的GeoVarLine类的Get2dots方法获取当前遮挡物的边界顶点集dots_v;
步骤5)、使用MapGIS平台的Dots类的GetItem方法获取顶点集dots_v里的一个顶点作为当前顶点,将当前矢量数据点与当前遮挡物的该当前顶点连线形成第一类型直线,根据当前遮挡物边界的顶点集dots_v,将当前遮挡物的每条边当成一条由两顶点组成的第二类型直线,用数学方法依次求取各条第二类型直线与第一类型直线的交点坐标,只保存当前遮挡物的每条边上的交点坐标和交点坐标两侧的端点坐标,当前遮挡物的每条边上以外的交点坐标不予保存;
步骤6)、根据步骤5计算的交点坐标的个数,计算出有效交点和有效顶点;其中,
若交点坐标的个数为1,则说明对应交点为当前矢量数据点在当前遮挡物遮挡下的不可视范围最外侧的边界点,同时这个边界点也是遮挡物的顶点,即有效顶点,将有效顶点保存在数组Arr里;
若交点坐标的个数为偶数,则对应交点全部为无效交点,然后判断当前顶点是否有效:首先计算当前矢量数据点与每个交点的距离d1,然后找出距离最小的那个交点,记最小距离为d1_min,再计算当前矢量数据点与当前顶点的距离d2,若d1_min小于d2,则当前顶点为无效顶点,否则顶点为有效顶点,并将有效顶点保存在数组Arr里;
若交点坐标的个数为不等于1的奇数,首先计算每个交点与当前矢量数据点的距离d3,找出距离最小的交点,记最小距离为d3_min,再计算当前顶点与当前矢量数据点的距离d4,若d3_min小于d4,则说明当前顶点和所有交点均为无效点,否则顶点和所有交点均为有效点,将有效顶点保存在数组Arr里,将有效交点保存在数组Arr1里;
此时,当前顶点的有效顶点和有效交点的坐标计算完毕,判断dots_v里的所有顶点是否计算完毕,若计算完毕,转步骤7;否则转步骤5计算下一个顶点的有效交点和有效顶点,直到所有顶点的有效交点和有效顶点都计算完毕;
步骤7)、根据步骤6计算的有效交点和有效顶点,按顺序保存在MapGIS平台的提供的dots_r数组里;
步骤8)、根据步骤7中得到的数组dots_r,计算当前矢量数据点的视野盲区最外侧边界点的连线与当前矢量数据点在无遮挡情况下的视野范围边界的弧段点,构成弧段点的点集dots_a;
步骤9)、使用MapGIS平台提供的Dots类的Append方法,将步骤8计算得到的dots_a添加到步骤7计算的dots_r中,为了使其组成一个封闭的图形,还需要将dots_r数组中的第一个点添加到dots_r数组的最后,使其首尾点重合,这样dots_r数组中的点就能按照点顺序连接成一个封闭的几何图形,即为当前矢量数据点在某一遮挡物遮挡下的视野盲区;
步骤10)、使用MapGIS平台提供的RecordSet类MoveNext的方法获取遮挡物数据集recordset的下一个遮挡物,若recordset中没有下一个遮挡物,转步骤11,如果有,则将下一个遮挡物作为新的当前遮挡物,则转步骤4计算当前矢量数据点在下一个遮挡物遮挡下的视野盲区;
步骤11)、使用MapGIS平台提供的GeoPolygon类的Union方法将计算得到的所有视野盲区叠加求并,得到当前矢量数据点可视范围内的总视野盲区,再使用GeoPolygon类的Difference方法将目标点矢量数据在无遮挡情况下的可视范围与总视野盲区叠加求差,即可得到当前矢量数据点实际可视范围;使用MapGIS平台的Recordset类MoveNext方法来获取目标点矢量数据集dataset的下一个矢量数据点,若datasetrecordset中没有下一个矢量数据点,则转步骤12),若有下一个矢量数据点,则将下一个矢量数据点作为新的当前矢量数据点,转步骤3)计算下一个矢量数据点的实际可视范围;
步骤12)、使用MapGIS平台提供的GeoPolygon类的Union方法将所有矢量数据点的实际可视范围叠加求并,即可得到该目标点矢量数据的总可视域。
进一步地,在本发明的面向二维规则矢量空间数据的可视域分析方法中,步骤5中,所述只保存当前遮挡物的每条边上的交点坐标和交点坐标两侧的端点坐标中,保存的格式为:[交点横坐标X0,交点纵坐标Y0,端点1的横坐标X1,端点1的纵坐标Y1,端点2的横坐标X2,端点2的纵坐标Y2]。
进一步地,在本发明的面向二维规则矢量空间数据的可视域分析方法中,步骤6中,
有效顶点在数组Arr里的保存格式为:[顶点横坐标X,顶点纵坐标Y,是否为不可视范围的最外侧边界点symbol],symbol值为1代表是,0代表否;
有效交点在数组Arr1里的保存格式为:[交点横坐标X0,交点纵坐标Y0,端点1的横坐标X1,端点1的纵坐标Y1,端点2的横坐标X2,端点2的纵坐标Y2]。
进一步地,在本发明的面向二维规则矢量空间数据的可视域分析方法中,步骤7具体实现方法为:
首先遍历Arr数组的每个元素,查找symbol值为1的元素,并记录其下标值index;
然后判断Arr数组的第index+1个元素的symbol值是否为1,若为1,则从数组Arr的第index+1个元素开始遍历Arr,遍历长度为数组长度L与下标值index+1的和;
当index+1小于Arr数组长度L时,判断每个元素的X,Y值和数组Arr1数组的元素里的端点值的X1、Y1、X2、Y2是否相等,若X、Y和数组Arr1数组中的某一元素的X1、Y1相等,则在顶点坐标(X,Y)后面有一个有效交点,即与X1、Y1相对应的X0、Y0,先把顶点(X,Y)保存在数组dots_r里,保存格式为[X,Y],再将交点(X0,Y0)保存在数组dots_r里,保存格式为[X0,Y0];
若X、Y与数组Arr1的某一元素的X2、Y2相等,则在顶点坐标(X,Y)前面有一个有效交点,即与X2、Y2相对应的X0、Y0,先把交点(X0,Y0)保存在数组dots_r里,保存格式为[X0,Y0],再将顶点(X2,Y2)保存在数组dots_r里,保存格式为[X2,Y2];
若在数组Arr1里找不到与X、Y相等的端点,则只需将顶点(X,Y)加入数组dots_r里;
将index加1,遍历Arr数组的下一个元素,当index+1大于或等于L时,索引下标不再是index+1,而是index+1-L,目的是把index+1之前的元素也能遍历到,判断过程与index+1小于L时相同;
若Arr数组的第index+1个元素的symbol值不为1,从数组Arr的第index个元素开始遍历Arr,遍历长度为数组长度L与下标值index的和,遍历过程和Arr数组的第index+1个元素的symbol值为1的遍历过程相同。
进一步地,在本发明的面向二维规则矢量空间数据的可视域分析方法中,步骤8的具体实现方法如下:
步骤81)、首先使用MapGIS平台提供的Dots类的GetItem方法获取数组dots_r的第一个元素,与当前矢量数据点连接成直线,用数学方法求该直线与以当前矢量数据点为圆心,以某一固定长度为半径的圆的交点,交点会有两个,需作判断,保留需要的交点,判断依据是哪个交点与当前矢量数据点的视野盲区的最外侧边界点的距离小,就保留该交点;
步骤82)、再使用MapGIS平台提供的Dots类的GetItem方法获取数组dots_r的最后一个元素,采用与步骤81相同的方法获取另一个交点;当两个交点计算完毕后,这两个交点即为所求弧段的起点和终点,根据起点和终点,计算弧段的中间点,根据中间点计算公式得到起点和终点连线的中间点,将中间点(X中,Y中)与当前矢量数据点连成直线,用数学方法求该直线与以当前矢量数据点为圆心,以某一固定长度为半径的圆的交点,同样交点会有两个,采用与步骤81相同的方法,保留需要的一个交点,则交点(X中1,Y中1)即为弧度的中间点,使用MapGIS平台提供的GeoArc3类的Set方法构造三点圆弧,三点包括起点、中间点(X中1,Y中1)、终点,再使用MapGIS平台提供的GeoArc3类的DisperseTodots方法将三点圆弧离散化形成弧段点,并使用GeoArc3类Get2dots方法获取弧段点,构成弧段点的点集dots_a。
根据本发明的另一方面,本发明为解决其技术问题,还提供了一种面向二维规则矢量空间数据的可视域分析装置,具备计算机存储介质,所述计算机存储介质内存储有计算机可执行指令,所述计算机可执行指令用于实现如上述任一项所述的面向二维规则矢量空间数据的可视域分析方法。
本发明最明显的不同在于是根据二维规则矢量空间数据计算目标点矢量数据的可视范围,分别经过矢量数据的获取,视野盲区有效交点和顶点计算,以及计算构成弧段的点集,并将有效交点、有效顶点、弧段点按顺序连接成闭合的几何图形,从而构成一个目标点矢量数据在一个遮挡物遮挡下的视野盲区,将所有的视野盲区叠加求并,得到一个目标点矢量数据的在其可视范围内所有遮挡物遮挡下的总视野盲区,将一个目标点矢量数据在无遮挡下的可视范围与总视野盲区叠加求差,得到一个目标点矢量数据的实际可视范围,最后将所有目标点矢量数据的可视范围叠加求并,即得到目标点矢量数据的可视域。此方法不仅能对可视域要求高的发射源安装点进行合理配置,而且能节约发射源所耗费的资源,为分析和决策提供支持。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明的面向二维规则矢量空间数据的可视域分析方法一实施例的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
为了更清晰的说明本发明的思想,下面以路灯点作为目标点矢量数据、以建筑物作为遮挡物矢量数据为实施例进行进一步的说明。
参考图1,本实施例的面向二维规则矢量空间数据的可视域分析方法具体包含如下步骤:
步骤1)、使用MapGIS平台的SFeatureCls类的Open方法打开路灯点矢量数据和建筑物矢量数据。
步骤2)、使用MapGIS平台的SFeatureCls类的Select方法查询得到路灯点数据集dataset,并使用MapGIS平台的Recordset类的MoveFirst方法来获取路灯点数据集dataset的第一个路灯点,作为当前路灯点。
步骤3)、使用MapGIS平台的SFeatureCls类的Select方法,以当前路灯点的平面坐标点为圆心,以某一固定长度为半径对建筑物矢量数据作圆查询,查询结果是建筑物的集合recordset,并使用MapGIS平台的Recordset类的MoveFirst方法来获取遮挡物数据集recordset的第一个建筑物,作为当前建筑物。
步骤4)、获取到recordset的Geometry属性,根据属性Geometry获取建筑物边界Boundary,并将建筑物边界Boundary转换成GeoVarLine类,然后使用MapGIS平台的GeoVarLine类的Get2dots方法获取当前建筑物的边界顶点集dots_v。
步骤5)、使用MapGIS平台的Dots类的GetItem方法获取顶点集dots_v里的一个顶点作为当前顶点,将当前路灯点与该当前顶点连成一条直线,作为形成第一类型直线。根据建筑物边界的顶点集dots_v,将当前建筑物的每条边当成一条由两相邻顶点组成的直线,作为第二类型直线,用数学方法依次求取各条第二类型直线与第一类型直线的交点坐标,只保存当前遮挡物的每条边上的交点坐标和交点两侧的端点坐标,保存格式为:[交点横坐标X0,交点纵坐标Y0,端点1的横坐标X1,端点1的纵坐标Y1,端点2的横坐标X2,端点2的纵坐标Y2],当前遮挡物的每条边上以外的交点坐标不予保存。
步骤6)、根据步骤5)计算的交点坐标的个数,筛选出有效交点和有效顶点。
若交点个数为1,则说明对应交点是当前路灯点在当前建筑物遮挡下的不可视范围最外侧的边界点,同时这个点也是当前建筑物边界的顶点,即有效顶点,需要保留在数组Arr里,保存格式为[顶点横坐标X,顶点纵坐标Y,是否为不可视范围的最外侧边界点symbol(symbol值为1代表是,0代表否)]。
若交点个数为偶数,则当前交点全部为无效交点,然后判断当前顶点是否有效,首先计算当前路灯点与除该当前顶点外的每个交点的距离d1,然后找出距离最小的那个交点,记最小距离为d1_min,再计算当前路灯点与该当前顶点的距离d2,若d1_min小于d2,则当前顶点为无效顶点,否则当前顶点为有效顶点,并将其保存在数组Arr里,保存格式为[顶点横坐标X,顶点纵坐标Y,是否为不可视范围的最外侧边界点symbol(symbol值为1代表是,0代表否)]。
若交点个数为不等于1的奇数,首先计算除该当前顶点外每个交点与当前路灯点的距离d3,找出距离最小的交点,记最小距离为d3_min,再计算该当前顶点与当前路灯点的距离d4,若d3_min小于d4,则说明当前顶点和交点均为无效点,否则当前顶点和交点均为有效点。将有效顶点保存在数组Arr里,保存格式为[顶点横坐标X,顶点纵坐标Y,是否为不可视范围的最外侧边界点symbol(symbol值为1代表是,0代表否)],将有效交点保存在数组Arr1里,保存格式为[交点横坐标X0,交点纵坐标Y0,端点1的横坐标X1,端点1的纵坐标Y1,端点2的横坐标X2,端点2的纵坐标Y2]。
此时,当前顶点的有效顶点和有效交点的坐标计算完毕,判断dots_v里的所有顶点是否计算完毕,若计算完毕,转步骤7;否则转步骤5计算下一个顶点的有效交点和有效顶点,直到所有顶点的有效交点和有效顶点都计算完毕。
步骤7)、根据步骤6)计算的有效交点和有效顶点,按顺序保存在MapGIS平台的提供的dots_r数组里。
首先遍历Arr数组的每个元素,查找symbol值为1的元素,并记录其下标值index。
然后判断Arr数组的第index+1个元素的symbol值是否为1,若为1,则从数组Arr的第index+1个元素开始遍历Arr,遍历长度为数组长度L与下标值index+1的和。
当index+1小于Arr数组长度L时,判断每个元素的X,Y值和数组Arr1数组的元素里的端点值的X1、Y1、X2、Y2是否相等,若X、Y和数组Arr1数组中的某一元素的X1、Y1相等,则在顶点坐标(X,Y)后面有一个有效交点,即与X1、Y1相对应的X0、Y0,先把顶点(X,Y)保存在数组dots_r里,保存格式为[X,Y],再将交点(X0,Y0)保存在数组dots_r里,保存格式为[X0,Y0]。
若X、Y与数组Arr1的某一元素的X2、Y2相等,则在顶点坐标(X,Y)前面有一个有效交点,即与X2、Y2相对应的X0、Y0,先把交点(X0,Y0)保存在数组dots_r里,保存格式为[X0,Y0],再将顶点(X2,Y2)保存在数组dots_r里,保存格式为[X2,Y2]。
若在数组Arr1里找不到与X、Y相等的端点,则只需将顶点(X,Y)加入数组dots_r里。
将index加1,遍历Arr数组的下一个元素。当index+1大于或等于L时,索引下标不再是index+1,而是index+1-L,目的是把index+1之前的元素也能遍历到,判断过程与index+1小于L时相同。
若Arr数组的第index+1个元素的symbol值是不为1,从数组Arr的第index个元素开始遍历Arr,遍历长度为数组长度L与下标值index的和,遍历过程和Arr数组的第index+1个元素的symbol值为1的遍历过程相同。
步骤8)、根据步骤7)中计算得到的数组dots_r,计算当前路灯点和其视野盲区最外侧边界点的连线与当前路灯点视野范围边界的弧段点,构成弧段点的点集dots_a。因为步骤7)中已经把所有的有效交点和有效顶点按顺序保存在数组dots_r,所以很容易就能获取当前路灯点的视野盲区最外侧边界点,即数组dots_r的第一个元素和最后一个元素。
首先使用MapGIS平台提供的Dots类的GetItem方法获取数组dots_r的第一个元素,与当前路灯点连接成直线,用数学方法求该直线与以当前路灯点为圆心,以某一固定长度为半径的圆的交点,交点会有两个,需作判断,保留需要的交点,判断依据是哪个交点与当前路灯点的视野盲区的最外侧边界点的距离小,就保留该交点。
再使用MapGIS平台提供的Dots类的GetItem方法获取数组dots_r的最后一个元素,方法同上,也保留了一个交点。当两个交点计算完毕后,这两个交点即为所求弧段的起点和终点,根据起点和终点,计算弧段的中间点,根据中间点计算公式得到起点和终点连线的中间点,将该中间点(X中,Y中)与当前路灯点连成直线,用数学方法求该直线与以当前路灯点为圆心,以某一固定长度为半径的圆的交点,同样交点会有两个,判断方法同上,只保留需要的交点。则交点(X中1,Y中1)即为弧度的中间点,使用MapGIS平台提供的GeoArc3类的Set方法构造三点圆弧,三点包括起点、中间点(X中1,Y中1)、终点。再使用MapGIS平台提供的GeoArc3类的DisperseTodots方法将圆弧离散化,并使用GeoArc3类Get2dots方法获取构成弧段点的点集dots_a。
步骤9)、使用MapGIS平台提供的Dots类的Appen方法,将步骤8计算得到的dots_a添加到步骤7计算的dots_r中,为了使其组成一个封闭的图形,还需要将dots_r数组中的第一个点添加到dots_r数组的最后,使其首尾点重合,这样dots_r数组中的点就能按照点顺序连接成一个封闭的几何图形,即为当前路灯点在一个建筑物遮挡下的视野盲区。
步骤10)、使用MapGIS平台提供的RecordSet类MoveNext的方法获取建筑物集recordset的下一个建筑物,判断recordset是否为null,如果recordset为null,转步骤11;如果不为null,转步骤4计算当前路灯点在下一个建筑物遮挡下的视野盲区。
步骤11)、使用MapGIS平台提供的GeoPolygon类的Union方法将计算得到的所有视野盲区叠加求并,得到当前路灯点在无遮挡情况下的可视范围内的总视野盲区,再使用GeoPolygon类的Difference方法将当前路灯点在无遮挡情况下的可视范围与总视野盲区叠加求差,即可得到当前路灯点实际可视范围。使用MapGIS平台的Recordset类MoveNext方法来获取路灯点数据集dataset的下一个路灯点,判断dataset是否为null,若为null转步骤12);若不为null,转步骤3)计算下一个路灯点的实际可视范围。
步骤12)、使用MapGIS平台提供的GeoPolygon类的Union方法将所有路灯点的实际可视范围叠加求并,即可得到路灯点矢量数据的总可视域。
本发明已经过严格的测试和验证,通过本方法,可快速、精确地计算二维规则矢量空间数据的可视域,所述功能都全部实现,具有应用范围广、适用性高等特点。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (6)
1.一种面向二维规则矢量空间数据的可视域分析方法,其特征在于,包含如下步骤:
步骤1)、使用MapGIS平台的SFeatureCls类的Open方法打开目标点矢量数据和遮挡物矢量数据;
步骤2)、使用MapGIS平台的SFeatureCls类的Select方法查询目标点矢量数据得到目标点矢量数据集dataset,并使用MapGIS平台的Recordset类的MoveFirst方法来获取目标点矢量数据集dataset的第一个矢量数据点,作为当前矢量数据点;
步骤3)、使用MapGIS平台的SFeatureCls类的Select方法,以当前矢量数据点为圆心,以某一固定长度为半径,对遮挡物矢量数据作圆查询,查询结果是一系列遮挡物的集合recordset,使用MapGIS平台的Recordset类的MoveFirst方法来获取遮挡物数据集recordset的第一个遮挡物,作为当前遮挡物;
步骤4)、获取到recordset的Geometry属性,根据属性Geometry获取当前遮挡物的边界Boundary,并将边界Boundary转换成GeoVarLine类,然后使用MapGIS平台的GeoVarLine类的Get2dots方法获取当前遮挡物的边界顶点集dots_v;
步骤5)、使用MapGIS平台的Dots类的GetItem方法获取顶点集dots_v里的一个顶点作为当前顶点,将当前矢量数据点与当前遮挡物的该当前顶点连线形成第一类型直线,根据当前遮挡物边界的顶点集dots_v,将当前遮挡物的每条边当成一条由两顶点组成的第二类型直线,用数学方法依次求取各条第二类型直线与第一类型直线的交点坐标,只保存当前遮挡物的每条边上的交点坐标和交点坐标两侧的端点坐标,当前遮挡物的每条边上以外的交点坐标不予保存;
步骤6)、根据步骤5计算的交点坐标的个数,计算出有效交点和有效顶点;其中,
若交点坐标的个数为1,则说明对应交点为当前矢量数据点在当前遮挡物遮挡下的不可视范围最外侧的边界点,同时这个边界点也是当前遮挡物的顶点,即有效顶点,将有效顶点保存在数组Arr里;
若交点坐标的个数为偶数,则对应交点全部为无效交点,然后判断当前顶点是否有效:首先计算当前矢量数据点与每个交点的距离d1,然后找出距离最小的那个交点,记最小距离为d1_min,再计算当前矢量数据点与当前顶点的距离d2,若d1_min小于d2,则当前顶点为无效顶点,否则顶点为有效顶点,并将有效顶点保存在数组Arr里;
若交点坐标的个数为不等于1的奇数,首先计算每个交点与当前矢量数据点的距离d3,找出距离最小的交点,记最小距离为d3_min,再计算当前顶点与当前矢量数据点的距离d4,若d3_min小于d4,则说明当前顶点和所有交点均为无效点,否则顶点和所有交点均为有效点,将有效顶点保存在数组Arr里,将有效交点保存在数组Arr1里;
此时,当前顶点的有效顶点和有效交点的坐标计算完毕,判断dots_v里的所有顶点是否计算完毕,若计算完毕,转步骤7;否则转步骤5计算下一个顶点的有效交点和有效顶点,直到所有顶点的有效交点和有效顶点都计算完毕;
步骤7)、根据步骤6计算的有效交点和有效顶点,按顺序保存在MapGIS平台的提供的dots_r数组里;
步骤8)、根据步骤7中得到的数组dots_r,计算当前矢量数据点的视野盲区最外侧边界点的连线与当前矢量数据点在无遮挡情况下的视野范围边界的弧段点,构成弧段点的点集dots_a;
步骤9)、使用MapGIS平台提供的Dots类的Append方法,将步骤8计算得到的dots_a添加到步骤7计算的dots_r中,为了使其组成一个封闭的图形,还需要将dots_r数组中的第一个点添加到dots_r数组的最后,使其首尾点重合,这样dots_r数组中的点就能按照点顺序连接成一个封闭的几何图形,即为当前矢量数据点在某一遮挡物遮挡下的视野盲区;
步骤10)、使用MapGIS平台提供的RecordSet类MoveNext的方法获取遮挡物数据集recordset的下一个遮挡物,若recordset中没有下一个遮挡物,转步骤11,如果有,则将下一个遮挡物作为新的当前遮挡物,则转步骤4计算当前矢量数据点在下一个遮挡物遮挡下的视野盲区;
步骤11)、使用MapGIS平台提供的GeoPolygon类的Union方法将计算得到的所有视野盲区叠加求并,得到当前矢量数据点可视范围内的总视野盲区,再使用GeoPolygon类的Difference方法将目标点矢量数据在无遮挡情况下的可视范围与总视野盲区叠加求差,即可得到当前矢量数据点实际可视范围;使用MapGIS平台的Recordset类MoveNext方法来获取目标点矢量数据集dataset的下一个矢量数据点,若datasetrecordset中没有下一个矢量数据点,则转步骤12),若有下一个矢量数据点,则将下一个矢量数据点作为新的当前矢量数据点,转步骤3)计算下一个矢量数据点的实际可视范围;
步骤12)、使用MapGIS平台提供的GeoPolygon类的Union方法将所有矢量数据点的实际可视范围叠加求并,即可得到该目标点矢量数据的总可视域。
2.根据权利要求1所述的面向二维规则矢量空间数据的可视域分析方法,其特征在于,步骤5中,所述只保存当前遮挡物的每条边上的交点坐标和交点坐标两侧的端点坐标中,保存的格式为:[交点横坐标X0,交点纵坐标Y0,端点1的横坐标X1,端点1的纵坐标Y1,端点2的横坐标X2,端点2的纵坐标Y2]。
3.根据权利要求1所述的面向二维规则矢量空间数据的可视域分析方法,其特征在于,步骤6中,
有效顶点在数组Arr里的保存格式为:[顶点横坐标X,顶点纵坐标Y,是否为不可视范围的最外侧边界点symbol],symbol值为1代表是,0代表否;
有效交点在数组Arr1里的保存格式为:[交点横坐标X0,交点纵坐标Y0,端点1的横坐标X1,端点1的纵坐标Y1,端点2的横坐标X2,端点2的纵坐标Y2]。
4.根据权利要求3所述的面向二维规则矢量空间数据的可视域分析方法,其特征在于,步骤7具体实现方法为:
首先遍历Arr数组的每个元素,查找symbol值为1的元素,并记录其下标值index;
然后判断Arr数组的第index+1个元素的symbol值是否为1,若为1,则从数组Arr的第index+1个元素开始遍历Arr,遍历长度为数组长度L与下标值index+1的和;
当index+1小于Arr数组长度L时,判断每个元素的X,Y值和数组Arr1数组的元素里的端点值的X1、Y1、X2、Y2是否相等,若X、Y和数组Arr1数组中的某一元素的X1、Y1相等,则在顶点坐标(X,Y)后面有一个有效交点,即与X1、Y1相对应的X0、Y0,先把顶点(X,Y)保存在数组dots_r里,保存格式为[X,Y],再将交点(X0,Y0)保存在数组dots_r里,保存格式为[X0,Y0];
若X、Y与数组Arr1的某一元素的X2、Y2相等,则在顶点坐标(X,Y)前面有一个有效交点,即与X2、Y2相对应的X0、Y0,先把交点(X0,Y0)保存在数组dots_r里,保存格式为[X0,Y0],再将顶点(X2,Y2)保存在数组dots_r里,保存格式为[X2,Y2];
若在数组Arr1里找不到与X、Y相等的端点,则只需将顶点(X,Y)加入数组dots_r里;
将index加1,遍历Arr数组的下一个元素,当index+1大于或等于L时,索引下标不再是index+1,而是index+1-L,目的是把index+1之前的元素也能遍历到,判断过程与index+1小于L时相同;
若Arr数组的第index+1个元素的symbol值不为1,从数组Arr的第index个元素开始遍历Arr,遍历长度为数组长度L与下标值index的和,遍历过程和Arr数组的第index+1个元素的symbol值为1的遍历过程相同。
5.根据权利要求1所述的面向二维规则矢量空间数据的可视域分析方法,其特征在于,步骤8的具体实现方法如下:
步骤81)、首先使用MapGIS平台提供的Dots类的GetItem方法获取数组dots_r的第一个元素,与当前矢量数据点连接成直线,用数学方法求该直线与以当前矢量数据点为圆心,以某一固定长度为半径的圆的交点,交点会有两个,需作判断,保留需要的交点,判断依据是哪个交点与当前矢量数据点的视野盲区的最外侧边界点的距离小,就保留该交点;
步骤82)、再使用MapGIS平台提供的Dots类的GetItem方法获取数组dots_r的最后一个元素,采用与步骤81相同的方法获取另一个交点;当两个交点计算完毕后,这两个交点即为所求弧段的起点和终点,根据起点和终点,计算弧段的中间点,根据中间点计算公式得到起点和终点连线的中间点,将中间点(X中,Y中)与当前矢量数据点连成直线,用数学方法求该直线与以当前矢量数据点为圆心,以某一固定长度为半径的圆的交点,同样交点会有两个,采用与步骤81相同的方法,保留需要的一个交点,则交点(X中1,Y中1)即为弧度的中间点,使用MapGIS平台提供的GeoArc3类的Set方法构造三点圆弧,三点包括起点、中间点(X中1,Y中1)、终点,再使用MapGIS平台提供的GeoArc3类的DisperseTodots方法将三点圆弧离散化形成弧段点,并使用GeoArc3类Get2dots方法获取弧段点,构成弧段点的点集dots_a。
6.一种面向二维规则矢量空间数据的可视域分析装置,具备计算机存储介质,所述计算机存储介质内存储有计算机可执行指令,其特征在于,所述计算机可执行指令用于实现如权利要求1-5任一项所述的面向二维规则矢量空间数据的可视域分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910830422.4A CN110728652B (zh) | 2019-09-04 | 2019-09-04 | 面向二维规则矢量空间数据的可视域分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910830422.4A CN110728652B (zh) | 2019-09-04 | 2019-09-04 | 面向二维规则矢量空间数据的可视域分析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110728652A CN110728652A (zh) | 2020-01-24 |
CN110728652B true CN110728652B (zh) | 2021-09-14 |
Family
ID=69217865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910830422.4A Active CN110728652B (zh) | 2019-09-04 | 2019-09-04 | 面向二维规则矢量空间数据的可视域分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110728652B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113117334B (zh) * | 2021-04-14 | 2023-06-20 | 广州虎牙科技有限公司 | 目标点的可见区域的确定方法及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8400448B1 (en) * | 2007-12-05 | 2013-03-19 | The United States Of America, As Represented By The Secretary Of The Navy | Real-time lines-of-sight and viewsheds determination system |
CN105225230A (zh) * | 2015-09-11 | 2016-01-06 | 浙江宇视科技有限公司 | 一种识别前景目标对象的方法及装置 |
CN105893675A (zh) * | 2016-03-31 | 2016-08-24 | 东南大学 | 一种基于天空可视域评价的开放空间周边建筑形态优化控制方法 |
CN109857826A (zh) * | 2019-01-24 | 2019-06-07 | 苏州维众数据技术有限公司 | 一种摄像机可视域标注系统及其标注方法 |
CN109883401A (zh) * | 2019-03-28 | 2019-06-14 | 东南大学 | 一种城市观山可视域的测量方法及系统 |
CN110135014A (zh) * | 2019-04-25 | 2019-08-16 | 中国地质大学(武汉) | 一种线状道路要素自动化建模方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6343808B2 (ja) * | 2013-08-08 | 2018-06-20 | パナソニックIpマネジメント株式会社 | 視野算出装置および視野算出方法 |
-
2019
- 2019-09-04 CN CN201910830422.4A patent/CN110728652B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8400448B1 (en) * | 2007-12-05 | 2013-03-19 | The United States Of America, As Represented By The Secretary Of The Navy | Real-time lines-of-sight and viewsheds determination system |
CN105225230A (zh) * | 2015-09-11 | 2016-01-06 | 浙江宇视科技有限公司 | 一种识别前景目标对象的方法及装置 |
CN105893675A (zh) * | 2016-03-31 | 2016-08-24 | 东南大学 | 一种基于天空可视域评价的开放空间周边建筑形态优化控制方法 |
CN109857826A (zh) * | 2019-01-24 | 2019-06-07 | 苏州维众数据技术有限公司 | 一种摄像机可视域标注系统及其标注方法 |
CN109883401A (zh) * | 2019-03-28 | 2019-06-14 | 东南大学 | 一种城市观山可视域的测量方法及系统 |
CN110135014A (zh) * | 2019-04-25 | 2019-08-16 | 中国地质大学(武汉) | 一种线状道路要素自动化建模方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110728652A (zh) | 2020-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106780738B (zh) | 基于输变电工程环境敏感区的路径站址优化方法 | |
CN100583084C (zh) | 对程序几何对象进行三角剖分 | |
CN102314711B (zh) | 矿产资源评价信息的三维可视化方法及其装置 | |
Park et al. | Hybrid line simplification for cartographic generalization | |
Shen et al. | A polygon aggregation method with global feature preservation using superpixel segmentation | |
JP2006190302A (ja) | 2次元建物データのリアルタイム3次元変換方法及びその装置、並びにそれを利用した2次元建物データのリアルタイム3次元視覚化方法及びその装置 | |
CN112528508B (zh) | 电磁可视化方法和装置 | |
US7940262B2 (en) | Unification and part hiding in three dimensional geometric data | |
US6850234B2 (en) | Method and system for determining visible parts of transparent and nontransparent surfaces of there-dimensional objects | |
CN110827302A (zh) | 基于深度图卷积网络的点云目标提取方法及装置 | |
JP2002531905A (ja) | ボクセル空間から透視描画を形成する方法 | |
US20100086208A1 (en) | Almost rectangular triangulations | |
CN110728652B (zh) | 面向二维规则矢量空间数据的可视域分析方法及装置 | |
CN113761093A (zh) | 空间二元组的确定方法、装置、计算机设备和存储介质 | |
CN113724279A (zh) | 路网自动划分交通小区的系统、方法、设备及存储介质 | |
Mizutani | Construction of an analytical framework for polygon-based land use transition analyses | |
Van Lankveld et al. | Identifying rectangles in laser range data for urban scene reconstruction | |
Li et al. | An area merging method in map generalization considering typical characteristics of structured geographic objects | |
Lee et al. | Map segmentation for geospatial data mining through generalized higher-order Voronoi diagrams with sequential scan algorithms | |
Ware | A procedure for automatically correcting invalid flat triangles occurring in triangulated contour data | |
CN101546438A (zh) | 基于约束狄郎宁三角网技术的多个区域拓扑层叠置分析方法 | |
US11988522B2 (en) | Method, data processing apparatus and computer program product for generating map data | |
Nagy et al. | New algorithm to find isoptic surfaces of polyhedral meshes | |
CN107958483B (zh) | 一种地层建模方法 | |
CN112362073B (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220113 Address after: 430000, 7th floor, Beidou building, 980 Gaoxin Avenue, Wuhan East Lake New Technology Development Zone, Wuhan City, Hubei Province Patentee after: HUBEI DIXIN TECHNOLOGY GROUP CO.,LTD. Address before: 430000 Lu Mill Road, Hongshan District, Wuhan, Hubei Province, No. 388 Patentee before: CHINA University OF GEOSCIENCES (WUHAN CITY) |