iServer6R使用WMTS自定义比例尺出图
使用背景
因为iServer6R默认与国家测绘局发布的标准比例尺集一一对应,如下所示:
[0.7031249999891485,0.35156249999999994,0.17578124999999997,0.08789062500000014,
0.04394531250000007,0.021972656250000007,0.01098632812500002,0.00549316406250001,
0.0027465820312500017,0.0013732910156250009,0.000686645507812499,0.0003433227539062495,
0.00017166137695312503,0.00008583068847656251,0.000042915344238281406,0.000021457672119140645,
0.000010728836059570307,0.000005364418029785169,0.000002682210361715995,0.0000013411051808579975]
但是iSever6R SP1 新增了一个功能,可以自定义设置比例尺集合,那么下面我们就来说明下WMTS自定义比例尺在Flex客户端如何使用。
实现步骤
例如:我们需要将范例数据中的WMTS 的world地图设置自定义的比例尺,操作如下:
1. 编写简单的调用默认的WMTS代码,具体代码如下图所示:
这里要注意的一点tileMatrixSet属性,此属性可以在WMTS的表述中查看,其表述的意义就是瓦片矩阵集的唯一标识符,矩阵集,此属性必写。
编写完成后,运行效果如下图所示,我们可以看到默认的是按照国家测绘局发布的标准比例尺,共20级。
2. 下面我们修改比例尺显示,例如我们需要将此world地图按照[1/700000000,1/350000000,1/175000000,1/87500000,1/43750000,1/2187500]的比例尺来显示。
那么首先需要在浏览器中,打开iServer Manager(http://localhost:8090/iserver/manager)输入完用户名和密码后,依次点击服务,服务接口,wmts100。
3. 将wellKnownScaleSet(标准比例尺集合)一栏选择custom,将DPI设置为96,将自定义比例尺集合填入你所需要设置的比例尺,例如:700000000,350000000,175000000,87500000,43750000,21875000
填写完成后保存变更即可。
4. 我们可以在WMTS服务里查看更新后的WMTS地图服务(http://localhost:8090/iserver/services/maps/wmts100/1.0.0/WMTSCapabilities.xml)
5. 下来我们需要修改Flex端的代码,因为服务端的WMTS默认比例尺变成我们自己修改的了。那么首先我们需要得到更改比例尺后的地图,更改后地图的关键属性tileMatrixSet,我们需要在WMTS表述里查看。如下图所示:
6. 由上图,我们可以看出更新后的tileMatrixSet值我们需要填入的是custom_World Map,修改Flex代码,修改后代码如下:
7. 我们已经在服务端把WMTS地图的比例尺改了,但是如果你现在直接运行代码是不出图的,而且比例尺还是20级国家的。下来我们需要用到iClient for Flex里面ScaleUtil类来计算分辨率,将得到的分辨率设置在WMTS中,从而完成自定义比例尺。
其中,ScaleUtil类具体用到的属性就是
我们可以trace得到其返回的结果,将返回结果输出到Flex控制台:(也可以用数组,Alert等等方法来获取这个结果)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)