【问题标题】:Unable to get shape data from ArcGIS REST API无法从 ArcGIS REST API 获取形状数据
【发布时间】:2021-03-26 13:28:13
【问题描述】:

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

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

  2. 我可以使用 Python(这是我的真正目标)。 我有一个脚本可以做到这一点。抱歉,代码看起来很讨厌……stackoverflow 中的 CODE 图标目前似乎不起作用。

    导入 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=无&距离= 0.0&单位= esriSRUnit_Meter&returnGeodetic =假外场= *&returnGeometry =假featureEncoding = esriDefault&multipatchOption = xyFootprint&maxAllowableOffset =&geometryPrecision =&outSR =&datumTransformation =&applyVCSProjection =假returnIdsOnly =假returnUniqueIdsOnly =假returnCountOnly =假returnExtentOnly =假returnQueryGeometry =假returnDistinctValues =假cacheHint =假orderByFields =&groupByFieldsForStatistics =&outStatistics =&具有=&resultOffset = &resultRecordCount=&returnZ=false&returnM=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=pjson&token='

    响应 = urllib.request.urlopen(url_json)

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

    jsonContent = json.loads(webContent) # 从字节串创建一个 JSON 对象

    对于 jsonContent['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 作为输出。问题:我不知道如何让它返回形状信息的 blob。他的 API 允许吗?如果是这样,我应该在查询窗口和 url 中做什么来获取它?

【问题讨论】:

    标签: python api rest arcgis


    【解决方案1】:

    正如您在REST endpoint 中看到的,要素图层的几何类型是esriGeometryPoint。您脚本中的 URL 使用 geometryType=esriGeometryEnvelope, 其中returns extent。此外,returnGeometry 参数设置为 false,因此无论 geometryType 参数设置为什么,都不会返回任何几何图形。

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 2018-10-25
      • 2017-10-22
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 2022-01-20
      相关资源
      最近更新 更多