Cesium에서 사용가능한 Terrain을 조사하고 적용해 보았다.
2D 지형
/**
* Cesium 평면 지형 가져올때의 예시 코드 (20201202 정상작동 확인됨)
* Ion.defaultAccessToken 불필요
* 실 서비스에 제한없이 사용 가능
*/
var terrainProvider = new Cesium.EllipsoidTerrainProvider(), //기본 지형
3D 지형
Cesium Ion Terrain
/**
* Ion 기본 지형 가져올때의 예시 코드 (20201202 정상작동 확인됨)
* 지형 사용에 대한 트래픽 용량 제한이 있음
* 실 서비스를 위해 Commercial 요금제 이상 사용 필요 (https://cesium.com/pricing/)
* 빠른 로딩 속도 제공 확인
*
* 인증키 필요 여부 : Ion.defaultAccessToken 필요
* availability 속성 지원 : Yes (지형 공급자가 availability 속성 정의)
*/
var terrainProvider = Cesium.createWorldTerrain();
//옵션 변경 예시 코드 (20201202 정상작동 확인됨)
var terrainProvider = Cesium.createWorldTerrain({
requestWaterMask : false, //수면에 파도효과
requestVertexNormals : true //경사 명암효과
});
//Ion에 등록한 사용자 정의 지형 가져올때의 예시 코드 (20201202 정상작동 확인됨)
var terrainProvider = new Cesium.CesiumTerrainProvider({
url: Cesium.IonResource.fromAssetId(아이디값), //Ion에 지형 업로드시 자동 생성
requestWaterMask : false, //수면에 파도효과
requestVertexNormals : true //경사 명암효과
});
MapTiler Terrain
/**
* maptiler 지형 가져올때의 예시 코드 (20201202 정상작동 확인됨)
* 지형 사용에 대한 요청 수 제한이 있음
* 실 서비스를 위해 FLEX 요금제 이상 사용 필요 (https://www.maptiler.com/cloud/plans/)
* 빠른 로딩 속도 제공 확인
*
* 인증키 필요 여부 : maptiler로부터 발급받은 인증키 필요
* availability 속성 지원 : Yes (지형 공급자가 availability 속성 정의)
*/
var terrainProvider = new Cesium.CesiumTerrainProvider({
url: 'https://api.maptiler.com/tiles/terrain-quantized-mesh/?key=인증키',
credit: new Cesium.Credit("\u003ca href=\"https://www.maptiler.com/copyright/\" target=\"_blank\"\u003e\u0026copy; MapTiler\u003c/a\u003e \u003ca href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\"\u003e\u0026copy; OpenStreetMap contributors\u003c/a\u003e", true),
requestVertexNormals: true
});
VRTheWorld Terrain
/**
* VRTheWorld 지형 사용 예시 코드 (20201202 정상작동 확인됨)
* API에 인증키, 토큰 등 인증 정보 넣는 옵션이 존재하지 않음
* 실 서비스를 위한 영구적 지형 제공이 되는지 확인 할수 없었음
* 트래픽, 요청수 등의 스트리밍 용량에 대한 명시적 제한을 확인할 수 없었음
* 타 지형에 비해 상대적으로 약간 느린 로딩 속도 확인
*
* 인증키 필요 여부 : 불필요
* availability 속성 지원 : No (지형 공급자가 availability 속성 미정의)
*/
var terrainProvider = new Cesium.VRTheWorldTerrainProvider({
url : 'https://www.vr-theworld.com/vr-theworld/tiles1.0.0/73/',
credit: new Cesium.Credit('<a href="https://cesium.com/" target="_blank"><img src="/images/cesium_logo.png" title="Cesium"/></a>')
});
Esri ArcGIS Terrain
/**
* Esri ArcGIS 지형 사용 예시 코드 (20201202 정상작동 확인됨)
* token 넣는 옵션이 있지만 옵션을 제거 후 사용 가능
* token 값을 취득하는 방법을 확인 할수 없었음
* 실 서비스를 위한 영구적 지형 제공이 되는지 확인 할수 없었음
* 트래픽, 요청수 등의 스트리밍 용량에 대한 명시적 제한을 확인할 수 없었음
* 타 지형에 비해 상대적으로 많이 느린 통신 속도 확인
*
* 인증키 필요 여부 : 인증키 없을시 언제까지 사용 가능한지 파악 안됨
* availability 속성 지원 : No (지형 공급자가 availability 속성 미정의)
*/
var terrainProvider = new Cesium.ArcGISTiledElevationTerrainProvider({
url: 'https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer'
})
//token값이 있으면 응답 거부됨 (20201202 작동불가 확인)
var terrainProvider = new Cesium.ArcGISTiledElevationTerrainProvider({
url: "https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer",
token : 'KED1aF_I4UzXOHy3BnhwyBHU4l5oY6rO6walkmHoYqGp4XyIWUd5YZUC1ZrLAzvV40pR6g..'
});
Google Terrain
/**
* Google 지형 사용 예시 코드 (20201202 작동안됨)
* API는 존재하지만 지형을 불러올 수 없음
*/
var terrainProvider = new Cesium.GoogleEarthEnterpriseTerrainProvider({
metadata : new GoogleEarthEnterpriseMetadata('http://www.earthenterprise.org/3d'),
credit: new Cesium.Credit('<a href="https://cesium.com/" target="_blank"><img src="/images/cesium_logo.png" title="Cesium"/></a>')
});
//또 하나의 코드 (20201202 작동안됨)
var terrainProvider = new Cesium.GoogleEarthEnterpriseTerrainProvider({
metadata: new Cesium.GoogleEarthEnterpriseMetadata(
new Cesium.Resource({
url: "http://www.earthenterprise.org/3d",
// proxy: new Cesium.DefaultProxy("/proxy/"),
})
),
});