ArcGIS 發布高程服務。10.4


ArcGIS 發布高程必須是10.21以上,我用10.4。

前端用ArcGIS For API 4.x。

ARCGIS很早之前有CS版本的ArcScene,可查看高程TIF文件,但機制和BS的完全不同。

BS顯示高程,前端是用ArcGIS的JS在Canvas上畫的三維圖形,后端提供的是瓦片高程數據。

1、首先要有DEM文件,DEM只能是單波段TIF文件,要從里屬性查看。

2、發布高程服務。

首先,ArcGIS強制要求此TIF必須是WKID為3857的坐標系,如不是,需要柵格工具轉換。

然后,發布ImageService服務,要求必須切片,切必須是ArcGIS Online/Bing/Google方案。

最后,Cacheing-Advance Settings里,選擇切片必須是LERC格式。

 

 3、發布后,使用JS代碼驗證。

ArcGIS使用Elevation Layer圖層,把此圖層,賦予map.ground里即可。默認有個高程服務地址,可用來測試。詳情參看官方API。

https://developers.arcgis.com/javascript/latest/sample-code/scene-elevationinfo/index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    />
    <title>Intro to SceneView - Create a 3D map - 4.12</title>
    <style>
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>

    <link
      rel="stylesheet"
      href="https://js.arcgis.com/4.12/esri/themes/light/main.css"
    />
    <script src="https://js.arcgis.com/4.12/"></script>

    <script>
      var G={};
      require(["esri/Map",
			   "esri/views/SceneView",
			   "esri/layers/ElevationLayer",
			   "esri/Camera",
			   "esri/layers/ImageryLayer"], 
			   function(Map,
						SceneView,
						ElevationLayer,
						Camera,
						ImageryLayer) {
        var map = new Map({
          basemap: "streets",
          //ground: "world-elevation" 
        }); 
        G.map=map;
		var elevationLayer = new ElevationLayer();
        //elevationLayer.url = "https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer"; 
		var evaurl="http://xxx/ImageServer"
		elevationLayer.url =evaurl;
        map.ground.layers.add(elevationLayer);

        var view = new SceneView({
          container: "viewDiv",
          map: map,
          alphaCompositingEnabled: true,
          environment: { 
            starsEnabled: true,
            atmosphereEnabled: true 
          },
          scale: 500000,
          //center: [-128.9, -73.01]
		  center: [-128.9, -73.01]
        });
		 var layer = new ImageryLayer({
									  // URL to the imagery service
									  url: evaurl,
									  format:"jpg"
									});
		map.layers.add(layer);
		var cam = new Camera({
					heading: 9, // face due east
					tilt: 80, // looking from a bird's eye view
					position: {
								latitude: -73.22,
								longitude: -129.07,
								z: 6800,
								spatialReference: { wkid: 3857 }
							  }
			});
		view.camera = cam;
		view.environment.lighting.cameraTrackingEnabled = true
		view.environment.lighting.directShadowsEnabled=true
		G.view=view;
		//G.map.ground.layers.items[0].visible=false;
		
      });
    </script>
  </head>

  <body>
    <div id="viewDiv"></div>
  </body>
</html>

  4.效果。高程默認是沒有顏色的,只有凹凸起伏。顏色是另附一層Image上去的,默認是黑白色,若要彩色覆蓋,則需要設置Raster Function。

  5、遺憾。

現在ArcGIS For JS API 4.12 並未支持前端高程拉伸。想要看更突出的效果,必須后端數據拉伸,重新發布。

其實ArcSence中有拉伸因子,但BS的遺憾還未出現。

 


免責聲明!

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



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