台湾高雄三维倾斜摄影模型3DTiles样例数据介绍

embedded/2024/10/9 9:23:34/

台湾一直是国内研究的重点方向,最主要的原因是祖国统一大业尚未完成,加上当前国际局势比较复杂,台湾及周边有众多不稳定因素,美国、日本等国家与台湾地区当局一直保持着紧密关系,成为祖国统一进程的一大阻碍。在国内众多研究台湾的方向中,台湾地理空间环境研究一直是热点方向,这也让我的产品研发方向有一定的侧重点,一方面谷歌等全球级倾斜摄影数据转换成3DTiles和OSGB格式,另一方面,收集转换台湾地区数据,包括地形、建筑模型以及倾斜摄影数据,能够加载到我们常用的GIS或三维可视化平台上来。台湾的地形和建筑模型数据都有介绍,之前发布过台湾10米DEM数据和2024年全台湾建筑模型数据,对于台湾的三维倾斜摄影模型,我发布了3DTiles转换工具 V1.1版以及OSGB V2.0版,除了谷歌地球上台北、台中、桃园这三个地区的数据外,台湾其他地区的倾斜摄影都没有相关介绍。

一、开发背景

之前一直未向大家介绍台湾其他地区的三维倾斜摄影模型数据,主要是谷歌三维倾斜摄影转换成3DTiles和OSGB研发工作比较复杂,产品迭代持续了比较长的时间,针对台湾其他地区三维倾斜摄影模型数据转换工作没有开展。上次发布了谷歌三维倾斜摄影OSGB数据V2.0版本后,便紧锣密鼓开始进行这项工作的预研与研发。台湾倾斜摄影数据主要都是台湾官方测绘部门进行生产及发布使用的,出于数据保密的需要,官方发布时采用了自定义二进制数据,其显示也并非Cesium等常用三维GIS平台。因此数据既非我们常用的3DTiles、OSGB等格式,也无法在Cesium和OsgEarth上加载使用。我经过两个月的大量预研与研发,在产品研发截止日期前,顺利解决了诸多技术难题,将台湾官方公开的三维倾斜摄影数据转成了我们常用的3DTiles格式,并成功加载到Cesium上显示。

二、数据范围

目前台湾官方公开的三维倾斜摄影数据覆盖地区约有100平方公里,包括新竹、台中、台南、高雄、台东、花莲等县市,比较遗憾,未有覆盖整个县市的数据发布,主要以样例数据为主,覆盖面积大小不等,有的覆盖整个岛屿,比如兰屿岛,做到了全岛覆盖,大约有50平方公里,有的只有2平方公里,总体而言,公开的数据是越来越多,覆盖区域也是越来越大。

三、数据介绍

这次给大家介绍的是台湾高雄青埔车站及周边区域的3DTiles数据。数据分辨率能够达到3cm,比谷歌地球的三维倾斜摄影数据还要高,主要覆盖台湾高雄青埔车站和周边区域,面积有2平方公里,面积虽小,但是数据量高达29.5GB。
在这里插入图片描述

四、数据使用

前面文章中已经介绍过,3DTiles数据都是静态文件,使用Nginx直接静态代理即可,无需部署发布程序,这里分享一个nginx.conf里Server的样例,大家可以直接粘贴过去,修改root对应的路径。

server{listen       8804;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:/GXQP-3DTILES/;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

同时在前端Cesium上接入也比较容易,创建Cesium3DTileset对象,加入到pirmitives,同时需要注意的是,depthTestAgainstTerrain要设置成false,否则会有地形遮挡显示问题。下面是示例代码:

let tileset = await Cesium.Cesium3DTileset.fromUrl("http://localhost:8804/tileset.json");viewer.scene.primitives.add(tileset);viewer.scene.globe.depthTestAgainstTerrain = false;

我将数据使用Nginx进行代理发布后,加载到CesiumJS上进行可视化展示,Cesium是1.121.1版本,底图是ESRI卫星影像瓦片,显示效果请看下面截图。
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

五、结语

受限于官方数据来源,目前数据覆盖区域范围比较小,还没形成比较大的使用价值,象征意义大于使用价值,但是我已经开发好了转换工具,待官方发布新的数据,我会第一时间进行转换,同时也会对转换工具进行更新迭代。


http://www.ppmy.cn/embedded/124432.html

相关文章

windows C++-创建图像处理的异步消息(一)

网络会基于图像特征确定要对图像执行的操作。 此示例使用数据流模型通过网络路由图像。 在数据流模型中,程序的独立组件之间通过发送消息进行通信。 某个组件收到消息时,它可以执行某个操作,然后将该操作的结果传递给另一个组件。 相比之下&a…

二进制求和

优质博文:IT-BLOG-CN 题目 给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。 示例 1: 输入:a "11", b "1" 输出:"100" 示例 2: 输入:a "1010"…

Linux高级编程_30_管道

文章目录 管道作用:分类: 前置知识:复制文件描述符dupdup2 【推荐使用】 无名管道概述: pipe函数实现: ps -A | grep bash 有名管道:实现有名管道的聊天无名管道与有名管道的区别? 管道 作用:…

STL之list篇(下)(从底层分析实现list容器,逐步剥开list的外表)

文章目录 前言一、list的数据结构和类实现需求1.1 数据结构1.2 list类实现需求 二、list迭代器的实现2.1 为什么list不能直接把迭代器当作指针一样使用?2.2 list迭代器的框架设计2.3 *和-> 操作符的重载2.4 和-- 操作符的重载2.5 !和 操作符的重载 三、 list的函…

Linux 安全日志分析及方法

Linux日志分析 0x00 前言 Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。 本文简介一下Linux系统日志及日志分析技巧。 0x01 日志简介 日志默认存放位置:/var/log/ 查看日志配置情…

SparkCore与FlinkCore的区别有哪些

1.架构理念方面: Spark Core: Spark 基于 RDD(弹性分布式数据集)的概念构建。RDD 是一个不可变的、分布式的对象集合,它可以在集群中的多个节点上进行并行计算。例如,在处理大规模的日志文件时,Spark 可以将日志文件…

【Blender Python】3.使用For循环和列表批量创建立方体

概述 本篇上接第一篇,继续总结Blender Python的使用细节。 控制参数 第一篇我们通过复制操作代码,实现的立方体添加代码如下: import bpybpy.ops.mesh.primitive_cube_add(size2, enter_editmodeFalse, alignWORLD, location(0, 5, 0), s…

深入挖掘C++中的特性之一 — 多态

目录 1.多态的概念 2.多态的定义及其实现 1.虚函数 2.虚函数的重写/覆盖 3.实现多态的必要条件 4.多态的代码呈现 5.来一道小题,深入理解一下多态 3.虚函数重写的一些其他问题 1.协变 2.析构函数的重写 4.override和final关键字 5.重载/重写/隐藏的对比&…