Cesium开发及离线加载倾斜摄影

前言

    前段时间接手了一个任务,让我研究一下开源的地图引擎,可以加载倾斜摄影数据,展示3D效果,实现地图应该有的大部分功能~好吧,我听到时真是一头雾水。WTF?地图引擎?3D模型?倾斜摄影?这都是什么鬼…但是没办法,既然已经安排下来了就得去做,然后我就开始了疯狂的百度之旅。
    以下记录一下在这次旅途中发现的优质文档和我自己觉得应该记录下来的笔记,以备下次查阅。

一、cesium

在众多的开源地图中,我最终选择了Cesium,当然了还有一些其他的,比如openlayer等,但是我看到cesium的文档还是蛮丰富的,还确定了能加在倾斜摄影(个人理解:无人机拍摄的数据展示出3d效果,无人机的原始数据一般为osjb),就确定了它。
在cesium中文网中有这么一段话比我说的可好多了:
Cesium开发及离线加载倾斜摄影_第1张图片

Cesium入门

这里介绍一下cesium的入门知识点。
大家都知道一般地图的基本功能比如描点、画线、画面、显示隐藏控件等操作。经过这段时间的百度。列举一下我觉得还不错的一些网页。
cesium中文网
cesium 学习基础绘制
cesium教程

上面列举的页面已经可以完成一些功能点的开发了,这里有一点说明,cesium不是只能放在node server中,你完全可以放在tomcat中去运行。

Cesium离线部署

这篇文章非常详细的介绍了如何在离线的情况下使用cesium,就是通过geoserver,用它加载离线地图。
geoserver+cesium创建离线环境下的web三维球

这里本来想添加一个geoserver的安装部署发布地图整个过程的网页的,好吧,暂时没找到,下次自己写一个再放在这里把。你们需要就去网上仔细找一下,是有的,我当时都找到了。

在geoserver里发布好了离线地图之后,在layer preview的列表里找到自己需要的地图,复制name的值。将geoserver+cesium创建离线环境下的web三维球中介绍的下面这段话的内容的laysers改为复制的name值即可。

var url='http://localhost:8080/geoserver/wms'; //Geoserver URL 
var viewer = new Cesium.Viewer('cesiumContainer',{
    imageryProvider:new Cesium.WebMapServiceImageryProvider({ 
        url : url,       
        layers: 'nurc:Arc_Sample'
    }),
    baseLayerPicker:false
});

地图下载

这篇文章介绍了一些免费的地图下载器,大家感兴趣可以看一下。
地图下载器
我这里推荐使用太乐地图下载器。因为亲测有效。有一篇介绍如何使用的文章。还涉及到如何使用geoserver发布离线地图,补充了上面介绍的不足。网页如下。
太乐地图下载器

数据格式转换

倾斜摄影技术数据的标准格式为osjb,但是cesium不能加载osjb的数据,因此我们需要将osjb转为cesium需要的3dtil格式。
cesuim加载倾斜摄影OSGB三维数据完整过程
osgb(倾斜摄影数据)转换为3dtitle工具分享

加载倾斜摄影

数据格式转换后,会在data文件夹同一级生成一个tileset.json的文件,在cesium中通过如下方式调用即可。

var tileset = new Cesium.Cesium3DTileset({
     url: './localMap/sampledata/3dtitle_test/tileset.json'
 });
 viewerObj.scene.primitives.add(tileset);
 viewerObj.zoomTo(tileset);

结束语

研究一个新东西还真是不容易,最近感觉都快把百度给翻烂了,做了各种尝试,下了很多资料,软件,不过总算是做出来了,在这里留下一个记录,万一以后又要来弄这玩意儿方便回忆,也方便大家伙查阅,毕竟很多网上的博客都是说的一方面东西,有人会说,你怎么都是留下的链接呢?emmm,是因为我实在没有那么多时间去写博客了,这里只是留一个记录,避免到时候有些网站会失效,我会抽时间将一些重要的步骤再重新记录下来的。
当然了,也谢谢上面链接的各位大佬的技术支持。
最后插一嘴。有了解bigmap地图的吗,你们觉得怎么样?

你可能感兴趣的:(java,html,js,jquery)