cesium-影像图&地形图&3dtiles模型

这篇具有很好参考价值的文章主要介绍了cesium-影像图&地形图&3dtiles模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • ImageryLayer类:

Cesium.ImageryLayer类用于表示Cesium中的影像图层,它就相当于皮毛、衣服,将数据源包裹在内,它需要数据源(imageryProvider)为其提供内在丰富的地理空间信息和属性信息,同时,通过该类还能设置影像图层相关属性。

常用属性如下:

  1. name(名称),

  1. alpha(透明度)

  1. brightness(亮度)

  1. contrast(对比度)

  1. gamma(伽马)

  1. hue(色调)

  1. saturation(饱和度)

  1. show(显示)

属性举例:

var layers = viewer.scene.imageryLayers;
layers.get(0).alpha = 0.1;
layers.get(0).brightness = 2.0;
layers.get(0).show = false;

常用方法如下:

http://cesium.xin/cesium/cn/Documentation1.62/ImageryLayerCollection.html?classFilter=ImageryLayer

layers.add(layer, index) //在集合中添加一个图层
layers.addImageryProvider(imageryProvider, index) //使用ImageryProvider创建一个新层将其添加到集合中
layers.contains(layer) //检查集合是否包含给定的图层
layers.get(index)  //从集合中按索引获取图层
layers.indexOf(layer) //确定集合中给定图层的索引
layers.lower(layer) ///在集合中的一个位置上降低一层
layers.lowerToBottom(layer) //将图层降低到集合的底部
layers.raise(layer) //在集合中的一个位置上提升一层
layers.raiseToTop(layer) //将一个图层提升到集合的顶部
layers.remove(layer, destroy) //从该集合中删除一个图层(如果存在)
layers.removeAll(destroy) //从该集合中删除所有图层

方法举例:

add:

//以指定位置添加单张图片为例
var imgProvider = new Cesium.SingleTileImageryProvider({
    url : './testimg.jpg',
    rectangle : Cesium.Rectangle.fromDegrees(-70.0, 28.0, -67.0, 29.75)
});
var layer = new Cesium.ImageryLayer(imgProvider);
//index越大显示层级越高
var firstLayer = layers.add(layer,1);

addImageryProvider:

var secondLayer = layers.addImageryProvider(new Cesium.SingleTileImageryProvider({
    url : './testimg.jpg',
    rectangle : Cesium.Rectangle.fromDegrees(-70.0, 28.0, -67.0, 29.75)
}),2);

contains:

console.log(layers.contains(firstLayer));  //true
  • ImageryProvider类:

Cesium.ImageryProvider类及其子类封装了加载各种影像图层的方法,该类类是抽象类、基类或者可将其理解为接口,它不能被直接实例化提供要显示在椭球表面上的图像,我们可以把ImageryProvider看作是影像图层的数据源(包裹在ImageryLayer类内部),我们想使用哪种影像图层数据或服务就用对应的ImageryProvider子类去加载,目前Cesium提供了以下15种ImageryProvider:

  1. ArcGisMapServerImageryProvider 加载ArcGIS online和Server上的数据

  1. BingMapsImageryProvider Bing地图影像

  1. OpenStreetMapImageryProvider 加载OpenStreetMap

  1. TileMapServiceImageryProvider

  1. GoogleEarthEnterpriseImageryProvider

  1. GoogleEarthEnterpriseMapsProvider

  1. GridImageryProvider 展示内部渲染网格划分情况

  1. IonImageryProvider

  1. MapboxImageryProvider

  1. MapboxStyleImageryProvider

  1. SingleTileImageryProvider 单张图片的影像服务,适合离线数据或对影像数据要求并不高的场景下

  1. TileCoordinatesImageryProvider 展示内部渲染网格瓦片划分情况,包括网格瓦片等级、X、Y序号,便于调试地形和图像渲染问题。当然也可以和GridImageryProvider一起叠加使用。

  1. UrlTemplateImageryProvider 指定url的format模版,方便用户实现自己的Provider.比如国内的高德,腾讯等影像服务,url都是一个固定的规范,都可以通过该Provider轻松实现。

  1. WebMapServiceImageryProvider 服务WMTS1.0.0规范的影像服务,都可以通过该类实现,比如国内的天地图。

  1. WebMapTileServiceImageryProvider

参考博文:https://blog.csdn.net/m0_37755995/article/details/123525107

举例两种,加载天地图和瓦片地图:

//定义viewer时加载天地图图层
var viewer = new Cesium.Viewer('container',{
    imageryProvider:new Cesium.WebMapTileServiceImageryProvider({
        url: "http://t0.tianditu.gov.cn/vec_w/wmts?tk=你的天地图key",
        layer: "vec",
        style: "default",
        tileMatrixSetID: "w",
        format: "tiles",
        maximumLevel: 18,
    })
});
//也可以定义完再加载(适用于需要多种地图切换的场景)
//获取全部图层
var layers = viewer.scene.imageryLayers;
//添加瓦片图层
var localLayer = layers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({
    url:"http://localhost:8083/service/v1/tile?map=googleimage&x={x}&y={y}&z={z}",
}));
  • TerrainProvider类

Cesium提供了TerrainProvider基类,该Provider负责每一个Tile对应的地形数据的构建,定义了一套地形Provider需要实现的接口和规范,terrainProvider不像上一讲介绍的影像图层(有专门的ImageryLayer)那样,Cesium中的地形类是直接通过不同的terrainProvider控制的,然后把某一个实例化的terrainProvider赋值给Viewer.terrainProvider来控制地形数据的显隐。所以Cesium中的地形图层只能有一个。基于此类,cesium封装了5个现成的继承类操作地形数据:

  1. ArcGISTiledElevationTerrainProvider

  1. EllipsoidTerrainProvider

  1. CesiumTerrainProvider

  1. VRTheWorldTerrainProvider

  1. GoogleEarthEnterpriseTerrainProvider

举例:

let terrainProvider = new Cesium.CesiumTerrainProvider({
    url:"http://localhost:8011/mapdata/terrain", //本地地形服务
    visible: true
});
viewer.terrainProvider = terrainProvider;
  • 3dtiles模型

cesium原生方式:

var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
    url : this.$url.CITY_MODEL_URL + "/beijing/tileset.json",
    skipLevelOfDetail : true, //跳级加载图层,避免某些图层不加载
}));
//删除
viewer.scene.primitives.remove(tileset);

mars3d方式:(支持原生cesium的全部属性)文章来源地址https://www.toymoban.com/news/detail-455727.html

var bj = {
    "type": "3dtiles",
    "url": this.$url.CITY_MODEL_URL + "/beijing/tileset.json",
    "visible":true,
    "flyTo":true,
    "skipLevelOfDetail" : true,
    "center": { 
        "y": 39.75, "x": 116.33, "z": 1000, "heading": 0.06, "pitch": -30, "roll": 0 
    }
};
this.cityModelLayerBj = mars3d.layer.createLayer(bj,viewer);

//设置显隐的方式
this.cityModelLayerBj.setVisible(true);
this.cityModelLayerBj.setVisible(false);
//删除
this.cityModelLayerBj.remove();

到了这里,关于cesium-影像图&地形图&3dtiles模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用ArcGIS制作三维地形图

    ArcGIS作为专业的GIS软件,不仅可以制作二维地图,制作三维地图也是不在话下,通常我们使用ArcScene来制作三维地图,这里为大家介绍一下制作三维地图的方法,希望能对你有所帮助。 将准备好的矩形面、矩形线和高程DEM数据加载到ArcScene内,效果如下图所示。 加载的数据

    2024年02月09日
    浏览(51)
  • Matlab绘制中国区域DEM地形图

    要绘制中国区域的DEM地形图,需要经过以下详细步骤。在本例中,将使用MATLAB的Mapping Toolbox来处理DEM数据和绘制地形图,并选择一种美观的配色方案。 步骤1:准备DEM数据 首先,您需要准备一个包含中国区域DEM数据的文件。通常,DEM数据以高程值的矩阵形式存储。确保数据的

    2024年02月12日
    浏览(52)
  • cesium加载三维模型3dtiles

    目的:为避免跨域 输入cmd命令 python3 -m http.server 5500 http://127.0.0.1:5500/data/mars3d-max-shihua-3dtiles-master/tileset.json http://127.0.0.1:5500/cesium/cesium%E5%8A%A0%E8%BD%BD3dtile2.html

    2024年02月13日
    浏览(89)
  • Cesium clipping planes 3dtiles模型剖切 3dtiles模型贴地 vue代码

    使用Cesium的clippingPlanes实现对3dtiles模型的剖切效果。 相关官方文档地址:ClippingPlaneCollection、Cesium3DTileset 官方Demo地址:3D Tiles Clipping Planes 官方介绍:Cesium Feature Highlight: Clipping Planes 函数用于加载和显示3D Tiles模型以及剪切平面clipping planes。 在函数内部,首先创建了一个 Cesium.P

    2024年04月23日
    浏览(36)
  • 【Cesium】调整3dtiles模型的光照

    最近有个项目需要把掘进车放到巷道里面,加载出来的效果一片漆黑,看不清模型细节。  由于Cesium中材质没有自发光的设置,所以只能设置光源。 在网上查了一些代码,Cesium的光照效果的设置是通过webgl修改白膜的材质来实现的,由于巷道本身有贴图材质,用该方法实现的

    2024年02月11日
    浏览(52)
  • Cesium地图上加载3DTiles模型

    1,使用Blender创建模型: 官网下载Blender:https://www.blender.org/,在Github上下载Building Tools插件,通过编辑-偏好设置-插件-安装,导入压缩包使用,这个可以自己创建小房子,文件-导出为obj格式 2,将.obj转成3dtiles格式: 1,第一种方法通过加载本地文件展示: 1,github下载ObjTo3

    2024年02月03日
    浏览(46)
  • Cesium:3DTiles三维模型高度调整

            地形遮挡属性          如下两张图所示,输入高度值,根据需要调整模型高度。例如:针对近地面的管线数据,可能有一部分是埋在地下的,那么,如果开启了地形遮挡属性(即:设置为true,默认是false),那么,在进行场景渲染加载模型切片时,就会进行深度测

    2024年02月11日
    浏览(92)
  • Cesium加载3Dtiles模型-大疆智图

    Cesium加载3Dtiles模型步骤: (一)如果您使用的是大疆智图,则该软件可以直接输出3Dtiles格式(B3DM切片)的数据,如图所示:   (二)如果您使用的是CC(Smart3D),该软件可以输出OSGB格式的数据,我们可以借助: 1.osg2cesiumApp v1.3软件来将我们的OSGB倾斜摄影数据转换成3Dtil

    2024年02月11日
    浏览(43)
  • cesium——加载3DTiles,模型的选中,高亮效果

    3DTiles是一种用于组织和传输大规模地理数据的规范,旨在提供一种高效、可扩展的方式来加载和显示复杂的3D模型。它革新了地理数据可视化领域,为创建逼真的三维地图提供了新的可能性。 3DTiles采用了一种层次化的数据结构,将地理信息按照空间范围划分成小块,类似于

    2024年02月07日
    浏览(59)
  • 解决cesium中3dtiles模型随视角移动

    我们在使用cesium的时候有时会遇到一个问题就是模型导入之后,模型没有固定住会随着视角的变化而移动,研究发现模型在地底下。我认为是建模的问题有可能是建模软件使用的坐标不是wgs84导致高程不一的原因,但我没试过。 解决方案是:1.打开深度检测 2.手动把模型提上

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包