CityGML三维查看【QGIS】
今天我将展示如何读取 CityGML 文件并以 3D 方式查看其信息,以及如何通过挤出将shapefile转化为3D模型。
我还没有找到 3D 渲染器中可用设置的非常详细的描述,因此我花了一些时间测试它们。 我试图弄清楚它们的作用以及何时使用它们。 我将在本文末尾解释我的发现。
但就像我之前提到的,我无法检查我的结论是否正确。 如果我有什么问题,请告诉我!
1、显示 CityGML 数据集
目前,不难找到免费使用的 3D 城市模型。 大多数城市都有开放、免费的 3D 数据可供下载。 你可以在政府机构运营的地理信息门户上找到它们。
如果你不想查找数据,请访问 CityGML 官方网站。 可以在那里找到此类门户网站的完整列表以及一些示例数据集。
更好的是,现在你可以使用新的 Google 数据集搜索。 只需在搜索框中输入 CityGML 并找到您要的数据。
为了本指南的目的,我使用了CityGML 网站上找到的代尔夫特的示例数据集,你可以从这里下载。
下载并解压 CityGML 文件后,创建一个新的 QGIS 项目。
首先,将 Delft_3dfier.gml 文件拖到 QGIS 窗口中打开。 如果程序询问你要导入哪些图层,请标记“构建”并按“确定”。 最有可能的是,图层会丢失 CRS 信息,因此请在图层属性中手动设置。
我将其设置为 EPSG: 7415,这是我的数据的 CRS。
不要忘记设置项目的坐标系。 请务必选择投影 CRS,否则,3D 地图视图将无法打开。 我用的和以前一样(EPSG:7415)。
接下来的步骤很简单。 打开图层样式面板,启用 3D 渲染器并打开 3D 地图视图以查看效果。
2、挤压shapefile
你是否知道,即使是普通的shapefile(例如直线和多边形)也可以以 3D 形式可视化?
在第二个示例中,我将根据 OpenStreetMap 信息创建一个建筑物占地面积并对其进行拉伸。 为了表示地形,我将其放置在 DEM 图层上。
首先,找到建筑物所在区域的 DEM。
添加一些带有建筑物的底图。 例如开放街道地图。
在左侧的浏览器面板中,右键单击 XYZ Tiles。 选择“新建连接”,输入图层的名称。
在 URL 字段中粘贴此链接:
http://tile.openstreetmap.org/{z}/{x}/{y}.png
并单击“确定”进行确认。 新图层出现在 XYZ 瓷砖下方。 将其拖至图层面板。
创建一个新的多边形图层并勾勒出所选建筑物的轮廓。
准备好后,打开“图层样式”面板并导航到“3D 视图”选项卡。 启用 3D 渲染器。
将 DEM 文件添加到项目中并检查建筑物下的一些高程值。 输入这些数字的平均值作为高度。
它将确保建筑物的底面保持在地形的顶部。 在拉伸值下,输入建筑物的高度。 将高度限制设置为绝对。
打开 3D 地图视图并检查结果。
3、3D 渲染器设置
本文包含了QGIS的 3D 渲染器可用设置的简短描述。 我通过在线研究找到了一些解释,通过尝试和测试方法找到了其他解释。
3.1 高度限位
高度限位(Height Clamp)负责确定物体在表面上的位置。 共有三个选项:绝对、相对和地形。 根据你选择的设置,高度值的解释方式有所不同。 如果高度值是绝对值并且从 0 开始测量(如 CityGML 示例),则“绝对”设置是最佳选择。 另外两个值“相对”和“地形”将给定的高度值添加到地形高程中。
3.2 高度绑定
将高度绑定(Height Binding)设置为顶点,要素的每个顶点都将被固定到曲面上。
另一方面,如果你选择质心,则仅附加要素的质心。
3.3 剔除模式
剔除(culling)一词用于 3D 渲染。 这意味着排除不会添加到最终图像的几何图形。 使用剔除可以提高渲染速度。
如果将剔除模式设置为“返回”,则面向建筑物内部的多边形将不会被渲染。 这意味着如果在 3D 模型内部移动视角,你将能够看到外部。 此设置有助于性能优化。
设置正面剔除将导致多边形正面消失。
3.4 添加背面
有时 3D 多边形无法正确构建。 当这种情况发生时,你可以在启用反向剔除时注意到它 - 一些墙丢失了。 如果你想改进此类数据的渲染,请启用“添加背面”选项。 但要小心,此操作需要更多的图形内存。
3.5 漫反射、环境光、镜面反射和光泽
在漫反射下,你可以设置对象的颜色。
设置环境颜色意味着选择对象处于阴影中时的颜色。
镜面反射设置闪亮物体的反射颜色
更改光泽值可控制对象的反射率。
原文链接:CityGML and 3D data in QGIS
BimAnt翻译整理,转载请标明出处