DEM高程地形瓦片数据Cesium使用教程

一、简介

从开始写文章到现在,陆续发布了全球90m、30m(包括哥白尼及ALOS)、12.5m全球级瓦片数据,以及中国12.5、日本10m、新西兰8m、等国家级瓦片数据,同时也发布了台湾20m、中国34省区12.5m等地区级瓦片数据。在数据发布的文章中对数据如何发布,如何在Cesium中调相关接口使用只字未提,虽然数据发布接入对于资深开发者来说比较简单,但是对于入门者来说,还是比较费劲的,因此,我在这里详细给大家介绍一下地形瓦片数据下载后如何使用。数据使用分两步:1.数据发布,相当于在后端进行数据发布,供前端调用进行可视化展示;2.Cesium调用CesiumTerrainProvider对数据发布url进行接入;下面分别进行详细介绍。

二、数据发布

1.数据发布

地形瓦片数据很简单,是terrain格式文件,按照层级和列号以文件夹形式组织;而且数据切好后不需要改动,都是静态文件,因此,使用Nginx进行发布最为方便、简单,也可以使用Tomcat等也可以发布。这里我使用windows环境下Nginx对ALOS全球30m地形瓦片数据发布进行介绍。
首先下载Nginx,我下载的是1.24.0版本,下载解压后,进入conf文件夹,使用notepad++打开nginx.conf文件,对默认server进行配置,如下图所示:
在这里插入图片描述
这里监听的是8802端口,也针对跨域进行了相关设置,这里不再赘述,我们关注的是location部分,root配置的是地形瓦片数据根目录在电脑的绝对路径,我这里配置的是D:/Data/DEM/Data/DEM-30M-WGS84-GLOBAL-ALOS-MESH/,在电脑中打开这个绝对路径,可以看到ALOS全球30m地形瓦片数据的根目录截图:
在这里插入图片描述
为了方便大家使用,我把server的配置信息发出来。

  server{listen       8802;server_name  localhost;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;add_header Access-Control-Allow-Origin "$http_origin";add_header Access-Control-Allow-Credentials true;add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';if ($request_method = 'OPTIONS'){return 204;}location / {autoindex on;root   D:/Data/DEM/Data/DEM-30M-WGS84-GLOBAL-ALOS-MESH/;#index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

配置好后,保存nginx.conf文件,然后打开命令行,进入nginx.exe当前目录,输入命令"start nginx"对nginx进行启动,会有一个窗口一闪而过,这样数据就发布了。
在这里插入图片描述
数据虽然发布了,为了验证数据是否发布成功,我们可以打开浏览器,输入“http:\localhost:8802”,如果显示地形瓦片数据目录,表示数据发布成功了。
在这里插入图片描述

三、数据接入显示

数据发布完成后,我们开始进行数据接入,首先搭建Cesium工程,这里不再展开,我放出加载地形瓦片数据关键代码:

  //创建viewerconst viewer = new Cesium.Viewer('cesium-app', {selectionIndicator: false,baseLayerPicker: false,homeButton: false,infoBox: false,timeline: false,navigationHelpButton: false,navigationInstructionsInitiallyVisible: false,vrButton: false,fullscreenButton: false,geocoder: false,animation: false,sceneModePicker: false,shadows:true,imageryProvider: new Cesium.ArcGisMapServerImageryProvider({url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'})});viewer.cesiumWidget.creditContainer.style.display = "none";viewer.scene.globe.enableLighting = false;viewer.scene.highDynamicRange = true;viewer.scene.msaaSamples = 16;viewer.scene.fog.enabled = true;viewer.scene.fog.enableLighting = true;//加载地形viewer.terrainProvider = new Cesium.CesiumTerrainProvider({url:"http://192.168.1.77:8802/",tilingScheme: new Cesium.GeographicTilingScheme(),requestVertexNormals:true});

在上述代码中,首先创建viewer对象,设置大气、雾、光照、抗锯齿等参数增强地形表达效果;再通过CesiumTerrainProvider创建viewer的terrainProvider对象,这样数据就加载到场景当中了。在这里说明一下,我的后端nginx和前端cesium不是一台机器,后端机器ip是192.168.1.77,开放的端口号是8802,因此我们接入的url全称是"http:\192.168.1.77::8802",也需要设置tilingScheme,我们的数据都是wgs84投影,所以设置的是GeographicTilingScheme对象;同时设置requestVertexNormals为true,因为地形瓦片是Mesh格式,在生成Mesh格式terrain数据时,也生成了每个点的法向量,这样开启光照,地形会有光照明暗阴影,效果更加自然。
最后运行程序,数据就能顺利接入cesium里了。
在这里插入图片描述
在这里插入图片描述

四、结语

从上面可以看出,整个数据发布和数据接入还是比较容易的。有些公司和开发者将瓦片数据进行打包成紧凑型格式,或者存入sqlite等数据库中,再开发数据发布服务进行数据发布,整个小文件瓦片数据打包成一个或多个大文件,这样便于迁移和权限控制;我个人觉得使用Nginx发布瓦片数据这种方式反而更纯粹、更简单;因为地形瓦片数据我已经压缩成tar.gz或者zip等压缩格式,而且数据不再更改,如果需要迁移,只需要把压缩文件迁移过去后解压,再配置Nginx参数即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#,最小生成树(MST)普里姆(Prim)算法的源代码

Vojtěch Jarnk 一、Prim算法简史 Prim算法(普里姆算法),是1930年捷克数学家算法沃伊捷赫亚尔尼克(Vojtěch Jarnk)最早设计; 1957年,由美国计算机科学家罗伯特普里姆独立实现; 19…

车载激光雷达标定白板

随着科技的不断发展,自动驾驶技术逐渐成为汽车行业的重要发展方向。激光雷达作为自动驾驶中的重要传感器,其标定和校准是保证自动驾驶系统准确感知和决策的关键环节。本文将介绍自动驾驶激光雷达标定板的相关内容,包括标定板的作用、材料选择…

stable-diffusion-webui 汉化(中文界面)

大家好,我是水滴~~ 本文主要介绍 Stable Diffusion WebUI 是如何汉化的,文章详细的介绍汉化过程,并加上配图能够清晰的展示该过程。 Stable Diffusion WebUI 官方并没有出中文界面,需要通过安装插件来汉化,下面是详细…

使用css将文字在水平线中显示

方法一&#xff1a; 1.效果图 2.html <!-- <div class"line">第三方登录</div> --> 3.css /* 让文字在水平线中显示 */.line {display: flex;flex-direction: row;color: #ccc;font-size: 18px;font-weight: bolder; }.line:before, .line:aft…

【C++】C++ 入门 — 命名空间,输入输出,函数新特性

C 1 前言2 命名空间2.1 概念引入2.2 开始使用2.3 投入应用 3 输入与输出3.1 基础知识3.2 开始使用3.3 注意局限 4 函数新特性4.1 缺省参数4.1.1 开始使用4.1.2 注意事项 4.2 函数重载4.2.1 开始使用4.2.2 如何实现 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下…

编程那么难,为什么不弄一个大众一学就会的计算机语言呢?

大家好&#xff01;今天要和大家聊聊一个有趣的想法&#xff1a; 想象一下&#xff0c;如果编程变得像拼乐高积木一样简单&#xff0c;那将是多么美妙的事情啊&#xff01;不需要费尽心思去学习繁杂的语法规则和复杂的逻辑&#xff0c;只需要将代码块像积木一样拼接起来&#x…

深入浅出 diffusion(3):pytorch 实现 diffusion 中的 U-Net

导入python包 import mathimport torch import torch.nn as nn import torch.nn.functional as F silu激活函数 class SiLU(nn.Module): # SiLU激活函数staticmethoddef forward(x):return x * torch.sigmoid(x) 归一化设置 def get_norm(norm, num_channels, num_groups)…

TensorRT英伟达官方示例解析(一)

系列文章目录 TensorRT英伟达官方示例解析&#xff08;一&#xff09; TensorRT英伟达官方示例解析&#xff08;二&#xff09; TensorRT英伟达官方示例解析&#xff08;三&#xff09; 文章目录 系列文章目录前言一、参考资料二、配置系统环境三、00-MNISTData四、01-SimpleD…

银行数据仓库体系实践(4)--数据抽取和加载

1、ETL和ELT ETL是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合&#xff1a; E&#xff1a;抽取&#xff0c;从源系统(Souce)获取数据&#xff1b; T&#xff1a;转换&#xff0c;将源系统获取的数据进行处理加工&#xff0c;比如数据格式转化、数据精…

【labVIEW】学习记录

【labVIEW】学习记录 一、简介二、安装及激活三、使用 回到目录 一、简介 labVIEW&#xff08;Laboratory Virtual Instrument Engineering Workbench&#xff09;是一款由美国国家仪器公司&#xff08;National Instruments&#xff09;开发的可视化编程环境和开发平台。LabV…

3.3 实验三:以太网链路聚合实验

HCIA-Datacom实验指导手册&#xff1a;3.3 实验三&#xff1a;以太网链路聚合实验 一、实验介绍&#xff1a;二、实验拓扑&#xff1a;三、实验目的&#xff1a;四、配置步骤&#xff1a;步骤 1 掌握使用手动模式配置链路聚合的方法步骤 2 掌握使用静态 LACP 模式配置链路聚合的…

【JavaEE进阶】 数据库连接池与MySQL企业开发规范

文章目录 🌴数据库连接池🎋数据库连接池的使用🎄MySQL企业开发规范⭕总结🌴数据库连接池 数据库连接池负责分配、管理和释放数据库连接,它允许应⽤程序重复使⽤⼀个现有的数据库连接,⽽不是再重新建⽴⼀个. 没有使⽤数据库连接池的情况:每次执⾏SQL语句,要先创建⼀…

Linux系统——函数与数组

目录 一、函数 1.函数的定义 2.使用函数 3.定义函数的方法 4.函数举例 4.1判断操作系统 4.2判断ip地址 5.查看函数列表 6.删除函数 7.函数返回值——Return 8.函数的作用范围 9.函数传参 10.函数递归 10.1病毒 10.2阶乘 10.2.1 用for循环 10.2.2函数阶乘 10.…

Python实战项目Excel拆分与合并——合并篇

在实际工作中&#xff0c;我们经常会遇到各种表格的拆分与合并的情况。如果只是少量表&#xff0c;手动操作还算可行&#xff0c;但是如果是几十上百张表&#xff0c;最好使用Python编程进行自动化处理。下面介绍两种拆分案例场景&#xff0c;如何用Pandas实现Excel文件的合并。…

ELK日志解决方案

ELK日志解决方案 ELK套件日志系统应该是Elasticsearch使用最广泛的场景之一了&#xff0c;Elasticsearch支持海量数据的存储和查询&#xff0c;特别适合日志搜索场景。广泛使用的ELK套件(Elasticsearch、Logstash、Kibana)是日志系统最经典的案例&#xff0c;使用Logstash和Be…

Scikit-learn (sklearn)速通 -【莫凡Python学习笔记】

视频教程链接&#xff1a;【莫烦Python】Scikit-learn (sklearn) 优雅地学会机器学习 视频教程代码 scikit-learn官网 莫烦官网学习链接 本人matplotlib、numpy、pandas笔记 1 为什么学习 Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一. Sk…

burp靶场--WebSockets安全漏洞

burp靶场–WebSockets安全漏洞 https://portswigger.net/web-security/websockets/what-are-websockets ### 什么是 WebSocket&#xff1f; WebSocket是一种通过 HTTP 发起的双向、全双工通信协议。它们通常在现代 Web 应用程序中用于流数据和其他异步流量。 在本节中&#x…

ChatGPT 官方中文页面上线

根据页面显示&#xff0c;OpenAI 现已推出 ChatGPT 的多语言功能 Alpha 版测试&#xff0c;允许用户选择不同语言的界面进行交互。 如下图所示&#xff0c;ChatGPT 会检测系统当前所使用的语言&#xff0c;并提示用户进行语言切换。 用户也可通过设置页面选择其他语言。目前&a…

Linux之系统安全与应用

Linux系统提供了多种机制来确保用户账号的正当&#xff0c;安全使用。 系统安全措施 一. 清理系统账号 1.1 将用户设置为无法登录 Linux系统中除手动创建的各种账号外&#xff0c;还包括随系统或程序安装过程而生成的其他大量账号。除了超级用户root以外&#xff0c;其他的…

免费开源的微信小程序源码、小游戏源码精选70套!

微信小程序已经成为我们日常的一部分了&#xff0c;也基本是每个程序员都会涉及的内容&#xff0c;今天给大家分享从网络收集的70个小程序源码。其中这些源码包含&#xff1a;小游戏到商城小程序&#xff0c;再到实用的工具小程序&#xff0c;以及那些令人惊叹的防各大站点的小…