Cesium加載各類數據總結


接觸到的加載數據類型:源地圖、shp、Geojson、png、wms、地形底圖

一.Cesium加載各類底圖

#此類加載的本質在於 new Cesium.ImageryProvider()

Api defination:“Provides imagery to be displayed on the surface of an ellipsoid. This type describes an interface and is not intended to be instantiated directly.”

imagerProvider不能直接實例化,必須使用具體的接口

var viewer = new Cesium.Viewer("cesiumContainer",
{imageryProvider:new Cesium.加載數據方式{
  url:加載數據類型}),
 其他控件設置
});
二.官方的ImageryProvider詳細說明:
Cesium內置以下ImageryProvider:

 
三、完成的Base加載封裝
用的最多的主要是UrlTemplateImageryLayer,url模版的影像加載,加載如google這類商業底圖;SingleTileImageryProvider,單一瓦片影像加載,如單張圖片;
TileCoordinatesImageryProvider,瓦片坐標影像加載,加載經緯度網格圖;WebMapServiceImageryProvider,WMS格式服務影像加載,也就是加載本地服務器發布的影像圖。
加載3dTiles等3D格式數據,不在本文梳理,另外總結。
//1.加載url模版的地圖影像UrltemplateImageryProvider,如google/高德/百度等
  addGoogleImagery(){
    //UrltemplateImageryProvider自定義加載影像方式
    return new Cesium.UrlTemplateImageryProvider({
      url:"http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali"
    }) 
  }
//3.加載圖片 圖片地址及西南東北范圍(單位度),圖片也可以是其他形狀(修改rectangle)
  addPicImagery(picurl,west,south,east,north){
    let opts = {
      url:picurl,
      rectangle:Cesium.Rectangle.fromDegrees(west,south,east,north)
    };
    return new Cesium.SingleTileImageryProvider(opts)
  }
//4.加載json格式
  //#直接加載
  addJsonImagery(jsonurl){
    let viewer = this._viewer;
    //一種方式
    viewer.dataSources.add(Cesium.GeoJsonDataSource.load(jsonurl,{
      stroke:Cesium.Color.RED,
      strokeWidth:5,
      fill:Cesium.Color.RED.withAlpha(0.1),
      //fill:new Cesium.Color(0, 0, 0, 0)//設置純透明后,必須點擊到polygon邊界才顯示提示框
    })); 
    //另一種方式
    // let promise = Cesium.GeoJsonDataSource.load(jsonurl);
    // promise.then(function(jsondata){
    //   viewer.dataSources.add(jsondata);
    //   let entities =dataSources.entities.values;
    //   for (let entity of entities) {
    //     entity.polygon.fill=false;//設置無填充后,必須點擊到polygon邊界才顯示提示框
    //     entity.polygon.outline = true;
    //     entity.polygon.outlineColor = Cesium.Color.RED;
    //     entity.polygon.width=5//無效,polygon.width不能超過1        
    //   }
    // })
  }
//5.加載kml格式
  AddKmlData(url){
    let viewer = this._viewer;
    var promiseKml = new Cesium.KmlDataSource.load(url, {
      clampToGround:true
    });
    promiseKml.then(kmlData => {
      viewer.dataSources.add(kmlData);
      let entities = kmlData.entities.values;
      for (let entity of entities) {
        entity.polyline.show = true;
        entity.polyline.material = new Cesium.PolylineGlowMaterialProperty({
          glowPower:0.5,
          color:Cesium.Color.BLUE
        })        
      }
    });
  }
//6.發布的wms地圖服務
  //使用Geoserver發布,網上有很多教程如何使用,使用接口WebMapServiceImageryProvider
  addWmsImagery(wmsurl,wmslayer){
    let viewer = this._viewer;
    let wmsImage = new Cesium.WebMapServiceImageryProvider({
      url:wmsurl("http://127.0.0.1:8083/geoserver/cesium/wms",
      layers : wmslayer(cesium:圖層),
      fill : false,
      parameters : {
        service : "WMS",
        format : "image/png",
        transparent : true
      }
    });
    viewer.imageryLayers.addImageryProvider(wmsImage);
    //viewer.imageryLayers.add(wmsImage);
  }
//7.加載tiff地形,首先地形文件一定要有坐標,坐標系是非常重要的,接口使用WebMapServiceImageryProvider,使用geoserver發布
  addTiffImagery(tiffurl,tifflayer){
    let viewer = this._viewer;
    let tiffProvider = new Cesium.WebMapServiceImageryProvider({
      url:tiffurl,
      layers: tifflayer,
      parameters:{
        service:"WMS",
        format:"image/png",
        transparent:true   
      }
    });
    viewer.imageryLayers.addImageryProvider(tiffProvider);
  }
//8.加載BingMaps,url好像已經失效
  addBingMaps(){
    return new Cesium.BingMapsImageryProvider({
      url : 'https://dev.virtualearth.net',
      mapStyle: Cesium.BingMapsStyle.ROAD
    })
  }
//9.加載ArcGIS World Street Maps
  addArcGISMap(){
    return new Cesium.ArcGisMapServerImageryProvider({
      url : 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer'
    });
  }
//10.加載OpenStreetMaps 
  addOpenStreetMap(){
    return new Cesium.Cesium.createOpenStreetMapImageryProvider({
      url : 'https://stamen-tiles.a.ssl.fastly.net/watercolor/',
      fileExtension: 'jpg',
      credit: 'Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA.'
    });
  }
//11.加載Tile Coordinates 坐標網格
  addTileCoord(){
    return new Cesium.TileCoordinatesImageryProvider();
  }
轉載:別人翻譯的影像圖層教程 https://www.jianshu.com/p/98d4c0b2c618
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM