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

台湾一直是国内研究的重点方向,最主要的原因是祖国统一大业尚未完成,加上当前国际局势比较复杂,台湾及周边有众多不稳定因素,美国、日本等国家与台湾地区当局一直保持着紧密关系,成为祖国统一进程的一大阻碍。在国内众多研究台湾的方向中,台湾地理空间环境研究一直是热点方向,这也让我的产品研发方向有一定的侧重点,一方面谷歌等全球级倾斜摄影数据转换成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对应的路径。

xml 复制代码
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,否则会有地形遮挡显示问题。下面是示例代码:

javascript 复制代码
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卫星影像瓦片,显示效果请看下面截图。



五、结语

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

相关推荐
美酒没故事°18 小时前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
云烟成雨TD18 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
AI攻城狮18 小时前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟18 小时前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd12318 小时前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡18 小时前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate19 小时前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价
财迅通Ai19 小时前
6000万吨产能承压 卫星化学迎来战略窗口期
大数据·人工智能·物联网·卫星化学
liliangcsdn19 小时前
Agent Memory智能体记忆系统的示例分析
数据库·人工智能·全文检索
GISer_Jing19 小时前
Page-agent MCP结构
前端·人工智能