在做可视化项目的时候, 有一个需求就是让用户选择一个范围, 自动根据选中的范围生成3d地图, 3dtiles数据是一个老大难的问题, 于是我通过node实现了一个小工具, 从OSMBuildings获取3d楼层数据......
先看效果图:
实现逻辑大概分为七步:
-
通过地图绘制边框, 获取当前边框左上角和右下角的经纬度和缩放等级;
-
借助
tile-lnglat-transform工具将经纬度转换为xyz坐标 -
根据左上角和右下角获取当前区域内的xy坐标
-
通过
Axios爬取3d buildings数据 -
将获得的geojson数据叠加在一起 最后拼接为一个大的geojson
-
通过geojson2shp工具将geojson转换为shp格式数据
-
通过3ditiles工具将shp格式数据转换为3dtiles瓦片数据
Node爬取数据代码 GitHub地址: github.com/CahierX/geo…
使用说明:
1. clone 代码到本地,根目录使用 yarn 命令安装项目
2. 项目根目录下执行 新建 dist 文件夹和 dist/3dtilesFiles 文件夹 (若目录已存在则不需要)
3. 传入地图数据 get 请求:
lnglatRange: 传入在地图上绘制矩形边框的矩形左上角和右下角经纬度
zoom: 地图缩放级别
http://127.0.0.1:3000/getData?lnglatRange=lng,lat,lng1,lat1&zoom=15