photoshop 做网站,中国建设监理协会网站继续教育,校园网站建设的重要性,网站和数据库综述
Cesium从1.99版本开始支持I3S服务的加载#xff0c;到目前位置#xff0c;已经支持I3S的倾斜模型、3D Object模型以及属性查询的支持。Cesium1.115又对I3S标准的Building数据实现了加载支持。而ArcGIS之前一直没有跨越对3DTiles数据的支持#xff0c;所以在一些开发过…综述
Cesium从1.99版本开始支持I3S服务的加载到目前位置已经支持I3S的倾斜模型、3D Object模型以及属性查询的支持。Cesium1.115又对I3S标准的Building数据实现了加载支持。而ArcGIS之前一直没有跨越对3DTiles数据的支持所以在一些开发过程中不能完全的满足一些客户的需求。随着ArcGIS 4.29版本的发布ArcGIS提供了IntegratedMesh3DTilesLayer的对象去支持3D Tiles数据格式的加载从而丰富了ArcGIS数据类型也实现了ArcGIS和Cesium两大Web GIS平台间的数据互通。
Cesium中I3S的支持
从Cesium官网的示例中我们可以看到目前Cesium支持的I3S标准的数据主要为倾斜、3d object、BIM、以及数据查看的功能。 从代码可以看到Cesium提供了Cesium.I3SDataProvider.fromUrl的方法去加载I3S标准数据 // Create I3S data providerconst i3sProvider await Cesium.I3SDataProvider.fromUrl(tours[San Francisco],i3sOptions);并且可是通过点击事件绑定获取3d Object数据对象的属性信息
// Pick a new featureconst pickedFeature viewer.scene.pick(movement.position);if (!Cesium.defined(pickedFeature)) {return;}const pickedPosition viewer.scene.pickPosition(movement.position);if (Cesium.defined(pickedFeature.content) Cesium.defined(pickedFeature.content.tile.i3sNode)) {const i3sNode pickedFeature.content.tile.i3sNode;if (pickedPosition) {i3sNode.loadFields().then(function () {let description No attributes;let name;const fields i3sNode.getFieldsForPickedPosition(pickedPosition);if (Object.keys(fields).length 0) {description table classcesium-infoBox-defaultTabletbody;for (const fieldName in fields) {if (i3sNode.fields.hasOwnProperty(fieldName)) {description trth${fieldName}/thtd;description ${fields[fieldName]}/td/tr;if (!Cesium.defined(name) isNameProperty(fieldName)) {name fields[fieldName];}}}description /tbody/table;}if (!Cesium.defined(name)) {name unknown;}selectedEntity.name name;selectedEntity.description description;viewer.selectedEntity selectedEntity;});}}
},
Cesium.ScreenSpaceEventType.LEFT_CLICK);ArcGIS对3DTiles的支持
访问ArcGIS Maps SDK For JavaScript官网会找到IntegratedMesh3DTilesLayer的对象这个是4.29版本新提供的图层类用于支持3dtiles规范的数据加载。 从描述中看目前ArcGIS对于3dTiles的加载支持还是需要符合ArcGIS REST格式的url。这块我们可以将数据放到tomcat下去提供。 代码实现其实和ArcGIS的其他图层加载方式类似代码采用官网上的示例代码
!doctype html
html langenheadmeta charsetutf-8 /meta nameviewport contentinitial-scale1,maximum-scale1,user-scalableno /titleIntegratedMesh3DTilesLayer | Sample | ArcGIS Maps SDK for JavaScript 4.29/titlelink relstylesheet hrefhttps://js.arcgis.com/4.29/esri/themes/light/main.css /script srchttps://js.arcgis.com/4.29//scriptstylehtml,body,#viewDiv {padding: 0;margin: 0;height: 100%;width: 100%;}/stylescriptrequire([esri/WebScene,esri/views/SceneView,esri/layers/IntegratedMesh3DTilesLayer,esri/widgets/Expand,esri/widgets/LayerList,esri/widgets/Legend], (WebScene, SceneView, IntegratedMesh3DTilesLayer, Expand, LayerList, Legend) {/************************************** Load webscene with layer showing* building energy ratings*************************************/const webscene new WebScene({portalItem: {id: 5b177c2579bf45159bb91e2a13b4218b}});/************************************** Create IntegratedMesh3DTilesLayer layer* and add it to the webscene***********************************/const layer new IntegratedMesh3DTilesLayer({url: https://tiles.arcgis.com/tiles/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Utrecht_3D_Tiles_Integrated_Mesh/3DTilesServer/tileset.json,title: Utrecht Integrated Mesh 3D Tiles});webscene.add(layer);/************************************** Create the View and add expandable* LayerList and Legend widgets to the UI***********************************/const view new SceneView({container: viewDiv,map: webscene,lighting: {directShadowsEnabled: true}});const expandLegend new Expand({content: new Legend({view: view}),expanded: true,expandTooltip: Expand Legend,group: top-right,view: view});const expandLayerList new Expand({content: new LayerList({view: view}),expandTooltip: Expand Layer List,group: top-right,view: view});view.ui.add([expandLegend, expandLayerList], top-right);});/script/headbodydiv idviewDiv/div/body
/html从图层类的命名IntegratedMesh3DTilesLayer可以看出这个3dtiles的数据加载其实和倾斜模型IntegratedMeshLayer的加载有相似性示例中其实加载了一个要素图层叠加在模型表面这个功能和倾斜一样。 结语
3dTiles数据一般开发常用的生成工具为CesiumLabArcGIS对于3dtiles数据的支持可以让原先使用cesium的开发者也可以借用arcgis的一些优势功能去开发自己的业务。