发明内容
针对上述现有技术中存在的不足,本发明的目的在于提供了一种准三维地图生成及坐标转换方法艺,以解决上述问题。
一种准三维地图生成方法,其方法步骤为:
S1、通过三维渲染引擎载入倾斜摄影模型;
S2、计算出图区域的包围盒参数;
S3、根据金字塔层级设置正交投影的宽高,计算步进值并设置相机的角度及初始位置;
S4、依次沿x、y方向按步进值移动相机并渲染,得到该层级的所有瓦片图片。
其中步骤S3进一步的步骤为:
(1)设定当前金字塔层级zoom,级别zoom从0开始,且第一级瓦片数量为1,每增加一级,分辨率将提高一倍,而瓦片数量将增加4倍;
(2)计算每个瓦片图片所需渲染的地物宽度,因总渲染区域宽度为B
w,由此可得金字塔级别为zoom时单张瓦片图片所需渲染地物宽度
(3)设定相机与垂直方向的夹角θ,不同于数字正射影像,2.5维地图投影方向不垂直于地表,而是与垂直方向有一定的角度θ,夹角θ一般取45°,由此渲染出来的2.5维地图3D视觉效果相对较好;
(4)计算每渲染完一张瓦片图片相机需沿横向及纵向移动的步进值,通过简单的三角函数关系可知,步进值d
x=tile
w,
d
x为横向步进值,d
y为纵向步进值;而步进总数step=2
zoom,这里纵向步进数与横向步进数一致。
(5)计算相机起始坐标,通过金字塔层级关系可知,相机起始坐标为:
一种2.5维地图坐标转换方法,包括2.5维地图坐标转换WGS84经纬度的方法;
其方法步骤为:
(1)计算3D平面坐标,其中坐标公式为:
R是WGS84参考系下地球半径,取R=6378137,x,y为地图引擎得到的Web Mercator坐标;Bw为渲染的倾斜摄影模型总宽度,与前述用以生成2.5维地图所用的参数Bw一致,θ为生成2.5维地图时设置的相机与垂直方向的夹角。Bx,By为中心点3D平面坐标,Ox,Oy为计算出的3D平面坐标;
(2)通过高度图使用迭代法求解3D空间坐标;
(3)通过中心点的3D平面坐标及中心点的经纬度,经过线性变换即可;得到查询点的经纬度及高程值,再进一步通过经纬度与Web Mercator转换公式即可得到Web Mercator坐标,经纬度计算公式如下:
其中
为上一步迭代计算得到的3D平面坐标,B
x,B
y为中心点的空间坐标,C
x,C
y为中心点的经纬度坐标,R是WGS84参考系下地球半径,取R=6378137,Lng,Lat即为查询点的经纬度值;该线性变换在城市级别的范围内误差小,能够满足使用要求,而范围过大则需要选取多个参考点以减小误差。
其中WGS84经纬度到2.5维地图坐标系变换方法为:
(1)WGS84坐标转换为3D平面坐标,可通过前述公式变换得到
其中Lng,Lat为输入的经纬度值,Bx,By为中心点的空间坐标,Cx,Cy为中心点的经纬度坐标,R是WGS84参考系下地球半径,取R=6378137,Px,Py为计算得到的3D平面坐标;
(2)由上一步得到的xy平面坐标,通过查询高度图,并进行双线性插值得到高程值Pz;
(3)通过上述过程得到的3D空间坐标,计算2.5维地图坐标的Web Mercator坐标表示
Oxy=Pxy-Dxy*Pztanθ
其中Dxy为投影方向在xy平面上的单位向量,Oxy为投影后的平面坐标,R是WGS84参考系下地球半径,R=6378137;Bw为渲染的倾斜摄影模型总宽度,与前述用以生成2.5维地图所用的参数Bw一致,θ为生成2.5维地图时设置的相机与垂直方向的夹角;Bx,By为中心点3D平面坐标;x,y为最终得到的2.5维地图Web Mercator坐标。
与现有技术相比,本发明有益效果:本发明采用与倾斜摄影建模技术相结合,使得2.5维地图制作周期大大减少,人力成本也接近零;通过生成多角度2.5维地图,便能提供接近真三维的展示效果,但并不会提高对客户端的要求以及网络资源的占用;2.5维地图坐标的转换方法使得能在倾斜摄影模型生成的2.5维地图上实现定位、查询功能,使得2.5维地图不仅能够展示栩栩如生的场景,并且能够结合标准GIS引擎实现复杂的运算、分析、查询功能。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
如图1并结合图2至图6所示,一种准三维地图生成方法,其方法步骤为:
S1、通过三维渲染引擎载入倾斜摄影模型;
S2、计算出图区域的包围盒参数;
S3、根据金字塔层级设置正交投影的宽高,计算步进值并设置相机的角度及初始位置;
S4、依次沿x、y方向按步进值移动相机并渲染,得到该层级的所有瓦片图片。
其中步骤S3进一步的步骤为:
(1)设定当前金字塔层级zoom,级别zoom从0开始,且第一级瓦片数量为1,每增加一级,分辨率将提高一倍,而瓦片数量将增加4倍;
(2)计算每个瓦片图片所需渲染的地物宽度,因总渲染区域宽度为B
w,由此可得金字塔级别为zoom时单张瓦片图片所需渲染地物宽度
(3)设定相机与垂直方向的夹角θ,不同于数字正射影像,2.5维地图投影方向不垂直于地表,而是与垂直方向有一定的角度θ,一般取45°;
(4)计算每渲染完一张瓦片图片相机需沿横向及纵向移动的步进值,通过简单的三角函数关系可知,步进值d
x=tile
w,
d
x为横向步进值,d
y为纵向步进值;步进总数step=2
zoom,这里纵向步进数与横向步进数一致。
(5)计算相机起始坐标,通过金字塔层级关系可知,相机起始坐标为:
一种2.5维地图坐标转换方法,包括2.5维地图坐标转换WGS84经纬度的方法;
其方法步骤为:
(1)计算3D平面坐标,其中坐标公式为:
R是WGS84参考系下地球半径,取R=6378137,x,y为地图引擎得到的Web Mercator坐标;Bw为渲染的倾斜摄影模型总宽度,与前述用以生成2.5维地图所用的参数Bw一致,θ为生成2.5维地图时设置的相机与垂直方向的夹角。Bx,By为中心点3D平面坐标,Ox,Oy为计算出的3D平面坐标;
(2)通过高度图使用迭代法求解3D空间坐标;
(3)通过中心点的3D平面坐标及中心点的经纬度,经过线性变换即可;得到查询点的经纬度及高程值,再进一步通过经纬度与Web Mercator转换公式即可得到Web Mercator坐标经纬度,经纬度计算公式如下:
其中
为上一步迭代计算得到的3D平面坐标,B
x,B
y为中心点的空间坐标,C
x,C
y为中心点的经纬度坐标,R是WGS84参考系下地球半径,取R=6378137,Lng,Lat即为查询点的经纬度值;该线性变换在城市级别的范围内误差小,能够满足使用要求,而范围过大则需要选取多个参考点以减小误差。
其中WGS84经纬度到2.5维地图坐标系变换方法为:
(1)WGS84坐标转换为3D平面坐标,可通过前述公式变换得到
其中Lng,Lat为输入的经纬度值,Bx,By为中心点的空间坐标,Cx,Cy为中心点的经纬度坐标,R是WGS84参考系下地球半径,取R=6378137,Px,Py为计算得到的3D平面坐标;
(2)由上一步得到的xy平面坐标,通过查询高度图,并进行双线性插值得到高程值Pz;
(3)通过上述过程得到的3D空间坐标,计算2.5维地图坐标的Web Mercator坐标表示
Oxy=Pxy-Dxy*Pztanθ
其中Dxy为投影方向在xy平面上的单位向量,Oxy为投影后的平面坐标,R是WGS84参考系下地球半径,R=6378137;Bw为渲染的倾斜摄影模型总宽度,与前述用以生成2.5维地图所用的参数Bw一致,θ为生成2.5维地图时设置的相机与垂直方向的夹角;Bx,By为中心点3D平面坐标;x,y为最终得到的2.5维地图Web Mercator坐标;Web Mercator是一个投影坐标系统,其基准面是WGS 1984。
与现有技术相比,本发明有益效果:本发明解决了传统2.5维地图制作的周期长,人力成本高的缺点,与近几年流行的倾斜摄影建模技术相结合,使得2.5维地图制作周期大大减少,人力成本也接近零;通过生成多角度2.5维地图,便能提供接近真三维的展示效果,但并不会提高对客户端的要求以及网络资源的占用;另外新的2.5维地图坐标的转换方法的提出,使得能在倾斜摄影模型生成的2.5维地图上实现定位、查询功能,使得2.5维地图不仅能够展示栩栩如生的场景,并且能够结合标准GIS引擎实现复杂的运算、分析、查询功能。
倾斜摄影测量建模技术是近年来发展出来的一种新技术,以大范围、高精度、高清晰、高效率数据采集处理流程生成三维模型,可以直观反映地物的外观、位置、高度等属性,同时大大降低了三维模型数据采集的经济代价和时间代价;通过倾斜摄影生成的数据成果来制作2.5维地图是一种可行的方法,并能够大大降低2.5维地图的制作工作量,极大的缩短制作周期和提供更快的更新频率。
实施例1:
准三维地图生成过程:
首先通过三维渲染引擎载入倾斜摄影模型,初始需要计算出图区域的包围盒参数AABB(轴对称包围盒),含包围盒中心位置坐标BxBy及包围盒宽高BwBh(由于生成后的瓦片采用Web Mercator坐标系表示,瓦片必须是正方形,因此只取Bw);然后按照设定的瓦片金字塔级别,并设置好相机参数,这里需要是正交投影,并设置正交投影的宽高,相机的角度及位置,使用计算出的步进值移动相机,并依次渲染出该层级的所有瓦片图片。
设定当前金字塔层级zoom,级别zoom从0开始,且第一级瓦片数量为1,每增加一级,分辨率将提高一倍,而瓦片数量将增加4倍;计算每个瓦片图片所需渲染的地物宽度,因总渲染区域宽度为B
w,由此可得金字塔级别为zoom时单张瓦片图片所需渲染地物宽度
设定相机与垂直方向的夹角θ,不同于数字正射影像,2.5维地图投影方向不垂直于地表,而是与垂直方向有一定的角度θ;夹角θ一般取45°,由此渲染出来的2.5维地图3D视觉效果相对较好;计算每渲染完一张瓦片图片相机需沿横向及纵向移动的步进值,通过简单的三角函数关系可知,步进值d
x=tile
w,
步进总数step=2
zoom;其中d
x为横向步进值,d
y为纵向步进值;计算相机起始坐标,通过金字塔层级关系可知,相机起始坐标为:
当上述计算过程执行完成之后,依次渲染指定层级、指定单元的瓦片图片;按照设定的zoom值及起始坐标,将相机位置沿x、y方向按步进值移动并渲染。采用弓形移动方式以减少模型加载及内存交互时间,加快渲染出图,这里每个瓦片图片输出分辨率均设置为256x256像素;图4为沿d
y方向的瓦片渲染示意图,按照标准的WMTS服务发布,因此可以使用所有支持WMTS的地图客户端浏览,包括浏览器(使用OpenLayers等)。通过设定不同的相机角度,可生成多个方位的2.5维地图,如倾角θ设定为45°,方位角分别设定为0°45°90°135°180°225°270°315°共八个方位,配合地图客户端,可实现多达八个视角方向的地图浏览,有效解决了地面建筑物等相互遮挡问题。
实施例2:
2.5维地图坐标转换WGS84经纬度的步骤为:计算3D平面坐标,其中坐标公式为:
R是WGS84参考系下地球半径,取R=6378137,x,y为地图引擎得到的Web Mercator坐标;Bw为渲染的倾斜摄影模型总宽度,与前述用以生成2.5维地图所用的参数Bw一致,θ为生成2.5维地图时设置的相机与垂直方向的夹角。Bx,By为中心点3D平面坐标,Ox,Oy为计算出的3D平面坐标;通过高度图使用迭代法求解3D空间坐标,使用迭代法计算查询点的真实坐标及高程值示意图;如图5所示,其中黑线(曲折线)表示倾斜摄影模型的地表,斜直线表示制作2.5维地图时使用的投影方向,其交点处即2.5维地图上的查询点的三维坐标;h1、h2、h3分别为首次获取的高度、第一次迭代后获取的高度、第二次迭代后获取的高度;第n+1次的3D平面坐标计算公式为:
On+1=On+Dxyhn tanθ
On为第n次计算得到的3D平面坐标,其中n=0时On为(Ox,Oy),DXY为投影方向在xy平面上的单位向量,hn为第n次查询高度图得到的高度,θ为投影方向与垂直于xy平面方向的夹角;
通过图5可以发现通过几次迭代后,计算得到的平面坐标及高度与查询点所表示的物体平面坐标及高度趋于一致。高度的获取可通过采样高度图并进行双线性插值得到;通过实际运用,高度图分辨率为10米时,迭代低于5次就可达到非常好的效果。
通过中心点的3D平面坐标及中心点的经纬度,经过线性变换即可得到查询点的经纬度及高程值,再进一步通过经纬度与Web Mercator转换公式即可得到Web Mercator坐标;经纬度计算公式如下:
其中
为上一步迭代计算得到的3D平面坐标,B
x,B
y为中心点的空间坐标,C
x,C
y为中心点的经纬度坐标,R是WGS84参考系下地球半径,取R=6378137,Lng,Lat即为查询点的经纬度值;该线性变换在城市级别的范围内误差小,能够满足使用要求,而范围过大则需要选取多个参考点以减小误差。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。