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

调用ArcGIS REST接口返回200但生成空JSON文件问题求助

ArcGIS REST接口查询无数据问题排查与解决

核心问题是你的请求参数缺少图层ID(layer)——ArcGIS FeatureServer的查询接口必须指定要查询的图层,否则接口不知道返回哪个图层的要素,自然会返回空数据。

修复步骤

  • 给请求参数添加layer字段:目标服务的第一个图层ID通常是0,你可以通过访问服务主页(去掉URL末尾的/query)确认具体图层ID
  • 验证返回数据:打印接口返回的文本内容,确认features数组存在且有数据
  • 处理分页:如果数据量超过接口默认上限(一般是1000条),需要用resultOffset和resultRecordCount参数分批获取数据

修正后的完整代码

import requests
import json
import arcpy

# 补充layer参数,指定要查询的图层ID
params = {
    'where': '1=1',
    'outFields': '*',
    'f': 'json',
    'returnGeometry': True,
    'geometryType': 'esriGeometryPolygon',
    'layer': '0'  # 必填参数:指定查询的图层ID
}

# 目标接口地址
url = "https://gis.cachecounty.org/arcgis/rest/services/BaseMap/Parcels_Current/FeatureServer/query"
r = requests.get(url, params)

# 打印完整返回内容,方便排查问题
print(r.text)
data = r.json()

# 检查是否有返回要素
if 'features' in data and len(data['features']) > 0:
    # 保存JSON到本地
    json_file_path = "你的JSON文件路径"
    with open(json_file_path, 'w') as f:
        json.dump(data, f)
    # 转换为本地要素类
    arcpy.JSONToFeatures_conversion(json_file_path, "你的目标要素类路径")
else:
    print("返回数据为空,请检查图层ID参数或服务权限")

额外注意事项

  • 确认图层ID:访问服务主页可以看到所有可用图层及其ID,确保你指定的图层是包含 parcels 数据的那个
  • 大数据量处理:如果要素总数超过1000条,需要循环调用接口,每次设置resultOffset为上一次的偏移量,例如:
    result_record_count = 1000
    offset = 0
    all_features = []
    while True:
        params['resultOffset'] = offset
        params['resultRecordCount'] = result_record_count
        r = requests.get(url, params)
        data = r.json()
        features = data.get('features', [])
        if not features:
            break
        all_features.extend(features)
        offset += result_record_count
    # 将all_features整理成标准ArcGIS JSON格式后保存
    final_data = {'features': all_features, 'geometryType': 'esriGeometryPolygon'}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:42:10