CN101477562B - 一种3dgis中多分辨率自适应注记的方法 - Google Patents
一种3dgis中多分辨率自适应注记的方法 Download PDFInfo
- Publication number
- CN101477562B CN101477562B CN2009100764279A CN200910076427A CN101477562B CN 101477562 B CN101477562 B CN 101477562B CN 2009100764279 A CN2009100764279 A CN 2009100764279A CN 200910076427 A CN200910076427 A CN 200910076427A CN 101477562 B CN101477562 B CN 101477562B
- Authority
- CN
- China
- Prior art keywords
- annotation
- face
- point
- vector
- line
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
一种3DGIS中多分辨率自适应注记的方法,其步骤如下:步骤一:非点要素注记的点位提取方法。1、线矢量要素注记点位提取:线矢量由顺次相连的有限空间点组成,从这些点连接成的折线中选择位于中间的一段折线,求该线段的中心点作为线注记的初始位置。在三维场景移动时,利用左右剪裁面构造位于视景体内的探测平面,使其与线矢量做相交测试,交点即为新的注记位置。2、面矢量要素注记点位提取:为保证面矢量注记与所属要素同时可见,先采集了均匀分布在多边形内的点群并将它们编码,然后在漫游过程中,根据视景体与面矢量的位置关系,实时移动注记到点群中的合适位置。步骤二:实时动态的进行注记:根据视点位置对注记进行多分辨率显示。
Description
一、技术领域
本发明涉及一种注记的方法,尤其涉及一种三维地理信息系统(3DGIS)中多分辨率自适应注记的方法,属于空间信息技术领域。
二、背景技术
文字注记可以表达地图要素的属性信息,是地图制图的重要组成部分。传统的注记方法存在如下缺陷:①视距较远时,视景体中仍有大量的注记文字,过于密集且不能突出重要目标的注记;②3DGIS场景漫游时,注记在某些方向会变成一条线或者部分标注文字被屏幕边界裁剪掉;③受前后空间位置和地形起伏的影响,注记容易相互遮挡或被地物遮挡。随着计算机地图制图和地理信息系统的发展,二维电子地图注记的研究已经较深入,但关于三维地图场景注记的研究较少。一方面,三维地理信息系统(3DGIS)中文字注记的重点在于确保注记的清晰可见,避免分布过于密集、注记间遮挡,不能简单套用二维注记的已有算法。另一方面,随着空间信息获取技术的不断发展以及用户需求的不断提高,3DGIS需要可视化高分辨率、大数据量的空间实体,在这种情况下,完成实体的标注需要大量计算和占用较多计算机内存。在不影响场景漫游、属性查询以及空间分析的前提下,如何实现人们关心的三维空间目标的注记是空间信息科学重要的研究内容。
三、发明内容
本发明的目的是提供一种3DGIS中多分辨率自适应注记的方法,该方法克服了现有技术的不足,它能在视点位置不断变化的情况下,实现了点、线和面等空间实体要素注记的自适应显示问题。
本方法总原则是:三维场景中的点注记、线注记和面注记都是位于要素上方某一适合高度上的文字,即使所属要素不同,最终还是要定位在某一类空间点上,这些点或是确定的、或是根据要素的特征得到的。点注记不需要提取点位,而线注记、面注记有各自不同的点位提取方法,一旦点位确定,这三种注记在基于视相关、视景体剪裁和碰撞检测的实时显示算法中存在很多共同点。
本发明的技术方案为:一种3DGIS中多分辨率自适应注记的方法,该方法的具体步骤如下(如图1):
步骤一:建立多分辨率模型,以控制注记是否显示
根据视点位置对注记进行多分辨率显示:基于注记文字的尺寸和离视点的距离,判断地形上要素的注记是否需要显示。若 则显示,反之不显示。其中,c是可调节的因子,c越大,在某一区域显示的注记越少,反之越多。Label_size是注记的尺寸,其值越大,可视距离就越大。如果注记代表空间范围较大的地理要素,注记的原始尺寸就应相应的设置大一些,distance是视点到注记所属点位的距离。将注记转动合适角度,使注记所在平面的法矢量总指向观察者。计算视点到注记所在点位的平面向量α,其方向角为a,以及注记文字展开方向(从左到右)定义单位向量β,初始方向角为0°,将注记转动角度b=a+π/2,经过转动向量α与向量β呈正交。
步骤二:非点要素注记的点位提取方法
由步骤一获取了需要显示三维地形场景要素的注记。接下去,要确定这些要素注记的显示位置。为了解决传统的注记方法存在的问题,本专利提出基于视相关多分辨率方法,分别实现线矢量要素和面矢量要素的注记。
1、线矢量要素注记方法
线矢量由顺次相连的有限个空间点组成,从这些点连接成的线中选择位于中间的一段折线,该线段的中心点作为线注记的初始位置。若浏览三维场景,根据视点的位置,调整注记的初始位置,沿线矢量方向自适应滑动。主要思想是:利用左右剪裁面构造一个位于视景体内的探测平面,用该平面与线矢量做相交测试,交点即为新的注记位置。以下是实现的具体步骤:
(1)根据标注对象的重要性和离视点的远近,判断注记是否需要显示。
(2)只有位于视景体前剪裁面内的注记才是视点前方的注记,是可见的,因此只有这部分注记进入下一步判断。
(3)对于位于初始位置的注记,如果在左右剪裁面和下剪裁面内,一旦与视景体边界发生碰撞,就移动注记;如果注记在左右剪裁面和下剪裁面外,且注记到剪裁面的距离小于线矢量MBR对角线长度的1/2时,同样移动注记。对于已经离开初始位置的注记,当视景体移出线矢量覆盖范围一定距离后,就将注记移回原处,否则移动注记到新的位置。
(4)利用视景体剪裁面构造位于视景体内部的探测面,与组成矢量的各个线段进行相交判断,找到相交的线段。
(5)用上面得到的线段与探测面求交点,由于探测面垂直于水平面,可以简化为直线与线段求二维交点,并从数字高程模型(DEM)中获取该点高程。
(6)将注记移到新的位置,并沿线矢量延伸方向放置,返回第一步,进入下一条线矢量的注记判断。
2、面矢量要素注记的算法
面矢量是由一条或多条首尾相连的线矢量围成的多边形,可能是凸多边形、凹多边形或内部有洞,多边形的复杂性导致判断一个可见点是否在多边形内的算法往往很复杂,本专利先采集了均匀分布在多边形内的点群并编码。在3DGIS场景浏览过程中,为保证面矢量注记与所属要素同时可见,注记应在面矢量覆盖范围内移动,根据视景体与面矢量的位置关系,实时移动注记到点群中的某一合适位置。主要具体步骤有:
(1)在面矢量的矩形包围盒中按照分级编码原则取出均匀分布的三级点群,记录这些点中位于面矢量多边形内点的三维坐标,作为移动注记的预选位置,其中第一级预选点作为面注记的初始位置,直到所有的面矢量都建立起分级预选点群为止。
(2)按照注记距离视点的远近和本身的尺寸,判断注记是否显示。只有位于视景体前剪裁面内的注记,即位于视点前方的注记进入下一步判断。
(3)如果初始位置,即第一级预选点可见,就将注记移动到初始位置,否则为注记寻找新位置。
(4)分别将左右剪裁面与面矢量的最小矩形包围框求交,如果有交点,将交点按照在MBR上的位置进行编码。
(5)从预选点群中提取可见的点,按照交点编码不同,进行全循环排查。由于点群是分级排列的,第一级预选点不符合条件,就从第二级开始寻找,若仍然没有可见点,再寻找第三级预选点。
(6)移动注记到找出的合适位置,返回第二步,进入下一个面矢量注记的判断。
步骤三:实时动态的进行注记
1、当视景体剪裁面与注记的最小包围矩形框(MBR)发生碰撞,如果注记所表示的实体要素可见,就自适应的将注记移动到视景体内,否则使注记不可见。沿裁剪面法向量的正负方向移动注记,每次移动的距离等于注记尺寸的1/2。返回第一步,继续处理下一个注记。
2、每次完成所有注记的处理后,记录下所有可见注记,探测这些注记间是否有相互遮挡,移动注记以消除遮挡。
3、决定注记的显示高度,除了考虑用户定义的标签高度外,还要检测注记在三维场景漫游中发生旋转、平移时是否与地形发生碰撞,将发生碰撞处的地形高程作为标签高度,以解决地形起伏遮挡注记的问题。
本发明的优点及功效是:该方法克服了传统注记方法存在的缺陷和不足,它能在视点位置不断变化的情况下,实现了点、线和面等空间实体要素注记的自适应显示问题。实践证明,该方法具有很好的性能和运算效率。
四、附图说明
图1技术方案流程示意图
图2碰撞检测示意图
图3弯曲线矢量的注记跳跃问题示意图
图4A、4B视距小时探测面超界的示意图
图5沿线矢量放置线注记所需的两次旋转示意图
图6面矢量点群分布示意图
图7四叉树编码规则示意图
图中符号说明如下:
1上剪裁面;2下剪裁面;3左剪裁面;4右剪裁面;5探测面;6线矢量。
五、具体实施方式
见图1、图2、图3、图4A/4B、图5、图6、图7所示,本发明一种3DGIS中多分辨率自适应注记的方法,该方法具体步骤实施如下:
步骤一:建立多分辨率模型,以控制注记是否显示
根据视点位置对注记进行多分辨率显示:基于注记文字的尺寸和离视点的距离,判断地形上要素的注记是否需要显示。若 则显示,反之不显示。其中,c是可调节的因子,c越大,在某一区域显示的注记越少,反之越多。Label_size是注记的尺寸,其值越大,可视距离就越大。如果注记代表空间范围较大的地理要素,注记的原始尺寸就应相应的设置大一些,distance是视点到注记所属点位的距离。将注记转动合适角度,使注记所在平面的法矢量总指向观察者。计算视点到注记所在点位的平面向量α,其方向角为a,以及注记文字展开方向(从左到右)定义单位向量β,初始方向角为0°,将注记转动角度b=a+π/2,经过转动向量α与向量β呈正交。
步骤二:非点要素注记的点位提取方法
由步骤一获取了需要显示三维地形场景要素的注记。接下去,要确定这些要素注记的显示位置。为了解决传统的注记方法存在的问题,本专利提出基于视相关多分辨率方法,分别实现线矢量要素和面矢量要素的注记。
1、线矢量要素注记方法
线矢量由顺次相连的有限个空间点组成,从这些点连接成的线中选择位于中间的一段折线,该线段的中心点作为线注记的初始位置。若浏览三维场景,根据视点的位置,调整注记的初始位置,沿线矢量方向自适应滑动。主要思想是:利用左右剪裁面构造一个位于视景体内的探测平面,用该平面与线矢量做相交测试,交点即为新的注记位置。以下是实现的具体步骤:
(1)根据标注对象的重要性和离视点的远近,判断注记是否需要显示。
(2)只有位于视景体前剪裁面内的注记才是视点前方的注记,是可见的,因此只有这部分注记进入下一步判断。
(3)对于位于初始位置的注记,如果在左右剪裁面和下剪裁面内,一旦与视景体边界发生碰撞,就移动注记;如果注记在左右剪裁面和下剪裁面外,且注记到剪裁面的距离小于线矢量MBR对角线长度的1/2时,同样移动注记。对于已经离开初始位置的注记,当视景体移出线矢量覆盖范围一定距离后,就将注记移回原处,否则移动注记到新的位置。
(4)利用视景体剪裁面构造位于视景体内部的探测面,与组成矢量的各个线段进行相交判断,找到相交的线段。
(5)用上面得到的线段与探测面求交点,由于探测面垂直于水平面,可以简化为直线与线段求二维交点,并从数字高程模型(DEM)中获取该点高程。
(6)将注记移到新的位置,并沿线矢量延伸方向放置,返回第一步,进入下一条线矢量的注记判断。
在第3步中,如果发生碰撞的是左边界,就用左剪裁面构造一个与其平行的、位于视景体内的左探测平面,右边界发生碰撞时,同理可得右探测平面,如果下边界发生碰撞,要依照先左后右的顺序,建立探测平面。注意在一次定位中只能有一个起作用的探测面。探测面q是通过将剪裁面p沿法线向视景体内移动(Δx,Δy,Δz)得到的,平面方程如下:
A(x-(x0+AΔx))+B(y-(y0+BΔy))+C(z-(z0+CΔz))=0
剪裁面p上一点M0的坐标为(x0,y0,z0),面法线向量n0=(A,B,C)。探测面q上一点M的坐标为(x0+AΔx,y0+BΔy,z0+CΔz),面法线向量n=n0。
该专利使用了两种确定Δx,Δy,Δz的方法:视点离线矢量较远时,用线矢量的MBR对角线长度的合理倍数来确定;距离线矢量很近时,用注记的尺寸来确定。
根据透视投影的原理,如果注记文字大小不变,视点移近时观察到的文字就有可能覆盖整个屏幕,因此为了避免这种现象,注记的尺寸应随视点距离反比变化。但是对于某些弯曲的线矢量,如果用不断变化的注记尺寸来决定探测面位置,可能导致视点不移动,而探测面发生平移,注记在两个位置循环往复、发生跳跃的现象(如图3)。因此在视点较远的时候,该专利用线矢量的MBR对角线长度来确定探测面。若探测面到视景体边界的距离大于可见范围,交点位于视景体之外(如图4),注记不可见,这时可用注记的尺寸确定探测面的位置。
第(4)步中,在当前视点下,判断视景体内多分辨率线矢量上的可见顶点是否在探测面内。如果两相邻点分别在平面内和平面外,那么两点组成的线段与探测平面相交。在已知相交后,还要保证至少有一个点位于下剪裁面内,避免注记位置不可见的情况。由于场景浏览具有连续性,上次循环中相交线段的附近最可能包含这次循环符合条件的线段,因此从该线段开始向两侧寻找与平面相交的线段,从而快速的找到交点。
线注记移到新点位后要经过两次旋转,使注记与所属线矢量方向平行。注记的文字展开方向,即矩形框长边自左而右的方向,与x轴正向一致。假设A->B为线段的正方向,首先将线矢量AB和注记投影到xz平面,得到向量a,求得与视线方向正交的的向量b,a与b之间的夹角为α,如果 注记沿a方向分布时,基本面向观察者,否则就将B->A作为线段正向。图5中, 注记应绕z轴转动β角至向量c。接着将AB线段和注记投影到xy平面,已知B->A为线段正向,X轴负向为注记方向,将注记绕Z轴旋转θ角后,注记发生俯仰而符合地形起伏的变化。经过旋转的线注记如图5中灰色矩形框所示。
2、面矢量要素注记的算法
面矢量是由一条或多条首尾相连的线矢量围成的多边形,可能是凸多边形、凹多边形,或内部有洞,多边形的复杂性导致判断一个可见点是否在多边形内的算法往往很复杂,本专利先采集了均匀分布在多边形内的点群并编码。在3DGIS场景浏览过程中,为保证面矢量注记与所属要素同时可见,注记应在面矢量覆盖范围内移动,根据视景体与面矢量的位置关系,实时移动注记到点群中的某一合适位置。主要具体步骤有:
(1)在面矢量的矩形包围盒中按照分级编码原则取出均匀分布的三级点群,记录这些点中位于面矢量多边形内点的三维坐标,作为移动注记的预选位置,其中第一级预选点作为面注记的初始位置,直到所有的面矢量都建立起分级预选点群为止。
(2)按照注记距离视点的远近和本身的尺寸,判断注记是否显示。只有位于视景体前剪裁面内的注记,即位于视点前方的注记进入下一步判断。
(3)如果初始位置,即第一级预选点可见,就将注记移动到初始位置,否则为注记寻找新位置。
(4)分别将左右剪裁面与面矢量的最小矩形包围框求交,如果有交点,将交点按照在MBR上的位置进行编码。
(5)从预选点群中提取可见的点,按照交点编码不同,进行全循环排查。由于点群是分级排列的,第一级预选点不符合条件,就从第二级开始寻找,若仍然没有可见点,再寻找第三级预选点。
(6)移动注记到找出的合适位置,返回第二步,进入下一个面矢量注记的判断。
在第(1)步中,采用四叉树结构分割面矢量的MBR。图6共有三个级别的矩形,表示四叉树的深度为3,同一级别内每一个矩形为四叉树的一个结点,选择各级矩形中心点加入点群,则每个面矢量点群中共有21个点。
将这21个点分为三个级别进行编码,规则如下:每个点都进行无符号整形编码,即码位共有16位,位于高位的八位区分该点属于哪个面矢量,这八位与点的位置无关,是为了方便搜索。位于低位的八位中,前四位表示所属级别,后四位表示在该级中的结点位置,这八位编码定义了该点位于点群的什么位置。
图7表示四叉树结点中四个点的编码规则,可见高位表示纵向位置,居上为0,居下为1;低位表示横向位置,居左为0,居右为1。
下一步用射线法筛选点群中位于多边形内的点,记录三维坐标,作为注记的预选位置,组成分级预选点群。由于多边形形状各异,所以每个面矢量的分级预选点群的组成点数和点位都不相同。需要注意的是,注记的初始位置定在一级点处,我们要保证一级点被选入预选点群,而MBR的中心不一定在多边形内部,所以一级点不能简单的定位到矩形中心。在矩形中心位于多边形外的情况下,选用一种能够找出多边形内一点的几何方法来确定一级点。
在第(4)步中,剪裁面与MBR的两个交点按照上面提到的方法进行编码,不同的是此时码位仅为2,即仅有00、01、10、11这四种编码,将编码求异可以发现,两个交点位于对角区域时大于3,此时四个区域的点是可见的,而两个交点位于一个区域或两交点位于相邻区域时会小于3,此时就在交点编码所代表的区域内找可见点,从而减少了查找的次数。据此将在预选点群中查找可见点的工作分成三种,一是只查找一个区域,二是查找两个区域,三是四个区域全部查找。一旦找到可见点,就停止查找,将注记移动到该点即可。
建立分级预选点群的优势在于:点群中的点都是位于面矢量多边形内的点,避免了移动过程中判断点是否位于多边形内的复杂运算;点群均匀分布在多边形内,总可以根据视角变化,在点群中找到合适的可见点;每个级别内的几个点都尽量覆盖整个面矢量区域,并且点位逐级变密,按级搜索可以保证尽量在较疏的级别找到可见点,相比从分布在矩形框最左边的点一直排查到最右边的点,按级搜索效率更高。
步骤三:实时动态的进行注记
1、当视景体剪裁面与注记的最小包围矩形框(MBR)发生碰撞,如果注记所表示的实体要素可见,就自适应的将注记移动到视景体内,否则使注记不可见。沿裁剪面法向量的正负方向移动注记,每次移动的距离等于注记尺寸的1/2。返回第一步,继续处理下一个注记。
2、每次完成所有注记的处理后,记录下所有可见注记,探测这些注记间是否有相互遮挡,移动注记以消除遮挡。
3、决定注记的显示高度,除了考虑用户定义的标签高度外,还要检测注记在三维场景漫游中发生旋转、平移时是否与地形发生碰撞,将发生碰撞处的地形高程作为标签高度,以解决地形起伏遮挡注记的问题。
在第1步中,剪裁面与MBR碰撞检测的算法如下:①生成视景体的下剪裁面和左右剪裁面,使其法向量指向视景体内,取矩形框左下角点g和右上角点h,如图2所示,得到第i个剪裁面的方程为:Aix+Biy+Ciz+D=0。②将g点的三维坐标(xg,yg,zg),代入下剪裁面方程,得到 当 表示注记在视景体下剪裁面内,进行下一步的碰撞检测和第五步的遮挡检测,仅选用下剪裁面是由于注记离地面较近,上剪裁面往往不发生作用。③对右剪裁面进行碰撞检测,探测g点与右剪裁面的位置关系,定义dg 2,当 注记的左侧点在右剪裁面之外,注记不与左右剪裁面相交,否则定义dh 2,当 注记与右剪裁面相交,否则注记在右剪裁面内侧,进入下一步左剪裁面的判断。④对左剪裁面进行碰撞检测,定义dh 3,当 注记的右侧位于左剪裁面外,注记不可见,否则定义dg 3,当 时,注记与左剪裁面相交。
Claims (1)
1.一种3DGIS中多分辨率自适应注记的方法,其特征在于:该方法具体步骤如下:
步骤一:建立多分辨率模型,以控制注记是否显示
根据视点位置对注记进行多分辨率显示:基于注记文字的尺寸和离视点的距离,判断地形上要素的注记是否需要显示;若则显示,反之不显示;其中,c是可调节的因子,c越大,在某一区域显示的注记越少,反之越多;Label size是注记的尺寸,其值越大,可视距离就越大;如果注记代表空间范围较大的地理要素,注记的原始尺寸就应相应的设置大一些,distance是视点到注记所属点位的距离;将注记转动合适角度,使注记所在平面的法矢量总指向观察者;计算视点到注记所在点位的平面向量α,其方向角为a,以及注记文字展开方向定义单位向量β,初始方向角为0°,将注记转动角度b=a+π/2,经过转动向量α与向量β呈正交;
步骤二:非点要素注记的点位提取方法
由步骤一获取了需要显示三维地形场景要素的注记;接下去,要确定这些要素注记的显示位置,提出基于视相关多分辨率方法,分别实现线矢量要素和面矢量要素的注记;
(一)、线矢量要素注记方法
线矢量由顺次相连的有限个空间点组成,从这些点连接成的线中选择位于中间的一段折线,该线段的中心点作为线注记的初始位置;若浏览三维场景,根据视点的位置,调整注记的初始位置,沿线矢量方向自适应滑动;主要思想是:利用左右剪裁面构造一个位于视景体内的探测平面,用该平面与线矢量做相交测试,交点即为新的注记位置;以下是实现的具体步骤:
(1)根据标注对象的重要性和离视点的远近,判断注记是否需要显示;
(2)只有位于视景体前剪裁面内的注记才是视点前方的注记,是可见的,因此只有这部分注记进入下一步判断;
(3)对于位于初始位置的注记,如果在左右剪裁面和下剪裁面内,一旦与视景体边界发生碰撞,就移动注记;如果注记在左右剪裁面和下剪裁面外,且注记到剪裁面的距离小于线矢量的最小包围矩形框对角线长度1/2时,同样移动注记;对于已经离开初始位置的注记,当视景体移出线矢量覆盖范围一定距离后,就将注记移回原处,否则移动注记到新的位置;
(4)利用视景体剪裁面构造位于视景体内部的探测面,与组成矢量的各个线段进行相交判断,找到相交的线段;
(5)用上面得到的线段与探测面求交点,由于探测面垂直于水平面,简化为直线与线段求二维交点,并从数字高程模型中获取该点高程;
(6)将注记移到新的位置,并沿线矢量延伸方向放置,返回步骤(1)“根据标注对象的重要性和离视点的远近,判断注记是否需要显示”,进入下一条线矢量的注记判断;
在第(3)步中,如果发生碰撞的是左边界,就用左剪裁面构造一个与其平行的、位于视景体内的左探测平面,右边界发生碰撞时,同理得出右探测平面,如果下边界发生碰撞,要依照先左后右的顺序,建立探测平面;注意在一次定位中只能有一个起作用的探测面;探测面q是通过将剪裁面p沿法线向视景体内移动(Δx,Δy,Δz)得到的,平面方程如下:
A(x-(x0+AΔx))+B(y-(y0+BΔy))+C(z-(z0+CΔz))=0
剪裁面p上一点M0的坐标为(x0,y0,z0),面法线向量n0=(A,B,C);探测面q上一点M的坐标为(x0+AΔx,y0+BΔy,z0+CΔz),面法线向量n=n0;
使用了两种确定Δx,Δy,Δz的方法:视点离线矢量较远时,用线矢量的最小包围矩形框对角线长度的合理倍数来确定;距离线矢量很近时,用注记的尺寸来确定;
在视点较远的时候,用线矢量的最小包围矩形框对角线长度来确定探测面,若探测面到视景体边界的距离大于可见范围,交点位于视景体之外,注记不可见,这时用注记的尺寸确定探测面的位置;
第(4)步中,在当前视点下,判断视景体内多分辨率线矢量上的可见顶点是否在探测面内,如果两相邻点分别在平面内和平面外,那么两点组成的线段与探测平面相交;在已知相交后,还要保证至少有一个点位于下剪裁面内,避免注记位置不可见的情况;由于场景浏览具有连续性,上次循环中相交线段的附近最包含这次循环符合条件的线段,因此从该线段开始向两侧寻找与平面相交的线段,从而快速的找到交点;
线注记移到新点位后要经过两次旋转,使注记与所属线矢量方向平行,注记的文字展开方向,即矩形框长边自左而右的方向,与x轴正向一致;假设A->B为线段的正方向,首先将线矢量AB和注记投影到xz平面,得到向量a,求得与视线方向正交的的向量b,a与b之间的夹角为α,如果注记沿a方向分布时,基本面向观察者,否则就将B->A作为线段正向;注记应绕z轴转动β角至向量c;接着将AB线段和注记投影到xy平面,已知B->A为线段正向,X轴负向为注记方向,将注记绕Z轴旋转θ角后,注记发生俯仰而符合地形起伏的变化;
(二)、面矢量要素注记的算法
面矢量是由一条或多条首尾相连的线矢量围成的多边形,先采集了均匀分布在多边形内的点群并编码;在3DGIS场景浏览过程中,为保证面矢量注记与所属要素同时可见,注记应在面矢量覆盖范围内移动,根据视景体与面矢量的位置关系,实时移动注记到点群中的某一合适位置;主要具体步骤有:
(1)在面矢量的矩形包围盒中按照分级编码原则取出均匀分布的三级点群,记录这些点中位于面矢量多边形内点的三维坐标,作为移动注记的预选位置,其中第一级预选点作为面注记的初始位置,直到所有的面矢量都建立起分级预选点群为止;
(2)按照注记距离视点的远近和本身的尺寸,判断注记是否显示,只有位于视景体前剪裁面内的注记,即位于视点前方的注记进入下一步判断;
(3)如果初始位置,即第一级预选点可见,就将注记移动到初始位置,否则为注记寻找新位置;
(4)分别将左右剪裁面与面矢量的最小矩形包围框求交,如果有交点,将交点按照在最小包围矩形框上的位置进行编码;
(5)从预选点群中提取可见的点,按照交点编码不同,进行全循环排查,由于点群是分级排列的,第一级预选点不符合条件,就从第二级开始寻找,若仍然没有可见点,再寻找第三级预选点;
(6)移动注记到找出的合适位置,返回步骤(2)“按照注记距离视点的远近和本身的尺寸,判断注记是否显示,只有位于视景体前剪裁面内的注记,即位于视点前方的注记进入下一步判断”,进入下一个面矢量注记的判断,
在第(1)步中,采用四叉树结构分割面矢量的最小包围矩形框;三个级别的矩形,表示四叉树的深度为3,同一级别内每一个矩形为四叉树的一个结点,选择各级矩形中心点加入点群,则每个面矢量点群中共有21个点;
将这21个点分为三个级别进行编码,规则如下:每个点都进行无符号整形编码,即码位共有16位,位于高位的八位区分该点属于哪个面矢量,这八位与点的位置无关,是为了方便搜索;位于低位的八位中,前四位表示所属级别,后四位表示在该级中的结点位置,这八位编码定义了该点位于点群的什么位置;
四叉树结点中四个点的编码规则,可见高位表示纵向位置,居上为0,居下为1;低位表示横向位置,居左为0,居右为1;
下一步用射线法筛选点群中位于多边形内的点,记录三维坐标,作为注记的预选位置,组成分级预选点群;由于多边形形状各异,所以每个面矢量的分级预选点群的组成点数和点位都不相同;需要注意的是,注记的初始位置定在一级点处,我们要保证一级点被选入预选点群,而最小包围矩形框的中心不一定在多边形内部,所以一级点不能简单的定位到矩形中心;在矩形中心位于多边形外的情况下,选用一种能够找出多边形内一点的几何方法来确定一级点;
在第(4)步中,剪裁面与最小包围矩形框的两个交点按照上面提到的方法进行编码,不同的是此时码位仅为2,即仅有00、01、10、11这四种编码,将编码求异会发现,两个交点位于对角区域时大于3,此时四个区域的点是可见的,而两个交点位于一个区域或两交点位于相邻区域时会小于3,此时就在交点编码所代表的区域内找可见点,从而减少了查找的次数;据此将在预选点群中查找可见点的工作分成三种,一是只查找一个区域,二是查找两个区域,三是四个区域全部查找;一旦找到可见点,就停止查找,将注记移动到该点即可;
步骤三:实时动态的进行注记
(一)当视景体剪裁面与注记的最小包围矩形框发生碰撞,如果注记所表示的实体要素可见,就自适应的将注记移动到视景体内,否则使注记不可见;沿裁剪面法向量的正负方向移动注记,每次移动的距离等于注记尺寸的1/2,返回步骤一:“建立多分辨率模型,以控制注记是否显示”,继续处理下一个注记;
(二)每次完成所有注记的处理后,记录下所有可见注记,探测这些注记间是否有相互遮挡,移动注记以消除遮挡;
(三)决定注记的显示高度,除了考虑用户定义的标签高度外,还要检测注记在三维场景漫游中发生旋转、平移时是否与地形发生碰撞,将发生碰撞处的地形高程作为标签高度,以解决地形起伏遮挡注记的问题;
在第(三)步中,剪裁面与最小包围矩形框碰撞检测的算法如下:①生成视景体的下剪裁面和左右剪裁面,使其法向量指向视景体内,取矩形框左下角点g和右上角点h,得到第i个剪裁面的方程为:Aix+Bizy+Ciz+D=0,②将g点的三维坐标(xg,yg,zg),代入下剪裁面方程,得到当表示注记在视景体下剪裁面内,进行下一步的碰撞检测和第五步的遮挡检测,仅选用下剪裁面是由于注记离地面较近,上剪裁面往往不发生作用;③对右剪裁面进行碰撞检测,探测g点与右剪裁面的位置关系,定义当注记的左侧点在右剪裁面之外,注记不与左右剪裁面相交,否则定义当注记与右剪裁面相交,否则注记在右剪裁面内侧,进入下一步左剪裁面的判断;④对左剪裁面进行碰撞检测,定义当注记的右侧位于左剪裁面外,注记不可见,否则定义当时,注记与左剪裁面相交;
在第(三)步中,首先将注记的最小包围矩形框投影到屏幕上,通过比较最小包围矩形框的屏幕坐标判断注记集内每两个矩形间的位置关系,若遮挡,就将位于上方的注记向上移,移动的距离等于最小包围矩形框的宽,从而保证每个注记的完整可见,当这对注记不再相互遮挡时,及时将注记移回初始位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100764279A CN101477562B (zh) | 2009-01-04 | 2009-01-04 | 一种3dgis中多分辨率自适应注记的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100764279A CN101477562B (zh) | 2009-01-04 | 2009-01-04 | 一种3dgis中多分辨率自适应注记的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101477562A CN101477562A (zh) | 2009-07-08 |
CN101477562B true CN101477562B (zh) | 2010-09-29 |
Family
ID=40838278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100764279A Expired - Fee Related CN101477562B (zh) | 2009-01-04 | 2009-01-04 | 一种3dgis中多分辨率自适应注记的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101477562B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737542B (zh) * | 2012-02-10 | 2014-01-15 | 武汉大学 | 一种顾及多重约束条件的水深注记自动选取方法 |
CN104246831B (zh) * | 2012-07-30 | 2016-12-28 | 三菱电机株式会社 | 地图显示装置 |
CN106611443B (zh) * | 2015-10-26 | 2020-02-21 | 高德信息技术有限公司 | 三维地形点拾取方法及装置 |
CN108154792B (zh) * | 2016-12-06 | 2020-12-15 | 阿里巴巴(中国)有限公司 | 一种地图文字标注方法及装置 |
CN111367611A (zh) * | 2020-03-11 | 2020-07-03 | 上海索辰信息科技有限公司 | 时序图注解处理系统及方法 |
CN116842740B (zh) * | 2023-07-08 | 2024-05-07 | 四川大学 | 基于物元模型的加工特征智能识别方法 |
-
2009
- 2009-01-04 CN CN2009100764279A patent/CN101477562B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101477562A (zh) | 2009-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101477562B (zh) | 一种3dgis中多分辨率自适应注记的方法 | |
CN110850439B (zh) | 一种高精度三维点云地图构建方法 | |
CN107423445B (zh) | 一种地图数据处理方法、装置及存储介质 | |
Li et al. | Algorithms for automated line generalization1 based on a natural principle of objective generalization | |
CN101097152B (zh) | 导航装置 | |
CN101097153B (zh) | 导航装置 | |
CN1316438C (zh) | 在三维地图中显示多级文本数据的方法 | |
CN103459980B (zh) | 数字地图的图标的管理 | |
CN104766366A (zh) | 一种三维虚拟现实演示的建立方法 | |
CN102538802A (zh) | 三维导航显示方法以及相关装置 | |
CN102663800A (zh) | 一种顾及城市意象的城市建筑综合与渲染的方法 | |
CN102692228A (zh) | 数字地图中的地标图标 | |
US10783687B2 (en) | Efficient duplicate label handling | |
CN105550688A (zh) | 点云数据的分类方法及装置 | |
CN103377222A (zh) | 一种地图瓦片生成方法及装置 | |
CN111291811A (zh) | 区域划分和分类方法、装置和计算机可读存储介质 | |
Yan et al. | Description approaches and automated generalization algorithms for groups of map objects | |
EP2589933B1 (en) | Navigation device, method of predicting a visibility of a triangular face in an electronic map view | |
CN112017262B (zh) | 路面标识生成方法及装置、存储介质及电子设备 | |
CN103116183B (zh) | 一种石油地震采集面元覆盖次数属性体切片成图方法 | |
US10832463B2 (en) | Efficient label insertion and collision handling | |
US20050035964A1 (en) | Multi-level hex mapping method | |
JP2006227111A (ja) | 略地図生成装置 | |
CN116069889B (zh) | 一种线状要素单线拓扑状态的判断方法和装置 | |
EP2612302B1 (en) | A combined projection method and an apparatus for improving accuracy of map projections |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100929 Termination date: 20120104 |