使用Cesium做三維特別是房屋白模啥的琐谤,通常會(huì)用3DTiles,這種情況我通常用FME來(lái)生成玩敏,不管我的數(shù)據(jù)是什么坐標(biāo)系斗忌,他都會(huì)自己處理好坐標(biāo)系的問題。直到我需添加單個(gè)房屋模型時(shí)旺聚,glb模型文件就成了比較好的選擇织阳,但是在加的過程中遇到了很多問題,特別是建模的時(shí)候基礎(chǔ)線框使用了比較通用的墨卡托投影坐標(biāo)系的數(shù)據(jù)導(dǎo)致模型大小不對(duì)的問題砰粹,虧自己搞了十年GIS了唧躲,剛遇到的時(shí)候竟然沒意識(shí)到這個(gè)問題,真是蠢透了。
Cesium的三維空間坐標(biāo)系
首先記錄一個(gè)跟標(biāo)題沒啥關(guān)系弄痹,但也是加載過程中遇到的問題饭入。這跟Cesium的三維空間坐標(biāo)軸有關(guān),Cesium的三維空間坐標(biāo)系是這樣的
但是建模軟件肛真,比如我用的Sketchup Pro的坐標(biāo)軸卻有所不同谐丢,藍(lán)色是Z軸,紅色是X軸蚓让,綠色是Y軸乾忱。
跟Cesium坐標(biāo)軸相比,Sketchup的X軸和Y軸都得順時(shí)針轉(zhuǎn)個(gè)90°历极,因此導(dǎo)出的模型也會(huì)有差別饭耳,不同的建模軟件可能會(huì)不同,記錄這個(gè)事情就行执解。
墨卡托投影的變形
其實(shí)說(shuō)明標(biāo)題的問題很簡(jiǎn)單寞肖,因?yàn)槟ㄍ凶鴺?biāo)系在長(zhǎng)度上是會(huì)有變形的,越靠近赤道變形越少衰腌,越靠近兩極變化越大
有大佬做了一個(gè)演示摩卡他投影的小游戲新蟆,下面也貼了游戲的演示動(dòng)畫∮胰铮可以理解成有一個(gè)內(nèi)切地球的圓柱琼稻,地球中心放一盞燈,將地球投影到圓柱上饶囚。
通過演示可以看出帕翻,周長(zhǎng)為2πR的球,投影出來(lái)的地圖是一個(gè)變成變成為2πR的正方形萝风。在赤道嘀掸,長(zhǎng)度為2πR投影距離也是2πR,實(shí)際長(zhǎng)度和投影長(zhǎng)度的比是1规惰,沒有變形睬塌,實(shí)際上我在想到這個(gè)問題之后真的跑去osm下了一點(diǎn)印度尼西亞的數(shù)據(jù)試了下。在維度為?的地方歇万,緯線周長(zhǎng)為2πR*cos(?)揩晴,投影長(zhǎng)度仍然是2πR,實(shí)際長(zhǎng)度和投影長(zhǎng)度的比是cos(?)贪磺。
如果已經(jīng)用墨卡托投影做了很多模型硫兰,在Cesium里面也不是不能用,根據(jù)模型所在的維度將變換比例算出來(lái)然后還原即可寒锚,不過得注意呻粹,高度不能還原。
高斯-克呂格投影的變形
不能用墨卡托投影苏研,再一個(gè)比較常用的就是高斯-克呂格投影了等浊,其實(shí)高斯投影與墨卡托投影類似,是一種橫軸墨卡托投影。不同之處在于高斯-克呂格的圓柱體沿經(jīng)線而不是赤道接觸球體或橢圓體,且只正投影中央經(jīng)線兩側(cè)一定范圍的橢球面大渤。
[圖片上傳失敗...(image-285acd-1637145102447)]
高斯-克呂格投影的中央經(jīng)線無(wú)變形泵三,自中央經(jīng)線向投影帶邊緣耕捞,變形逐漸增加,變形最大之處在投影帶內(nèi)赤道的兩端烫幕。
其變形公式為:
其中μ是長(zhǎng)度比俺抽,?是緯度,λ是經(jīng)度與中央經(jīng)線經(jīng)度差较曼,磷斧,嗯,算起來(lái)挺麻煩的捷犹,好在查論文查到了別人算的數(shù)據(jù)
可以看到弛饭,高斯-克呂格投影的長(zhǎng)度和面積變形是很小的,到房屋模型這么大的比例尺萍歉,用三度帶侣颂,最大經(jīng)差1.5°,我國(guó)最南端北緯20°左右翠桦,變形量千分之三左右横蜒。
總結(jié)
三維GIS建模的時(shí)候不要隨便使用墨卡托投影胳蛮,除非在赤道附近销凑,可以使用高斯-克呂格投影,我試驗(yàn)下來(lái)的效果也很好仅炊。