无法从 ArcGIS REST 获取形状数据 API

Unable to get shape data from ArcGIS REST API

我正在尝试从 ArcGIS 下载飓风数据。我可以做两件事。

  1. 我可以访问他们的网络界面 https://services9.arcgis.com/RHVPKKiFTONKtxq3/ArcGIS/rest/services/Active_Hurricanes_v1/FeatureServer/1/query 设置几个值('Where'字段我设置为1=1,'Out Fields'我设置为*) 然后滚动到底部并单击“Query(GET)”按钮。一些值出现在屏幕上。 都很好,但没有形状数据。

  2. 我可以用Python(这才是我真正的目标)。 我有一个脚本可以做到这一点。抱歉,代码看起来很糟糕……Whosebug 中的代码图标目前似乎无法正常工作。

    导入 urllib.request、urllib.error、urllib.parse 导入 json

    url_json='https://services9.arcgis.com/RHVPKKiFTONKtxq3/ArcGIS/rest/services/Active_Hurricanes_v1/FeatureServer/0/query?where=1%3D1&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&units=esriSRUnit_Meter&returnGeodetic=false&outFields=*&returnGeometry=false&featureEncoding=esriDefault&multipatchOption=xyFootprint&maxAllowableOffset=&geometryPrecision=&outSR=&datumTransformation=&applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&returnQueryGeometry=false&returnDistinctValues=false&cacheHint=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&returnZ=false&returnM=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=pjson&token='

    响应 = urllib.request.url打开(url_json)

    webContent = response.read() # JSON 结果的字节串

    jsonContent = json.loads(webContent) # 从字节串

    创建一个 JSON 对象

    json内容['features']中的对象:

     rec = {}  # create an empty dictionary for each feature 
    
    
     for k in object['attributes'].keys():
    
    
         rec[k] = object['attributes'][k]
    

为了获得我在 python 程序中使用的 url,我只是按下 (1) 上的按钮,然后使用 url 栏中的信息。唯一的区别是我选择 json 而不是 html 作为输出。问题:我不知道如何将它获取到 return 形状信息的 blob。他的 API 允许吗?如果是这样,我应该如何在查询 window 和 url 中获取它?

正如您在 REST endpoint, the geometry type for the Feature Layer is esriGeometryPoint. The URL in your script uses geometryType=esriGeometryEnvelope, which returns extent 中看到的那样。此外,returnGeometry 参数设置为 false,因此无论 geometryType[=23= 是什么,都不会返回任何几何图形]参数设置为.

尝试将 geometryType 设置为 esriGeometryPoint 并将 returnGeometry 设置为 true。然后应在结果 JSON 中返回几何图形,作为与纬度和经度相关的 x/y 坐标:

"geometry" : 
      {
        "x" : -64.899999998509884, 
        "y" : 28.199999999254942
      }