CN114912268B - 一种计算机仿真中实时快速通视判断方法 - Google Patents
一种计算机仿真中实时快速通视判断方法 Download PDFInfo
- Publication number
- CN114912268B CN114912268B CN202210500961.3A CN202210500961A CN114912268B CN 114912268 B CN114912268 B CN 114912268B CN 202210500961 A CN202210500961 A CN 202210500961A CN 114912268 B CN114912268 B CN 114912268B
- Authority
- CN
- China
- Prior art keywords
- point
- block
- position point
- pixel
- observation
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A90/00—Technologies having an indirect contribution to adaptation to climate change
- Y02A90/10—Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Geometry (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Image Analysis (AREA)
- Testing And Monitoring For Control Systems (AREA)
Abstract
本发明公开了一种计算机仿真中实时快速通视判断方法,包括以下步骤:基于给定的dem栅格数据进行栅格分块处理,所述栅格分块处理后进行再次划分和数值统计,获得各个块的统计信息,对所述统计信息进行优化存储处理,将优化存储处理后的统计信息按照顺序写入dem数据库;基于所述统计信息及计算机仿真系统,实时判断观察点和目标点之间的通视性。本发明能够处理较大的dem数据文件,能够支持的区域较大,分析精度高,能够大量减少不必要的文件IO操作,极大提高计算效率,本发明缓存压缩处理方法,能够缓存较通常方法多一倍的分块像素数据,这对于实时计算观察点对几百乃至几千个目标时,可以明显提高计算效率。
Description
技术领域
本发明属于通视分析技术领域,尤其涉及一种计算机仿真中实时快速通视判断方法。
背景技术
通视分析是指以某一观察点分析研究目标点的通视情况的一种地形分析方法,一般利用dem数据来分析判断地形上任意两点之间是否可以相互看见的技术方法,因此dem数据是通视分析计算的数据基础条件。通视分析应用广泛,我们简单介绍其中一个典型业务应用即雷达的探测目标。目前雷达探测目标的原理基本都是发射电磁波到目标,然后接收到被目标反射回来的电磁波,进行分析计算,进而得到目标的详细信息。因此,雷达能否探测到目标的前提条件就是雷达波能否到达目标,也就是雷达与目标之间是否是通视可见的(雷达电磁波的频率一般较高,不考虑电磁波的绕射等因素,可以认为是直线传播的)。
目前有很多通视分析的方法,基本都是对局部区域或精度要求较低的条件下提供的解决方法。更具体的可表述为:计算观测点A(已知经度纬度高度)到目标点B(已知经度纬度高度)之间的通视性,现有方法基本过程是根据观测点A和目标点B的位置,计算得到它们在dem数据中对应的像素位置,然后计算读取dem数据中A,B像素点之间的一些列像素值,也即得到一些列不同位置点上的地面高度值,然后提出各种判断方法分析得出A,B两点之间是否可见。之所以说现有这些方法都是对局部区域或精度要求较低的条件下提供的解决方法,是因为“读取dem数据中A,B像素点之间的一些列像素值这个过程”一般只适用于分析区域对应的dem数据量较小,可以一次性加载到内存中,然后从内存中得到A,B像素点之间的一些列像素值。对于分析的区域较大或dem数据精度较高的情况下,如分析全国范围内(东西约5200Km,南北约5500Km区域),给定的dem数据精度为30米的条件下,此时dem数据的像素宽度大约为17.4万个,像素高度大约为18.4万,整个dem数据文件(假设像素值类型为double)在无压缩情况下(如通常的tif文件格式)大约为238.5GB存储空间。此时,现有的通视分析方法就无法有效快速处理了,因为“读取dem数据中A,B像素点之间的一系列像素值这个过程”往往就需要非常大的内存空间和消耗很久的文件读取时间。
计算机仿真技术,是一种定量分析方法,通过建立某一过程或某一系统的模式,来描述该过程或该系统,然后用一系列有目的、有条件的计算机仿真实验来刻画系统的特征,从而得出数量指标,为决策者提供关于这一过程或系统的定量分析结果,作为决策的理论依据。仿真技术最初主要应用在业务领域,如产品研制等。计算机仿真系统中,其特点之一是周期性和时效性,具体以计算机仿真数字雷达系统来说,模拟数字雷达系统的工作过程,假设仿真模拟周期为1秒,那么该数字雷达系统将以1秒时间为周期,不断的对各个目标分析计算探测情况。此时,对数字雷达系统,其模型分析计算的时效性要求就非常高,例如对目标的通视计算要求非常快,否则就无法在给定的模拟周期内进行计算机仿真模拟雷达的工作过程了。
发明内容
本发明的目的在于提出一种计算机仿真中实时快速通视判断方法,实现了基于计算机仿真中实时计算观察点到大量目标点之间通视性判断。
为实现上述目的,本发明提供了一种计算机仿真中实时快速通视判断方法,包括以下步骤:
基于给定的dem栅格数据进行栅格分块处理,所述栅格分块处理后进行再次划分和数值统计,获得各个块的统计信息,对所述统计信息进行优化存储处理,将优化存储处理后的统计信息按照顺序写入dem数据库;
基于所述统计信息及计算机仿真系统,实时判断观察点和目标点之间的通视性。
可选的,所述栅格分块处理包括:基于给定的dem栅格数据选取块的大小,对块进行栅格分块处理,获得像素块;所述给定的栅格数据包括:dem栅格数据库名称,像素大小,分辨率,像素数据对应的地理区域坐标。
可选的,所述栅格分块处理后进行再次划分和数值统计包括:将所述像素块均匀划分为大小相等的4个子块,对所述4个子块的像素值进行读取,通过遍历算法获取每个子块像素值的最大值。
可选的,对所述每个子块的统计信息进行优化存储处理包括:
每个子块的像素值采用大于该子块统计信息的最大值的最小整数值的存储方式;
基于所述存储方式对所述4个字块按顺序进行整数数据类型的数值进行存储。
可选的,基于计算机仿真系统,实时判断观察点和目标点之间的通视性包括:
获取所述观察点和所述目标点在dem栅格数据库中的像素位置;
基于所述像素位置判断所述观察点和所述目标点之间距离划分每个距离步长,获得每个距离步长的位置点;
基于所述每个距离步长的位置点,确定位置点列表,当前位置点属于所述位置点列表则标记当前位置点的分块号,对同属于一个分块号的一组位置点进行可见性分析。
可选的,判断是否属于同一分块号的一组位置点包括:
基于所述位置点列表,从第一位置点开始计算所述第一位置点分块号,对所述第一位置点分块号赋值并将所述第一位置点添加到所述位置点列表中;
依次计算第二位置点的分块号是否属于所述当前位置点的分块号,当所述第二位置点的分块号属于所述当前位置点的分块号时,对所述第二位置点分块号赋值并将所述第二位置点添加到所述位置点列表中,直到某一位置点不属于当前分块号,则停止判断,获得最终位置点列表;
基于所述最终位置点列表判断所述当前位置点对所述观察点和所述目标点的可见性判断。
可选的,基于所述最终位置点列表判断所述当前位置点对所述观察点和所述目标点的可见性判断,具体包括:
获取所述当前位置点的分块号中4个子块的像素最大值,比较所述4个子块的像素最大值,获取所述当前位置点的分块号的像素最大值,基于所述当前位置点的分块号的像素最大值判断所述当前位置点对所述观察点和所述目标点是否存在遮挡的可能性;
当所述当前位置点对所述观察点和所述目标点不存在遮挡的可能性时,则完成对当前位置点分块的处理,从下一个位置点对逐个位置点判断是否属于同一分块号的一组位置点,并同时判断对所述观察点和所述目标点是否存在遮挡的可能性;
当所述当前位置点对所述观察点和所述目标点存在遮挡的可能性时,基于所述最终位置点列表判断所述当前位置点属于所述当前位置点分块的哪一个子块中,获得所述当前位置点4个子块的位置点列表;获取每个子块的位置点的像素最大值,判断每个子块位置点对所述观察点和所述目标点是否存在遮挡的可能性;
当所述每个子块位置点对所述观察点和所述目标点不存在遮挡的可能性,则对所述当前位置点的可见性判断完毕;当某一子块存在遮挡的可能性,则获取所述某一子块的经纬度和像素高度值,判断所述某一子块是否存在遮挡,存在遮挡则完成所述观察点和所述目标点的可见性判断。
可选的,判断所述当前位置点对所述观察点和所述目标点是否存在遮挡的可能性,包括:
当所述观察点的高程小于所述目标点的高程时,获取所述观察点和所述目标点水平位置中最后一个位置点距离所述观察点的水平第一距离,所述当前位置点分块的最大值小于所述观察点和所述目标点的高程时,不存在遮挡可能性;当所述当前位置点分块的最大值不小于所述观察点和所述目标点的高程时,存在遮挡可能性;
当所述观察点的高程小于所述目标点的高程时,获取所述观察点和所述目标点水平位置中的第一个位置点距离所述观察点的水平第二距离,所述当前位置点分块的最大值小于所述观察点和所述目标点的高程时,不存在遮挡可能性;当所述当前位置点分块的最大值不小于所述观察点和所述目标点的高程时,存在遮挡可能性。
可选的,所述计算机仿真中实时快速通视判断方法还包括:对所述观察点和所述目标点进行通视性判断后进行数据存储,采用1个double类型来存储2个像素值的方法压缩处理缓存块数据。
本发明技术效果:本发明公开了一种计算机仿真中实时快速通视判断方法,能够处理较大的dem数据文件,能够支持的区域较大,分析精度高,能够大量减少不必要的文件IO操作,极大提高计算效率,本发明缓存压缩处理方法,能够缓存较通常方法多一倍的分块像素数据,这对于实时计算观察点对几百乃至几千个目标时,可以明显提高计算效率。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本发明实施例计算机仿真中实时快速通视判断方法的流程示意图;
图2为本发明实施例确定观察点和目标点在dem栅格数据中的像素A、B位置点;
图3为本发明实施例将像素A到B之间均等划分后的位置点序列示意图;
图4为本发明实施例像素A,B之间位置点在子块的分布情况示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
如图1所示,本实施例中提供一种计算机仿真中实时快速通视判断方法,包括以下步骤:基于给定的dem栅格数据进行栅格分块处理,所述栅格分块处理后进行再次划分和数值统计,获得各个块的统计信息,对所述统计信息进行优化存储处理,将优化存储处理后的统计信息按照顺序写入dem数据库;
基于所述统计信息及计算机仿真系统,实时判断观察点和目标点之间的通视性。
栅格分块处理包括:基于给定的dem栅格数据的大小,选取块的大小,生成dem数据库。
所述计算机仿真系统为使用计算机模拟仿真作战或救援等业务的软件系统,通常简称计算机仿真系统;在这些软件系统中,经常需要做通视性的分析计算。
设置块的大小包括:dem数据在1000GB量级,块大小可以设置为256*256像素区域,block=256;dem数据在100GB到500GB量级,块大小可以设置为128*128像素区域,block=128;dem数据在100GB以下,块大小可以设置为64*64像素区域,block=64。假设dem栅格数据的行数为row行,列数为col列,共用row*col个像素,栅格数据的分辨率为resolution米,即每个像素的宽度为resolution米。
按block块大小对该dem栅格进行分块处理,对于最后行数不足block行时(即row/blcok不是整数),以像素值为0的像素补齐行数;对于最后列数不足block行时(即col/blcok不是整数),以像素值为0的像素补齐列数;得到s行,t列的像素块。其中,s=row/block,当row是block的整数倍时;s=[row/block]+1,当row不是block的整数倍时,符号[x]是对x取整;t=col/block,当col是block的整数倍时;t=[col/block]+1,当col不是block的整数倍时;最后得到s*t个像素块。
对像素块进行再次划分和数据统计,获得各个块的统计信息。具体包括:像素块用i表示,对像素块均匀划分为大小相等的4个子块,包括左上子块记为子块tl,右上子块记为子块tr,左下子块记为子块bl,右下子块记为子块br。分别对4个子块的像素值进行读取,通过遍历算法获取各个子块像素值的最大值,其中通视分析的目标一般为地面目标或空中目标,对于地面高程为负数的情况,是不会遮挡目标的,因此将地面高程为负数的情况记录为0值,具体表示如下:
子块tl中的像素值最大值为tl_max,如果tl_max<0,设置tl_max为0;子块tr中的像素值最大值为tr_max,如果tr_max<0,设置tr_max为0;子块bl中的像素值最大值为bl_max,如果bl_max<0,设置bl_max为0;子块br中的像素值最大值为br_max,如果br_max<0,设置br_max为0。因此像素块的统计信息为子块tl中的像素值最大值为tl_max米,子块tr中的像素值最大值为tr_max米,子块bl中的像素值最大值为bl_max米,子块br中的像素值最大值为br_max米。
对统计信息进行处理,采用4个整数数据类型ushort的数值存储统计信息,所述处理具体包括采用“大于块统计信息的最大值的最小整数值”存储方式进行存储统计信息。具体包括:假设某点地面高程为3412.4035米,对目标点构成遮挡,那么在该点距离地面高度为3413米时也一定能遮挡目标点,然而在距离地面高度为3412米的位置处不一定能对目标造成遮挡,所以,我们在存储块的统计信息时,需要保守的存储“大于块统计信息的最大值的最小整数值”,这样在后续的分析判断时不会引入数据误差,确保分析的准确性,同时又不会造成判断的条件过于宽松而增加后续分析处理时间。而无符号16bit位最大值可以达到65535,因此对4个子块tl、tr、bl、br的最大值(非负值)分别使用16bit位无符号的short类型来存储,共需要8byte存储空间。假设子块tl中的像素值最大值为tl_max=3124.20789;子块tr中的像素值最大值为tr_max=3324.61572;子块bl中的像素值最大值为bl_max=3012.61891;子块br中的像素值最大值为br_max=3274.18083;最后获得tl_max_s=3125,tr_max_s=3325,bl_max_s=3013,br_max_s=3275。
将统计信息按顺序写入dem数据库。需要先将给定的dem栅格数据的基本信息写入dem数据库,获得dem数据的区域范围,分辨率等信息。基本信息包括dem栅格数据文件名称,像素大小(行列数),分辨率,像素数据对应的地理区域坐标。地理区域坐标包括dem栅格的左上角像素的经纬度,右下角像素的经纬度。
启动仿真系统时,首先初始化仿真系统,读取dem数据库获得dem栅格数据的基本信息以及s*t个像素块的统计值,并进行存储。存储的方式包括:以三维数组的形式tileMaxValue[s][t][4]存储分块统计数据,其中tileMaxValue[0][0][0]表示s=0,t=0的块的子块tl中的像素值最大值,tileMaxValue[0][0][1]表示s=0,t=0的块的子块tr中的像素值最大值,tileMaxValue[0][0][2]表示s=0,t=0的块的子块bl中的像素值最大值,tileMaxValue[0][0][3]表示s=0,t=0的块的子块br中的像素值最大值。同时得到dem栅格数据的基本信息值如下:dem栅格数据库名称:xxx.dem;左上角点P1的经纬度:lonP1,latP1度;右下角点P2的经纬度:lonP2,latP2度;栅格数据的行数row,列数col,栅格像素的分辨率resolution米;栅格数据进行分块处理的块block值;划分后的块行数s,划分后的块列数t值。
在仿真系统开始进入仿真运行时,实时判定任意两点之间通视性过程:设定任意两点分别为观察点和目标点,其中观察点位置经纬度为lonA,latA度,地面高程hA米;目标点位置经纬度为lonB,latB度,地面高程hB米。
步骤一、确定观察点和目标点在dem栅格数据中的像素位置A、B。观察点在dem栅格数据中对应的像素A的行号为rowA,计算为:rowA=(latP1-latA)*row/(latP1-latP2),并对rowA取整得到像素A的行号lineRowA=[rowA](从0开始编号)。观察点在dem栅格数据中对应的像素A的列号为colA,计算为colA=(lonA-lonP1)*col/(lonP2-lonP1),并对colA取整得到像素A的列lineColA=[colA](从0开始编号)。同样的,目标点在dem栅格数据中对应的像素B的行号rowB=(latP1-latB)*row/(latP1-latP2),并对rowB取整得到像素B的行号lineRowB=[rowB](从0开始编号)。
目标点在dem栅格数据中对应的像素B的列号colB=(lonB-lonP1)*col/(lonP2-lonP1),并对colB取整得到像素B的列号lineColB=[colB](从0开始编号)。计算像素A所在的分块号,块行号A_u=[lineRowA/block],[x]表示对x取整数。块列号A_v=[lineColB/block],如图2所示。
步骤二、从像素A到像素B两点之间按顺序确定其每个距离步长delt的位置点所在的分块号,对于同属一个分块的一组位置点进行可见性判断分析,包括以下步骤:
首先,计算从像素A到像素B点的距离(指平面上距离,不考虑高度差),得到distAB米。以dem栅格数据的分辨率为间隔,将AB之间划分为m等分,m=[distAB/resolution]。根据给定的dem栅格数据精度取步长delt,delt=distAB/m米,将AB之间均等分割为m份。具体表示,像素A到像素B点之间的m个位置点D1,D2,...,Dm,其中位置点Di的经度为:lonDi=lonA+(lonB-lonA)*i/m;位置点Di的纬度为:latDi=latA+(latB-latA)*i/m;i>=1,且i<m,如图3所示。
其次,标记当前的分块行号为cur_u,分块列号为cur_v,当前属于该分块号的位置点列表标记为listPos,它是一个数组,存储元素为位置点。具体包括:从第一个位置点D1开始,计算出该点所在的分块号,以D1_u标记为分块行号,D1_v标记为分块列号,并赋值当前的分块行号cur_u=D1_u,分块列号cur_v=D1_v,列表listPos里添加元素位置点D1;再计算出第二个位置点D2所在的分块号,以D2_u标记为分块行号,D2_v标记为分块列号。
最后,判断位置点D2是否与当前的分块号(cur_u,cur_v)同属于一个分块号(即判断D2_u是否等于cur_u,并且D2_v是否等于cur_v);具体包括:
如果位置点D2是否与当前的分块号属于一个分块号,则将列表listPos里添加元素位置点D2,继续计算出位置点D3所在的分块号,以D3_u标记为分块行号,D3_v标记为分块列号;判断位置点D3是否与当前的分块号同属于一个分块号,如此对位置点逐个进行判断,直到某个位置点Dj不属于当前的分块号(cur_u,cur_v)。
如果位置点D2是否与当前的分块号不属于一个分块号,则对当前的分块号(cur_u,cur_v)的位置点列表listPos(包括点D1,D2,...,Dj-1)进行可见性分析判断。
计算位置点Di所在的分块号方法包括:
对位置点Di,计算其在dem栅格数据中对应的像素的行号rowDi=(latP1-latDi)*row/(latP1-latP2),并对rowDi取整得到像素的行号lineRowDi=[rowDi](从0开始编号)。计算其在dem栅格数据中对应的像素的列号colDi=(lonDi-lonP1)*col/(lonP2-lonP1),并对colDi取整得到像素的列号lineColDi=[colDi](从0开始编号)。计算位置点Di所在的分块号,分块行号Di_u=[lineRowDi/block],分块列号Di_v=[lineColDi/block]。
可见性判断方法具体包括:
a、从存储分块的统计值的内存中(程序初始化时读取数据文件dem.key)得到当前的分块号(cur_u,cur_v)的四个子块的像素最大值,从左到右,从上到下,四个子块的像素最大值分别标记为tl_cur,tr_cur,bl_cur,br_cur,比较该4个数值,得到最大值max_cur;判断该分块是否能够对从观察点A到目标点B进行潜在遮挡可能性。也就是说,以位置点列表listPos中的每个点的地面高度为max_cur值,判断是否有遮挡观察点A对目标点B的视线的可能性。
判断是否有遮挡观察点A对目标点B的视线的可能性,包括两种情况判断;
(1)当A点高度hA>=B点高度时,计算出位置点列表listPos中最后一个位置点距离A点的水平距离L2米。最后一个位置点的高度h计算为:h=hA-(hA-hB)/distAB*L2,其中hA为A点的高程,hB为B点的高程,distAB为从A点到B点的水平距离,L2为位置点列表listPos中最后一个位置点距离A点的水平距离;当max_cur<hA-(hA-hB)/distAB*L2时,说明位置点列表listPos中所有点的地面高度不足以遮挡观察点A对目标点B的视线,不存在遮挡的可能性;当max_cur>=hA-(hA-hB)/distAB*L2时,说明位置点列表listPos中有潜在遮挡观察点A对目标点B的视线的可能性。
(2)当A点高度hA<B点高度时,计算出位置点列表listPos中第一个位置点距离A点的水平距离L1米。当max_cur<hA-(hA-hB)/distAB*L1;说明位置点列表listPos中所有点的地面高度不足以遮挡观察点A对目标点B的视线,不存在遮挡的可能性;当max_cur>=hA-(hA-hB)/distAB*L1时;说明位置点列表listPos中有潜在遮挡观察点A对目标点B的视线的可能性。
b、如果该分块中的点列表listPos以地面高度数值max_cur对从观察点A到目标点B不存在遮挡可能性时,则完成对当前分块的处理。从下一个位置点Dj开始,逐个位置点分析同属于一个分块的一组位置点(Dj,Dj+1,...,Dk-1),同样分析该分块是否能够对从观察点A到目标点B进行潜在遮挡可能性。
c、如果该分块中的点列表listPos以地面高度数值max_cur对从观察点A到目标点B有遮挡可能性时,对点列表里每个位置点,判断是位于当前分块的哪个子块中,得到4个子块的位置点分布列表;对每个子块,以其包含的位置点列表中的每个点的地面高度为子块像素最大值,判断各子块是否有遮挡观察点A对目标点B的视线的可能性。具体包括:如果4个子块都没有遮挡的可能性,则对该分块的可见性判断完毕;如果某个子块具有遮挡的可能性,但是该子块中的一系列位置点所在像素的实际地面高度数值往往不等于该子块的最大像素值,因此,该系列位置点是否真正的对观察点A到目标点B构成遮挡,还需要从子块缓存数据中或dem数据文件中读取该子块的实际像素块数据从而得到该子块中的一系列位置点的真实地面高度值再进行判断分析,此时以子块中各个位置点的经纬度和dem数据文件中的像素高度值,判断各个点是否构成遮挡。假设某位置点的真实地面高度为h米,如果h>=hA-(hA-hB)/distAB*L,其中L为该位置点距离像素A的水平距离,则该观察点A到目标点B之间不可见;否则可见。一旦某个位置点构成了遮挡,则完成观察点A到目标点B之间通视性的判断。例如,像素A到像素B点之间的位置点D1,D2,D3,...,D1000都位于同一个分块(x,y)中,从内存中得到该分块(x,y)中的四个子块的最大值分别为tl_cur=150,tr_cur=160,bl_cur=280,br_cur=290,假设hA=200.0米,hB=3200.0米,像素A,B之间的水平距离为distAB=30Km,像素分辨率为30米。先比较得到该分块的像素最大值max_cur=290;先判断该分块是否能够对从观察点A到目标点B进行潜在遮挡可能性。由于hA<hB,计算出位置点列表listPos中第一个位置点距离A点的水平距离L1=30米,max_cur>hA-(hA-hB)/distAB*L1=203.0米,因此该分块有潜在遮挡观察点A对目标点B的视线的可能性。对位置点D1,D2,D3,...,D1000计算分别位于哪个子块中,得到四个子块的点分布列表,如下:子块tl,包含位置点D1,D2,D3,...,D100;子块tr,包含位置点D101,D102,...D1000;子块bl中没有位置点;子块br中没有位置点;对子块tl,同样以子块像素最大值max_cur=tl_cur=150.0判断该子块是否有遮挡观察点A对目标点B的视线的可能性,max_cur<hA-(hA-hB)/distAB*L1=203.0米,因此该子块没有潜在遮挡观察点A对目标点B的视线的可能性;同理,对子块tr进行分析,得到该子块没有潜在遮挡观察点A对目标点B的视线的可能性;因此,该分块(x,y)不会遮挡观察点A对目标点B的视线。由此可见,对分块(x,y)中的1000个位置点,只需要读取内存的子块像素最大值,进行简单的块的遮挡可能性与子块的遮挡可能性计算,不需要实际的文件IO操作就可完成判断,效率比较高,如图4所示。假设上例中,子块tl的最大值tl_cur=250,那么判断该子块是否有遮挡观察点A对目标点B的视线的可能性时,比较max_cur=tl_cur=250>hA-(hA-hB)/distAB*L1=203.0米,因此该子块有潜在遮挡观察点A对目标点B的视线的可能性;但是该子块中的一系列位置点D1,D2,...,D100所在像素的实际地面高度数值往往不等于该子块的最大像素值tl_cur,因此,该一系列位置点是否真正的对观察点A到目标点B构成遮挡,还需要从子块数据缓存中或dem数据文件中读取该子块的实际像素块数据,从而得到该子块中的位置点D1,D2,...,D100的真实地面高度值再逐个进行判断分析,例如在对D25位置点进行判断时,发现h>=hA-(hA-hB)/distAB*L,则说明观察点A到目标点B之间不可见,完成通视判断分析。
步骤三、缓存一定数量的dem数据文件中的子块像素数据到内存中。当某子块有潜在遮挡观察点A对目标点B的视线的可能性时,需要读取该子块的dem数据文件中像素块进行判断计算。为了不重复的进行文件IO操作,我们对子块像素数据进行缓存处理。子块像素的行数block/2,列数block/2,dem数据像素值类型为double类型,为了在分配一定数量的内存的条件下(如使用50MB的缓存空间),尽量缓存更多的子块像素数据,在缓存时做了特殊的压缩处理方法:使用1个double类型来存储2个像素值的方法来缓存块数据。具体如下:对于子块中的block/2*block/2个像素值,按顺序(如从左到右,从上到下),将连续2个double像素值合并为一个double值。假设第一个像素值为V1=3124.1234,V2=4213.3472;如果V1<0,设置V1=0;如果V2<0,设置V2=0;合并后的像素值V=V1*10000+V2/10000.0;处理的原理:由于地面高程数值范围小于9000.0米,并且不考虑负值情况,考虑数据精度情况,保留小数点后4位,这样1个像素值最多8位有效数字,而double类型的数值一般精确到16位有效数字,因此,可以连续的将2个8位有效数字组合构成16位有效数字的数值。即对第一个数值放大10000倍,对第2个数值缩小10000倍,然后相加存储。例如V=3124.1234*10000+4213.3472/10000.0=31241234.42133472;例如V1=24.1234,V2=213.3472;V=V1*10000+V2/10000.0=241234.02133472。在获取该缓存中某子块的像素值时,只需要将缓存值V取整得到整数a,再将a缩小10000倍即可得到原来的V1值;将缓存值取小数部分,再放大10000倍即可得到原来的V2值,处理简单效率高,数据精度也足够高。重要的是,采用此法缓存子块dem像素数据时,可缓存比通常的方法多一倍的子块数量。在观察点对大量目标点之间实时分析计算通视性时可减少读取dem数据文件IO次数,提高计算效率。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (6)
1.一种计算机仿真中实时快速通视判断方法,其特征在于,包括以下步骤:
基于给定的dem栅格数据进行栅格分块处理,所述栅格分块处理后进行再次划分和数值统计,获得各个块的统计信息,对所述统计信息进行优化存储处理,将优化存储处理后的统计信息按照顺序写入dem数据库;
基于所述统计信息及计算机仿真系统,实时判断观察点和目标点之间的通视性;基于计算机仿真系统,实时判断观察点和目标点之间的通视性包括:
获取所述观察点和所述目标点在dem栅格数据库中的像素位置;
基于所述像素位置判断所述观察点和所述目标点之间距离划分每个距离步长,获得每个距离步长的位置点;
基于所述每个距离步长的位置点,确定位置点列表,当前位置点属于所述位置点列表则标记当前位置点的分块号,对同属于一个分块号的一组位置点进行可见性分析;
判断是否属于同一分块号的一组位置点包括:
基于所述位置点列表,从第一位置点开始计算所述第一位置点分块号,对所述第一位置点分块号赋值并将所述第一位置点添加到所述位置点列表中;
依次计算第二位置点的分块号是否属于所述当前位置点的分块号,当所述第二位置点的分块号属于所述当前位置点的分块号时,对所述第二位置点分块号赋值并将所述第二位置点添加到所述位置点列表中,直到某一位置点不属于当前分块号,则停止判断,获得最终位置点列表;
基于所述最终位置点列表判断所述当前位置点对所述观察点和所述目标点的可见性判断;
基于所述最终位置点列表判断所述当前位置点对所述观察点和所述目标点的可见性判断,具体包括:
获取所述当前位置点的分块号中4个子块的像素最大值,比较所述4个子块的像素最大值,获取所述当前位置点的分块号的像素最大值,基于所述当前位置点的分块号的像素最大值判断所述当前位置点对所述观察点和所述目标点是否存在遮挡的可能性;
当所述当前位置点对所述观察点和所述目标点不存在遮挡的可能性时,则完成对当前位置点分块的处理,从下一个位置点对逐个位置点判断是否属于同一分块号的一组位置点,并同时判断对所述观察点和所述目标点是否存在遮挡的可能性;
当所述当前位置点对所述观察点和所述目标点存在遮挡的可能性时,基于所述最终位置点列表判断所述当前位置点属于所述当前位置点分块的哪一个子块中,获得所述当前位置点4个子块的位置点列表;获取每个子块的位置点的像素最大值,判断每个子块位置点对所述观察点和所述目标点是否存在遮挡的可能性;
当所述每个子块位置点对所述观察点和所述目标点不存在遮挡的可能性,则对所述当前位置点的可见性判断完毕;当某一子块存在遮挡的可能性,则获取所述某一子块的经纬度和像素高度值,判断所述某一子块是否存在遮挡,存在遮挡则完成所述观察点和所述目标点的可见性判断。
2.如权利要求1所述的计算机仿真中实时快速通视判断方法,其特征在于,所述栅格分块处理包括:基于给定的dem栅格数据选取块的大小,对块进行栅格分块处理,获得像素块;所述给定的栅格数据包括:dem栅格数据库名称,像素大小,分辨率,像素数据对应的地理区域坐标。
3.如权利要求2所述的计算机仿真中实时快速通视判断方法,其特征在于,所述栅格分块处理后进行再次划分和数值统计包括:将所述像素块均匀划分为大小相等的4个子块,对所述4个子块的像素值进行读取,通过遍历算法获取每个子块像素值的最大值。
4.如权利要求3所述的计算机仿真中实时快速通视判断方法,其特征在于,对所述每个子块的统计信息进行优化存储处理包括:
每个子块的像素值采用大于该子块统计信息的最大值的最小整数值的存储方式;
基于所述存储方式对所述4个子块按顺序进行整数数据类型的数值进行存储。
5.如权利要求1所述的计算机仿真中实时快速通视判断方法,其特征在于,判断所述当前位置点对所述观察点和所述目标点是否存在遮挡的可能性,包括:
当所述观察点的高程小于所述目标点的高程时,获取所述观察点和所述目标点水平位置中最后一个位置点距离所述观察点的水平第一距离,所述当前位置点分块的最大值小于所述观察点和所述目标点的高程时,不存在遮挡可能性;当所述当前位置点分块的最大值不小于所述观察点和所述目标点的高程时,存在遮挡可能性;
当所述观察点的高程小于所述目标点的高程时,获取所述观察点和所述目标点水平位置中的第一个位置点距离所述观察点的水平第二距离,所述当前位置点分块的最大值小于所述观察点和所述目标点的高程时,不存在遮挡可能性;当所述当前位置点分块的最大值不小于所述观察点和所述目标点的高程时,存在遮挡可能性。
6.如权利要求5所述的计算机仿真中实时快速通视判断方法,其特征在于,所述计算机仿真中实时快速通视判断方法还包括:对所述观察点和所述目标点进行通视性判断后进行数据存储,采用1个double类型来存储2个像素值的方法压缩处理缓存块数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210500961.3A CN114912268B (zh) | 2022-05-09 | 2022-05-09 | 一种计算机仿真中实时快速通视判断方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210500961.3A CN114912268B (zh) | 2022-05-09 | 2022-05-09 | 一种计算机仿真中实时快速通视判断方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114912268A CN114912268A (zh) | 2022-08-16 |
CN114912268B true CN114912268B (zh) | 2023-02-10 |
Family
ID=82766802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210500961.3A Active CN114912268B (zh) | 2022-05-09 | 2022-05-09 | 一种计算机仿真中实时快速通视判断方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114912268B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260523A (zh) * | 2015-09-25 | 2016-01-20 | 中国科学院南京土壤研究所 | 一种分布式并行空间可视域分析方法 |
CN105842676A (zh) * | 2016-06-16 | 2016-08-10 | 成都中科合迅科技有限公司 | 一种雷达盲区分析方法及装置 |
CN111523240A (zh) * | 2020-04-28 | 2020-08-11 | 鲁东大学 | 一种基于dem数据的通视分析方法 |
CN111652976A (zh) * | 2020-06-03 | 2020-09-11 | 鲁东大学 | 基于dem栅格数据的通视分析方法 |
CN111681313A (zh) * | 2020-05-18 | 2020-09-18 | 云南迅测科技有限公司 | 一种基于数字地形图的空间视域分析方法及电子设备 |
CN112819942A (zh) * | 2019-11-15 | 2021-05-18 | 中科星图股份有限公司 | 数据处理方法及其装置 |
CN113313826A (zh) * | 2021-05-27 | 2021-08-27 | 南京邮电大学 | 一种尺度自适应可视域分析方法 |
-
2022
- 2022-05-09 CN CN202210500961.3A patent/CN114912268B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260523A (zh) * | 2015-09-25 | 2016-01-20 | 中国科学院南京土壤研究所 | 一种分布式并行空间可视域分析方法 |
CN105842676A (zh) * | 2016-06-16 | 2016-08-10 | 成都中科合迅科技有限公司 | 一种雷达盲区分析方法及装置 |
CN112819942A (zh) * | 2019-11-15 | 2021-05-18 | 中科星图股份有限公司 | 数据处理方法及其装置 |
CN111523240A (zh) * | 2020-04-28 | 2020-08-11 | 鲁东大学 | 一种基于dem数据的通视分析方法 |
CN111681313A (zh) * | 2020-05-18 | 2020-09-18 | 云南迅测科技有限公司 | 一种基于数字地形图的空间视域分析方法及电子设备 |
CN111652976A (zh) * | 2020-06-03 | 2020-09-11 | 鲁东大学 | 基于dem栅格数据的通视分析方法 |
CN113313826A (zh) * | 2021-05-27 | 2021-08-27 | 南京邮电大学 | 一种尺度自适应可视域分析方法 |
Non-Patent Citations (1)
Title |
---|
基于格网DEM的GIS通视分析算法研究;李东岳等;《2010通信理论与技术新发展——第十五届全国青年通信学术会议论文集(下册)》;20100806;第50-54页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114912268A (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110738721B (zh) | 基于视频几何分析的三维场景渲染加速方法及系统 | |
Fabbri et al. | Is prediction of future landslides possible with a GIS? | |
CN111523240B (zh) | 一种基于dem数据的通视分析方法 | |
KR102152879B1 (ko) | 3차원 격자를 이용한 공간 정보 저장 방법 및 그 장치 | |
CN108153979B (zh) | 基于InSAR的形变信息提取方法、终端及存储介质 | |
CN113610873B (zh) | 夜光遥感影像数据处理方法及装置 | |
CN114912268B (zh) | 一种计算机仿真中实时快速通视判断方法 | |
CN112765299B (zh) | 非规则栅格数据的可视化方法、装置、电子设备、存储介质 | |
CN112525208B (zh) | 城市道路地图快速构建方法和装置及设备 | |
KR101487454B1 (ko) | Lod 영상 병렬처리방법 | |
CN111652976B (zh) | 基于dem栅格数据的通视分析方法 | |
CN112184900B (zh) | 高程数据的确定方法、装置及存储介质 | |
Xie et al. | Using contour lines to generate digital elevation models for steep slope areas: a case study of the Loess Plateau in North China | |
CN117054970A (zh) | 一种基于dem数据的地杂波仿真方法及装置 | |
CN114266138B (zh) | 一种利用云端数据进行城市边缘区识别与验证方法 | |
CN103675763B (zh) | 一种基于硬件加速的矢量化vts系统雷达视频绘制方法 | |
CN116481462A (zh) | 一种用于检测隧道平整度的方法及系统 | |
CN111737375A (zh) | 一种基于Geohash分区的区域内容空间对象索引方法 | |
CN111523466B (zh) | 基于大数据的城市开放空间的分类方法及装置 | |
CN102706326B (zh) | 光束法空中三角测量文件数据处理方法 | |
CN111767357B (zh) | 区域采全评估方法和设备、电子设备和存储介质 | |
Jovanovic et al. | Analysis of free road data in Tanzania, Uganda and Kenya using free and open source software | |
Muñumer Herrero et al. | Testing the Impact of 2D Generalisation on 3D Models–Exploring Analysis Options With an Off-the-shelf Software Package | |
CN115374526B (zh) | 一种基于bim技术的精细化配筋方法及系统 | |
CN111612869A (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 |