You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ArcGIS REST API(POST请求)更新要素图层失败排查

ArcGIS REST API UpdateFeatures 调用失败的排查点及修复方案

核心问题分析

你的代码存在几个常见错误,导致要素更新失败:

  • JSON序列化重复处理:你先对updates执行json.dumps()转成字符串,再放到params字典里通过data参数提交。requests.post的data参数会自动把字典内容编码为表单数据,这会导致updates的JSON字符串被二次转义(比如引号被转成"),服务端无法正确解析更新指令。
  • 非ASCII字符编码风险:Muni字段的希伯来文值דאדי通过表单提交时,可能因编码不规范被服务端识别错误,导致更新失败。
  • 潜在的权限/要素存在性问题:需要额外确认OBJECTID=1的要素确实存在于ID为3的图层,且你的Token拥有该图层的编辑权限。

修正后的代码

import requests
import json

url = 'https://server-url/arcgis/rest/services/TEMP/Miki_Test/MapServer/3/updateFeatures'

# 直接用Python字典定义更新内容,无需提前序列化
updates = [{
    "attributes": {
        "OBJECTID": 1,
        "Muni": "דאדי"
    }
}]

params = {
    "f": "json",
    "token": "valid token"
}

# 使用requests的json参数提交,自动处理序列化和UTF-8编码
response = requests.post(url, json={**params, "updates": updates})

# 打印响应内容排查问题
print(response.text)

额外排查步骤

  • 检查响应内容:打印response.text,ArcGIS服务会返回详细错误信息(比如OBJECTID不存在、权限不足、参数格式错误等),这是定位问题最快的方式。
  • 验证Token权限:确保Token对应的用户拥有该要素图层的编辑权限,且Token未过期。
  • 确认要素存在:通过query接口查询ID为3的图层,确认OBJECTID=1的要素确实存在,且Muni字段可编辑。

内容的提问来源于stack exchange,提问作者MikeyNeedHelp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:52:12