主权项 |
一种基于城市三维模型提取2.5维地图建筑物轮廓的方法,其特征在于按以下步骤进行:步骤一、建立3维地图到2.5维地图坐标映射公式、获取建筑模型各三角面顶点坐标集;步骤二、根据坐标映射公式,计算建筑模型投影到2.5维地图后各三角面的顶点坐标集;步骤三、对2.5维中的各三角面进行合并,得到建筑物在2.5维地图中的轮廓;所述建立3维地图到2.5维地图坐标映射公式按以下步骤进行:确立坐标转换公式Fc:Fc为<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>X</mi><mo>=</mo><mi>x</mi><mo>-</mo><mfrac><mo>∂</mo><mi>γ</mi></mfrac><mi>z</mi></mrow></mtd></mtr><mtr><mtd><mrow><mi>Y</mi><mo>=</mo><mi>y</mi><mo>-</mo><mfrac><mi>ρ</mi><mi>γ</mi></mfrac><mi>z</mi></mrow></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000851028310000011.GIF" wi="343" he="221" /></maths>所述x、y、z为三维模型中任意一个顶点的三维坐标值,所述x、y、z均为任意实数;所述<img file="FDA0000851028310000012.GIF" wi="63" he="55" />ρ、γ为平行投影的投影方向单位向量的分量,所述<img file="FDA0000851028310000013.GIF" wi="63" he="55" />ρ、γ均为大于0小于1的实数;所述X、Y为三维点(x、y、z)投影到二维地图上的二维点坐标值,所述X、Y为任意实数;获取建筑模型各三角面顶点坐标集按以下步骤进行:A1、构建一个数组V1,用于存储三维建筑模型所有三角面的顶点坐标;A2、对每个三维建筑模型,依次取出模型中的每个三角面,将三角面各顶点的坐标x、y、z写入数组V1中;所述步骤二按以下步骤进行;B1、建立数组V2,用于存储建筑模型所有三角面顶点在2.5维地图中对应的顶点坐标;B2、依次取出数组V1中的三个元素;B3、使用公式Fc,计算每一组x、y、z坐标值对应的二维坐标X、Y,并依次存储数组V2中;所述对2.5维中的各三角面进行合并,得到建筑物在2.5维地图中的轮廓按以下步骤进行:C1、建立数组V3,每个元素为一个三角面,用T表示;C2、依次取出数组V2中的三个元素,组成一个三角面T<sub>m</sub>;m为正整数;C3、建立一个多边形面P,并将数组V3中第一个元素的各个顶点保存到P中,P为:{X<sub>1</sub>,Y<sub>1</sub>,X<sub>2</sub>,Y<sub>2</sub>,X<sub>3</sub>,Y<sub>3</sub>};并删除数组V3的第一个元素;C4、取出数组V3中的第一个元素T<sub>1</sub>;C5、判断T<sub>1</sub>与P是否相交或相邻,当T<sub>1</sub>与P相交或相邻时,计算T<sub>1</sub>与P的并集,得到新的多边形P',并将P中的所有元素替换为P'的所有元素,然后从V3中删除元素T<sub>1</sub>;当V3已经没有元素时结束,否则选取T<sub>1</sub>后的一个元素执行步骤C5;当T<sub>1</sub>与P不相交或不相邻时,执行步骤C6;C6、如果当前元素不是数组V3最后一个元素,则取出数组V3中T<sub>1</sub>的下一个元素,然后执行步骤C5;否则结束。 |