3D城市组件中城市群白膜/3D建筑/带层高的GeoJSON数据如何获取?
这片文档将针对3D城市/3D城市-抢先版子组件3D建筑的数据获取做说明
就是这些个高高低低没有材质的建筑白膜
示例数据
浙江省杭州市滨江区建筑GeoJSON数据(解压后使用)👇
在说明如何获取或者如何制造这些数据之前,先说明这个数据的本质是什么
这些城市群白膜是由带层高的建筑GeoJSON经过3D城市/3D城市-抢先版组件生成的
虽然文件打开一大串很复杂的样子,但理解数据表达的含义并不难,文件的本质就是好几个层级的数据
一个区域的带层高的建筑GeoJSON是这个区域所有建筑数据的集合,每个建筑的数据包含编号、轮廓、层高等等参数属性
这个带层高的建筑GeoJSON由shp数据裁切转换而来
「常见地图数据类型以及获取途径」中有shp数据以及获取途径的介绍👇
获取方式
以获取「浙江省-杭州市-滨江区」的带层高的建筑GeoJSON数据为例。
所需数据材料以及软件
EasyMap(在线使用):https://map.easyv.cloud/
QGIS(需下载):https://www.qgis.org/en/site/
城市shp数据:「常见地图数据类型以及获取途径」中有shp数据以及获取途径的介绍👇
这个是本文用到的示例数据👇
解压「杭州市shp」压缩包 获得城市建筑的shp数据
裁剪数据 如果获取到的数据就是想要区划范围可以忽略这步
我们的目标是杭州市滨江区的数据,示例数据中的数据是杭州市的数据,那么就需要裁剪一下
当然,虽然从需求出发不做裁剪也能够满足业务需求,但是场景中不必要的数据会给可视化应用带来性能负担
所以如果获取的到shp数据比所需地域范围更大的话,建议对数据进行裁剪
打开QGIS,将「杭州市_百度建筑.shp」拖入QGIS
shp数据坐标系校对
因为不同渠道获取的shp数据使用的坐标系可能不同,在裁剪数据的过程中我们把所有的数据先处理成一个坐标系
这里选择WGS84墨卡托投影(因为3D城市/3D城市-抢先版默认底图使用的坐标系为WGS84)
常见坐标系的介绍在这里👇
点击右下角坐标系的按钮
在过滤搜索栏中输入WGS84/Pseudo-Mercator搜索后并选中,点击OK
获取滨江区JSON轮廓边界数据
首先获取一下需要裁剪的范围的JSON轮廓(滨江区)
解压后进行坐标系转换
因为EasyMap的数据来源为高德开放平台,使用的坐标系为火星坐标系,同样的我们转换成WGS884
选择火星坐标系转EasyV默认使用坐标系,上传解压后的.json后缀的文件,
点击转换,转换后点击下载
将转换后的文件拖入QGIS
裁剪
点击矢量-地学数据处理工具-裁剪
输入选择被裁剪的数据,叠加选择裁剪轮廓
裁剪后的结果
导出GeoJSON
导出文件
右键「裁剪后」选择导出-另存要素为
确认层高字段
打开导出的文件,确认一下代表建筑层高的数据字段是什么,这里是height 也有可能是floor
在3D城市/3D城市-抢先版中使用
上传数据
添加3D城市-抢先版组件,选择子组件-3D建筑的样式配置面板,上传数据
确保层高字段配置项与数据中的层高字段一致
切换场景视角!!!
组件的默认场景视角在浙江省宁波余姚,如果上传了发现没有建筑,先在场景管理切换视角
切换后记得保存镜头视角!!
常见问题
如果想要的数据范围不是一个行政区划而是一个多边形怎么办?
在【裁剪数据-获取滨江区JSON轮廓边界】这一步中
在EasyMap中获取滨江区JSON轮廓边界改为在EasyMap绘制子组件-面
绘制完成之后 保存为JSON
保存后进行坐标转换
选择火星坐标系转EasyV默认使用坐标系,上传.json后缀的文件,
之后的步骤都与文档一致
生成的建筑模型与地图底图有偏移怎么办?
存在偏移的话基本可以定位问题在:建筑数据使用的坐标系与地图底图使用的坐标系不一致
将建筑数据使用的坐标系统一成地图底图使用的坐标系就好
常见坐标系的介绍在这里👇
如何获得河流/道路/铁路GeoJSON数据?
获取城市shp数据
「常见地图数据类型以及获取途径」中有shp数据以及获取途径的介绍👇
获取后裁剪方式与本文中建筑数据处理的方式一致