使用开源3D引擎从Openstreetmap数据渲染地图?

时间:2012-02-28 15:08:05

标签: 3d openstreetmap

从Openstreetmap数据渲染3D地图可能非常cumbersome

但是,如果要求的要求比在3D中渲染世界上的任何城市要低,那该怎么办呢?

如果我只需要渲染某个受特定边界限制的城市,该怎么办?不应该渲染很多多边形,特别是如果我选择只渲染屏幕上实际看到的那些建筑物和道路(我听说这种技术用于游戏开发)。

我希望实现像this这样的东西,但是对于具有近似高度且没有纹理的建筑物来说,只需要简单的盒子就可以了。所以,基本上我只需要一个基于OSM的道路网络和用3D表示建筑物的简单框。

所以,计划可能如下:

  • 将OSM数据提取到.osm文件中;
  • 将“高度”数据添加到此文件中的每个建筑物(手动);
  • 使用某种3D引擎从.osm文件(需要自定义解析器)渲染地图的3D视图。

这个计划可行吗?是否有任何开源3D引擎可以使用/自定义从.osm文件渲染OSM地图?是否存在可以[可能]自定义以呈现OSM地图的Linux兼容(OpenGL?)3D引擎?

4 个答案:

答案 0 :(得分:3)

您可能需要查看 OSM2World 。它是一个转换器应用程序,可以读取各种文件格式的OSM数据并计算3D模型,同时考虑建筑物的高度,屋顶形状和材料属性以及各种其他细节。它可以使用内置的OpenGL查看器显示场景,也可以将模型导出为.pov或.obj等格式,后者几乎可以被所有开源建模者和引擎读取。

如果该地区的建筑物布局合理,场景如下:

OSM2World rendering

OpenStreetMap社区还概述了3D development个活动,展示了其他几个工具。

答案 1 :(得分:2)

以下是一些开源项目,您可以根据自己的需求进行调整(见下文),大部分都在使用opengl,它们也可以满足您的需求。

我先看看glosm。它正在做你想要的大部分。您可以看到它的一些屏幕截图here

答案 2 :(得分:1)

请注意,在大多数地区,OpenStreetMap只有很多路段和其他东西,但不是单个建筑物。这是我上次检查时的情况,但这取决于您感兴趣的区域。

据我所知,没有现成的方法可以做到这一点,但如果你只是想要简单的东西,那就不应该那么复杂了。简要说明:

1 - 从osm xml文件中提取脚印多边形数据。

2 - 投射到你选择的笛卡尔坐标,例如使用PROJ.4,因为osm坐标是lat-long。

3 -Triangulate以避免非凸多边形。

4 - 挤出三角形多边形,为每个边界边缘生成一个四边形。

5 - 最后,您可以将生成的模型插入到您喜爱的3d引擎中,例如OpenSceneGraph,或者使用OpenGL自行渲染它们。

在那之后,你想要添加的东西越多,比如纹理,建模细节,就越复杂。

答案 3 :(得分:0)

许多城市都可以在线访问Real Estate records,包括建筑维度。