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

Posted

技术标签:

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

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

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

    我可以使用 Python(这是我的真正目标)。 我有一个脚本可以做到这一点。抱歉,代码看起来很讨厌……*** 中的 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 中做什么来获取它?

【问题讨论】:

【参考方案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
      

【讨论】:

以上是关于无法从 ArcGIS REST API 获取形状数据的主要内容,如果未能解决你的问题,请参考以下文章

无法从Outlook REST API获取SourceUrl的附件

你好,我出现这个问题了,arcgis10.2加载shp出现打开要素时出错,形状数和表记录数不一致

arcgis rest api 离线部署与引用

arcgis rest api - task

iphone多边形显示数

无法从 ArcGIS API for Python 检索 ArcGIS 角色