翼度科技»论坛 编程开发 python 查看内容

倾斜摄影osgb格式文件,进行坐标转换

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
倾斜摄影OSGB格式的文件,很棘手,今天需要把osgb放到UE中渲染。碰到的问题如下:
1、osgb文件导进去后,Z轴不想上,是歪的,小人放进去后,就斜站在马路上。
2、根本原因是坐标系,UE的插件cesium for UE支持WGS84坐标(wkid:4326)。
怎么解决问题呢?
1、当然是问GPT呀,搞搞问答,看它出什么答案,结果,很拉跨。
2、直接转换:通过osgbLab软件进行osgb坐标系变换,用了,能成功,但是,是假性的成功。用其他软件打开看,会发现转换的根本不对,跟极坐标似的。
3、GDAL,一个不错的库,然而,也不行。
问题来了:怎么才行?
当然是间接投影呀!
1、转换osgb为obj格式。使用osgbLab工具,把倾斜摄影的成功转成一个obj,大几百MB。
2、obj进行格式转换,见代码。注意修改input.obj与output.obj。核心功能:找到obj代码里的坐标部分,进行坐标系变换。
  1. # -*- coding: utf-8 -*-
  2. import pyproj
  3. # 初始化坐标系转换器
  4. transformer = pyproj.Transformer.from_crs("EPSG:4528", "EPSG:4326", always_xy=True)
  5. with open('input.obj', 'r') as infile, open('output.obj', 'w') as outfile:
  6.     for line in infile:
  7.         if line.startswith('v '):  # 处理顶点信息
  8.             parts = line.split()
  9.             x, y, z = map(float, parts[1:4])
  10.             # 执行坐标系转换
  11.             x, y = transformer.transform(x, y)
  12.             outfile.write(f"v {x} {y} {z}\n")
  13.         else:
  14.             outfile.write(line)
复制代码
3、使用osgbLab进行格式转换,obj转osgb。至此,曲线救国完成。
相关说明:
obj格式简介 https://www.cnblogs.com/dzmsjs/p/18389082

来源:https://www.cnblogs.com/dzmsjs/p/18389087
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具