美文网首页开源GIS
如何搭建Cesium离线切片地图服务器

如何搭建Cesium离线切片地图服务器

作者: 小恩娜 | 来源:发表于2019-04-12 15:40 被阅读16次

    地图数据

    离线地图服务器的切片有以下几种:

    高德卫星地图 ,下载切片只能下载到第8级,有文字标注;

    天地图墨卡托版,下载切片国内可以下载到18级,国外大概到12级左右;

    ArcGIS瓦片地图 ,可以下载0-16级,无文字标注;

    Google卫星切片地图 可以加载0-19级,有文字标注;

    Google地形切片地图 可以加载0-19级,无文字标注,无山脉起伏,有山体等高线,城市区域显示为等高线;

    ArcGIS离线动态地图切片服务 ,可以对数据样式进行控制,成本较高;

    GeoServer 发布地图服务数据,可以对数据样式进行控制,开源免费。

    我使用的是Google地图瓦片可以加载0-5级,有文字标注。

    搭建地图服务器

    1、上述数据中ArcGIS数据发布出来即可使用。

    2、使用Tomcat搭建虚拟路径

    server.xml 中<host></host>节点中<Context docBase="D:\瓦片" path="/map/" reloadable="true"/>,请求地址为http://localhost:8080/map

    tomcat 的web.xml 配置文件中有一个属性值 listing (Directory Listing) ,这个属性值是控制是否展示虚拟目录;默认配置下,改值是 false,即不对外展示文件虚拟目录(这么做是为了安全考虑);如果想直接展示虚拟目录,可以设置该属性的值为 true,然后重启tomcat

    加载离线谷歌瓦片地图数据

        var viewer = new Cesium.Viewer('cesiumContainer',{

                //需要进行可视化的数据源的集合

                animation: false, //是否显示动画控件

                shouldAnimate : true,

                homeButton: false, //是否显示Home按钮

                fullscreenButton: false, //是否显示全屏按钮

                baseLayerPicker: false , //是否显示图层选择控件

                geocoder: false, //是否显示地名查找控件

                timeline: false, //是否显示时间线控件

                sceneModePicker: false, //是否显示投影方式控件

                navigationHelpButton: false, //是否显示帮助信息控件

                infoBox: false, //是否显示点击要素之后显示的信息

                requestRenderMode: true, //启用请求渲染模式

                scene3DOnly: false, //每个几何实例将只能以3D渲染以节省GPU内存

                sceneMode: 3, //初始场景模式 1 2D模式 2 2D循环模式 3 3D模式  Cesium.SceneMode

                //fullscreenElement: document.body, //全屏时渲染的HTML元素 暂时没发现用处

                  imageryProvider:new Cesium.UrlTemplateImageryProvider({ 

                  url : 'http://localhost:8080/map//{z}/{x}/{y}.png',

                  fileExtension:'png' })

    });

    var layers = viewer.imageryLayers; 

    viewer._cesiumWidget._creditContainer.style.display="none";  //屏蔽loge广告

    这里的x,y,z分别对应着横坐标,纵坐标和放大等级,我们可以直接拿来使用。而在Cesium中实践一下就可以发现,如果使用createtileMapService这个函数,它必须使用wmts服务,或者对应标准的瓦片来实现,而我们的并不是一个经典的瓦片服务链接,所以我们得自己添加{x},{y},{z}来手动添加。

    效果展示

    相关文章

      网友评论

        本文标题:如何搭建Cesium离线切片地图服务器

        本文链接:https://www.haomeiwen.com/subject/lmmcwqtx.html