近期有个项目在展示上希望在三维地图上做展示,于是需要尝试三维地图的一些内容,在网上查找了一些内容后,一下一篇博客满足了我的需求。
资料:https://blog.csdn.net/u0/article/details/
地形下载:http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp
1. 利用cesiumlab.com
网站:https://www.cesiumlab.com/
1.1 处理地形数据
数据处理 – 地形切片

讯享网
1.2 发布服务
发布服务 – 地形服务 中可以看到刚才处理的数据发布的路径和地址

1.3 三维可视
地形 – leb服务 – 选择刚才的地形服务,添加即可

效果如下

如果需要水面效果,可以通过
分析 – 水面 标绘需要展示水面效果的区域

在水面上右键 – 查看源代码,貌似可以看到水面效果的代码,不知道能不能在软件外的js中叠加使用,这个等后面测试。

2.利用ctb生成terrain文件
2.1 根据边界裁剪文件
如下图 一个是下载的地形地图文件,一个是行政区划边界数据。

Data Management Tools – Raster – Raster Processing – Clip

2.2 处理空值
2.2.1 多个地形文件合并
如果不存在多个地形文件要合并的,直接忽略这一步
Data Management Tools – Raster – Raster Dataset – Mosaic

看到一下图片表示合并成功

2.2.2 空值处理
spatial Analyst Tool – Map Algebra – Raster Calculator
Con(IsNull("xxxx.tif"),0,"xxxx.tif")//xxxx.tif对应你的合并后的文件
讯享网

处理完成效果


2.3 利用ctb生成地形文件
进入ctb文件所在目录,执行以下命令
讯享网ctb-tile -o 文件输出的目录 -s 14 -e 0 -r nearest -c 4 你处理过的tif文件


处理完成。启动tomcat即可访问三维地图路径
2.4 可能出现的错误
2.4.1 layer.js 不存在
新建一个json文件,复制以下内容到json文件中
{
"format": "heightmap-1.0", "version": "1.0.0", "scheme": "tms", "tiles": ["{z}/{x}/{y}.terrain"] }
2.4.2 0/0/0.terrain 不存在

猜测这个生成的时候没有数据,貌似不影响数据的使用,先放着,后续想想怎么补救。
2.4.3 tomcat 跨域问题
在 tomcat 的conf 文件夹下,修改 web.xml文件,添加一下的代码,具体标签的含义参考tomcat的相关配置说明文档。
讯享网<filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> <init-param> <param-name>cors.allowed.origins</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>cors.allowed.methods</param-name> <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value> </init-param> <init-param> <param-name>cors.allowed.headers</param-name> <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value> </init-param> <init-param> <param-name>cors.exposed.headers</param-name> <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value> </init-param> <init-param> <param-name>cors.support.credentials</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>cors.preflight.maxage</param-name> <param-value>1800</param-value> </init-param> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2.5 查看效果代码
需要引入cesium.js文件,这个后续再工作中在仔细学习,现在就粗略的用一下展示的效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="Cesium/Cesium.js"></script> </head> <body> <div id="cesium"></div> </body> <script> var viewer = new Cesium.Viewer('cesium', {
terrainProvider: new Cesium.CesiumTerrainProvider({
url: "http://localhost:6068/tzz", // 默认立体地表 }) }); </script> </html>
至此三维地图有关的一些做法就这样写完了,后续再深入。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/12088.html