直接获取指定城市3D模型的方法至少有以下几种,方法不同模型尺寸,外观精度不同:
1.Blender3.3+BlenderGIS【blender插件】 + [ TOPOgraphy获取高程(VPN)]
#评价是楼宇尺寸,外观精度低;
2.Cadmapper
#国内大规模建筑群信息少,免费的只有一平方公里,国内建筑群完整性低于百度地图;
3.Renderdoc19.0耦合chrome(修改属性)+blender3.1+Mapsmodelimporter【blender插件】;
#由于Mapsmodelimporter是专为Googleearth设计的,所以此方法只能用于爬取Googleearth地图模型;Google_earth 缺少部分欧洲国家,大部分中东国家,以及我国大陆的建筑;
#或许需要高速VPN才能实现个人抓取到教程中那么精细的模型,需要配合3D模型编辑软件修缮才能用于CFD(但是我没有编辑成功过);
4.Renderdoc任意版本耦合微软Edge浏览器(修改属性)+百度地图(任意看得出SD建筑的地图)+CSVConverter;
#能够获取百度地图中的3D城市建筑群,模型比较适合于CFD计算,但是需要手动把瓦片拼接起来;
由于前三种B站,知乎,CSDN上可以找到教程,这里只介绍第四种
第四种需要用到Renderdoc(19.0测试可行),CSVConverter 两个软件
第四种实际上是对第三种的本土化,目的是获得百度地图上的国内模型,所以renderdoc和浏览器的耦合工作和第三种操作相同,方法可参照以下链接
Google地图3D城市模型下载最新实践_Apple_Coco的博客-CSDN博客_谷歌地图下载模型
Release Maps Models Importer v0.5.0 · eliemichel/MapsModelsImporter · GitHub
以下是第四种方法从renderdoc(19.0)与Chrome耦合到爬取成功第一个百度地图模型的流程:
1.下载最新的Chrome后,打开属性,用这行字符串覆盖原来“目标”中的内容:
C:\Windows\System32\cmd.exe /c "SET RENDERDOC_HOOK_EGL=0 && START "" ^"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe^" --disable-gpu-sandbox --gpu-startup-dialog"
2.然后利用以下两篇文章学习renderdoc截帧方法,并安装CSV转换软件
吴彦祖的祖https://zhuanlan.zhihu.com/p/428655330
童广https://zhuanlan.zhihu.com/p/80704313
3.将上述方法应用于爬取百度地图模型
(1)打开Chrome,看到小窗号码,先点击确定
(2)打开renderdoc19.0 ,点击File,点击inject into process,进入inject into process界面,并在Filter process 框中输入chrome的小窗中的数字7316
如果没有出现chrome.exe那行就点击refresh
(3)然后点中chrome.exe那行使他变蓝色,然后点击inject【注意!inject前一定不要有已经打开的chrome浏览器,否则会Inject失败,要确保(1)是打开的第一个chrome浏览器页面】
(4)点击inject后出现如下界面,然后再点击小窗的确定
点击确定后chrome界面中就出现画面了,如果左上角出现了蓝线标记的内容说明可以进行后续截帧了
(5)搜索进入百度地图,我们以香港金紫荆广场建筑群(百度地图上少见的精细建筑群)为例
看到金紫荆广场建筑群后,鼠标滚轮调整页面大小,截取到的内容由看到的决定(会比我们看到的范围略大)
(6)用renderdoc截取所见画面
根据上述步骤后renderdoc应该进入了这个界面
我们把延迟截取时间调成5s,然后点击Capture After Delay,然后迅速转到金紫荆广场界面,用鼠标拖拽抖动画面,5s后renderdoc中就有我们的截取结果了。
抖动画面演示
(7)然后双击截取结果,加载出左栏目信息
(8)左栏中找到3D建筑群碎片,并导出CSV文件
以我抓取到的为例,建筑的碎片信息在Colour Pass #1 中,我们需要点击其中子项,在Texture Viewer或mesh Viewer中观察碎片是否是建筑模型
这里我找到DrawIndexed(2979)是香港会展中心,我们以这个碎片为例演示如何从renderdoc中导出建筑的CSV文件然后用CSVconverter转换为格式的模型。
在meshviewer中的如下框中点击右键后点击Export to csv
(9)然后我们利用在前面提到的文章中下载的CSVConverter将香港会展中心的CSV文件转换成OBJ格式的文件
其他参数选择如下(更详细的描述可见吴彦祖的祖)
然后我们可以在CSV文件所在目录中看到转换成功的obj文件,我们把他导入到paraview里面看看
看上去还是很不错的
(10) 获取整个紫荆广场画面中的模型
目前我采用的方法就是把所有obj格式的碎片在rhino中根据他们的位置手动拼接起来,这个拼接过程就像拼图一样,(碎片的边缘可以发现拼接线索,所以在rhino中手动拼接这些碎片并不难)
我拼接的结果如下