ArcGIS Server提供众多的服务类型,不同类型的服务通过各自的URL地址可以进行直接的判定。
首先让我们了解当前ArcGIS Maps SDK for JavaScript中支持的所有的服务类型,他们分别是:
- MapServer
- ImageServer
- FeatureServer
- SceneServer
- StreamServer
- VectorTileServer
- 3DTilesServer (即将于 v4.29版本中推出)
ArcGIS支持将多种不同类型的服务启用OGC标准的服务模式,其中WMS是最为常见的一种OGC服务,ArcGIS Maps SDK for JavaScript中提供了专有的WMSLayer图层类型用于加载OGC WMS格式的数据服务,我们可以通过以下的代码快速判断一个服务的URL地址是否为WMS
function isArcGISWMS(url) {
const lower = url.toLowerCase();
const hasServices = lower.includes("/services/")
const isMapServer = lower.includes("/mapserver/wmsserver")
const isImageServer = lower.includes("/imageserver/wmsserver")
const isWMSServer = lower.includes("/wmsserver")
return hasServices && (isMapServer || isImageServer || isWMSServer)
}
除此之外,我们通常需要在开发过程中快速判断一个给定的服务URL地址是否为ArcGIS/GeoScene服务,如下的正则表达式可以为我们提供快速判断。
const arcgisServices = ['MapServer', 'ImageServer', 'FeatureServer', 'SceneServer', 'StreamServer', 'VectorTileServer', '3DTilesServer'];
const isArcGISReg = new RegExp(
`^((?:https?:)?\\/\\/\\S+?\\/rest\\/services\\/(.+?)\\/(${arcgisServices.join("|")}))(?:\\/(?:layers\\/)?(\\d+))?`,
"i",
)
function isArcGISServiceUrl(url) {
return !!isArcGISReg.test(url)
}
如果你觉得本文对你有些许启发,请持续关注我的公众号“戈伊星球”吧!