CURL调用ArcGIS Tiled Map的MapServer/export报layerId export未找到怎么办
可能的故障原因
- 目标切片地图服务未开放Export Map服务能力
- ArcGIS MapServer支持发布者自主配置开放的服务能力范围。针对预生成切片的Tiled Map,多数场景下发布者会为了降低服务器负载,手动在服务配置中移除
Export Map能力的勾选。此时服务端路由不会将/export识别为独立的服务操作端点,而是会按照默认路由规则MapServer/{layerId}/...把export解析为待查询的图层ID,自然抛出“指定图层未找到”的报错。这种配置下即使请求参数格式完全正确,也无法触发导出流程,和其他已开放导出能力的服务表现存在天然差异。
- ArcGIS MapServer支持发布者自主配置开放的服务能力范围。针对预生成切片的Tiled Map,多数场景下发布者会为了降低服务器负载,手动在服务配置中移除
- 目标服务的发布架构本身不支持动态导出端点
- 遇到问题的这个Tiled Map如果是直接上传切片包生成的ArcGIS Online托管切片图层,或是在服务器端配置为仅提供预生成切片读取的纯切片服务,其REST接口根本不会挂载
MapServer/export对应的动态导出逻辑。这类服务的设计目标就是直接返回预先切好的瓦片,不支持按任意范围、分辨率动态渲染导出整图,因此调用导出端点时就会触发路由解析错误,返回对应报错。
- 遇到问题的这个Tiled Map如果是直接上传切片包生成的ArcGIS Online托管切片图层,或是在服务器端配置为仅提供预生成切片读取的纯切片服务,其REST接口根本不会挂载
- 访问凭证的权限范围不足
- 部分版本的ArcGIS Server在检测到请求携带的凭证没有对应操作权限时,不会直接返回明确的权限不足报错,反而会从当前用户可见的服务资源列表中隐藏需要高权限才能访问的端点。如果当前使用CURL请求携带的Token仅拥有该切片服务的切片读取权限,没有动态导出的权限,
/export端点就会对当前请求者不可见,最终被误判为不存在的图层ID,触发相同报错。测试的其他地图服务可能对当前Token开放了导出权限,因此相同请求可以正常运行。
- 部分版本的ArcGIS Server在检测到请求携带的凭证没有对应操作权限时,不会直接返回明确的权限不足报错,反而会从当前用户可见的服务资源列表中隐藏需要高权限才能访问的端点。如果当前使用CURL请求携带的Token仅拥有该切片服务的切片读取权限,没有动态导出的权限,
- URL路径拼接的编码错误
- 如果该切片服务的名称包含中文、空格、特殊符号,通过CURL发送请求时如果没有对服务路径做正确的URL编码,可能导致实际请求的路径偏离目标服务的MapServer根路径,误打到相邻的其他MapServer服务路径下。这类误路由下,当前被误命中的服务如果没有ID为
export的图层,就会完全匹配遇到的报错文本。
- 如果该切片服务的名称包含中文、空格、特殊符号,通过CURL发送请求时如果没有对服务路径做正确的URL编码,可能导致实际请求的路径偏离目标服务的MapServer根路径,误打到相邻的其他MapServer服务路径下。这类误路由下,当前被误命中的服务如果没有ID为
内容的提问来源于stack exchange,提问作者The Dark Brainer
相关产品推荐
相关产品推荐

