又来了,这次带来的是台东县绿岛倾斜摄影数据
上篇文章给大家介绍了兰屿岛倾斜摄影3DTiles数据,对台东县兰屿岛的地理位置、战略地位以及数据信息进行了详细介绍;同样作为台湾东南门户,兰屿岛正北方60公里之外的另一个岛-绿岛,与兰屿岛共同成了台湾东南区域的第一屏障。绿岛和兰屿岛都属于台东县下属的两个乡,分别是绿岛乡和兰屿乡,兰屿岛距离台东县有90公里,而绿岛距离台湾本岛台东县,仅有33公里,战略位置更为重要。这次联合利剑-2024B演习,其中一块演习区域即在绿岛外海。
一、地理位置
绿岛原名火烧岛,亦称鸡心屿,南北长约4公里,东西宽约3公里,海岸线约20千米,面积约15平方公里,为台湾省第四大外岛,仅次于澎湖、兰屿、渔翁岛。
岛内最高点为火烧山,高度280米,东南临海处多为断崖,从卫星影像上俯瞰绿岛,见下图。
二、数据信息
绿岛虽然面积不大,只有15平方公里,原始数据大小有70GB,转成3DTiles格式后,数据量高达100GB,数据精度相当高,从文章后面的显示效果图就可以看出。
有点遗憾的是,数据并非十全十美,绿岛最高峰火烧山有部分数据缺失,不过范围很小。
三、数据展示
在上篇文章已经介绍过数据发布方式,3DTiles数据都是静态文件,使用Nginx直接静态代理即可,无需部署发布程序。将数据使用Nginx进行代理发布后,加载到CesiumJS上进行可视化展示。这里分享一个nginx.conf里Server样例。
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:/Data/GreenIsland-3DTILES/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
在前端使用CesiumJS组件,创建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;
这里我使用的CesiumJS是1.121.1版本,底图是cesium ion中的默认ESRI卫星影像瓦片,数据加载显示效果见下面截图:
绿岛曾是一座监狱,作为政治犯的流放地,因关押过著名作家柏杨等政治犯而广为人知。监狱后来关闭,其内部对外向公众开放,建有"白色恐怖绿岛纪念园区",下图为纪念园区倾斜摄影效果。
四、数据
该数据后期会向大家提供样例数据,敬请期待!