ArcEngine10.1 CS端加载WMTS图层

using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.GISClient;
using ESRI.ArcGIS.Carto;

public class MapWMTSLayer
{
    public IWMTSLayer GetWMTSLayer(string location)
    {
        IPropertySet pPropertyset = new PropertySetClass();
        pPropertyset.SetProperty("url", location);
        IWMTSConnectionFactory pwmtsconnectionfactory = new WMTSConnectionFactory();
        IWMTSConnection con = pwmtsconnectionfactory.Open(pPropertyset, 0, null);
        IWMTSLayer ly = new WMTSLayer();
        IName n = con.FullName;
        ly.Connect(n);
        return ly;
    }
}


测试图层:

http://t0.tianditu.com/vec_c/wmts


加载结果:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cesium是一个用于构建3D地球应用的JavaScript库。WMTS(Web Map Tile Service)是一种提供动态地图切片的标准化协议。在Cesium中,我们可以通过添加ImageryProvider来加载WMTS图层。但是如何在Cesium中点击WMTS图层,获取其属性呢? 首先需要明确WMTS服务通常都是经过数据加工的瓦片数据,因此获取图层的属性只能通过WMTS图层服务提供的GetFeatureInfo接口来实现。当用户在Cesium中选中一张WMTS图层时,我们可以从这个图层的ImageryLayer对象中获取对应的Web Map Service(WMS)地址以及图层名称。然后通过拼接GetFeatureInfo请求地址,将该地址发送到WMTS服务器获取其相应属性值。 在请求中需要注意的是,请求的url中应包含了图层名称、请求坐标系(通常是EPSG:4326)、请求的图层坐标以及返回格式(通常是xml或json)。通过向服务器发送GetFeatureInfo请求,服务器会返回一个包含请求坐标处属性值的响应,我们需要对该响应进行解析,从响应中提取出我们需要的属性值。 最后,在Cesium中我们可以通过添加PickEvent来响应用户点击事件,当用户在图层上点击时,我们会触发该事件并获取该点击位置的地理坐标。然后将该坐标转换为请求坐标系后,发送GetFeatureInfo请求获取该点处的属性值并将其展示给用户。 总体而言,通过Cesium加载WMTS图层并获取其属性需要对WMTS服务的请求和响应进行深入理解,只有在对WMTS服务有足够了解的情况下才能顺利实现该功能。 ### 回答2: Cesium是一款强大的开源3D地图引擎,在地图可视化方面具有很高的性能和强大的交互能力。WMTS(Web Map Tile Service)是一种基于Web标准的瓷砖地图服务,它可以使用户通过URL获取经过裁剪、投影和缩放的地图瓷砖。 在Cesium中加载WMTS服务时,需要使用Cesium的ImageryLayerCollection创建一个新的图像图层,并将WMTS服务添加到该图像图层中作为贴图。除此之外,还需要使用Cesium的ProviderViewModel创建一个视图模型,并将它添加到图层控制器中,以便用户可以在界面上切换不同的图层。 要在Cesium中实现点击获取WMTS服务属性,需要使用pick事件监听用户的鼠标点击操作,并在点击时获取所选取的地理位置信息。一般来说,这个地理位置信息可以用Cartographic对象进行描述,它包含了经度、纬度和高度三个属性。然后,可以通过WMTS服务的FeatureInfo请求获取该位置的地图属性信息。 实现这个功能的关键在于WMTS服务的FeatureInfo请求,它需要一个请求URL和一些请求参数(如地理位置、图层名称等)。可以通过以下代码来发送FeatureInfo请求,并获取响应结果: ```javascript viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) { //获取点击位置的经纬度信息 var ray = viewer.camera.getPickRay(movement.position); var cartesian = viewer.scene.globe.pick(ray, viewer.scene); var cartographic = Cesium.Cartographic.fromCartesian(cartesian); var longitudeString = Cesium.Math.toDegrees(cartographic.longitude).toFixed(10); var latitudeString = Cesium.Math.toDegrees(cartographic.latitude).toFixed(10); //构建请求URL和参数 var layerName = "layer1"; var url = "http://wmtsserver.com/WMTS/1.0.0/layer1/wmts?"; var requestUrl = url + "REQUEST=GetFeatureInfo" + "&VERSION=1.0.0" + "&LAYER=" + layerName + "&INFOFORMAT=text/plain" + "&I=" + Math.round(e.offsetX) + "&J=" + Math.round(e.offsetY) + "&CRS=EPSG:4326" + "&STYLES=" + "&WIDTH=" + "&HEIGHT=" + "&BBOX=" + "&QUERY_LAYERS=" + layerName; //发送FeatureInfo请求 var promise = Cesium.GeoJsonDataSource.load(requestUrl); Cesium.when(promise, function(dataSource) { //获取FeatureInfo响应结果 var feature = dataSource.entities.values[0]; var properties = feature.properties; console.log(properties); }); }, Cesium.ScreenSpaceEventType.LEFT_CLICK); ``` 以上是实现Cesium加载WMTS并点击获取属性的一些思路和代码示例,仅供参考。具体实现方式可能会因服务商和数据源的不同而有所不同,需要根据具体情况进行调整。 ### 回答3: Cesium是一款开源的WebGL绘图库,提供了丰富的地图数据展示和可视化功能。WMTS是Web地图切片服务的一种标准格式,它将地图数据按照地理位置和比例尺进行分块,方便地图服务提供商快速响应客户的请求。在Cesium中加载WMTS服务的过程中,我们可以通过点击获取属性的方式来获得其它各种信息。 首先,我们需要在Cesium中配置WMTS服务图层信息。通过定义图层的属性,包括名称、URL地址、WMTS服务的格式、样式、瓦片的像素尺寸等信息,然后将图层添加到Cesium的图层控制器中。同时,我们还需要注册鼠标事件监听器,以便在用户点击地图时获取相应的属性信息。 接下来,当用户点击地图时,Cesium会触发相应的鼠标事件,我们可以通过事件监听器获取鼠标点击时的坐标值,并将坐标值转为地理经纬度坐标。然后,我们可以调用WMTS的GetFeatureInfo方法,通过在请求URL中添加相关参数,请求获取地理坐标点所在的图层信息和属性值。 最后,我们可以将获取的属性值展示在Cesium的浮动标记中,也可以通过控制台输出等方式来展示属性信息,这样就可以在地图上实现WMTS服务的点击获取属性功能了。需要注意的是,不同的WMTS服务的GetFeatureInfo方法传递的参数可能会有所不同,需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值