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

2024-09-29 06:31:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

    url_json='1〕https://services9.arcgis.com/RHVPKKiFTONKtxq3/ArcGIS/rest/services/Active_Hurricanes_v1/FeatureServer/0/query?where=1%3D1&objectIds=&;时间=&;几何学=&;geometryType=ESRIGEMETRYENVELOPE&;inSR=&;spatialRel=ESRISPATIALRELINETERSECTS&;结果类型=无&;距离=0.0&;单位=esriSRUnit\u仪表和;返回大地测量=假&;外场=*&;returnGeometry=false&;功能编码=esriDefault&;multipatchOption=xyFootprint&;maxAllowableOffset=&;几何精度=&;outSR=&;datumTransformation=&;ApplyVCProjection=false&;returnIdsOnly=假&;returnUniqueIdsOnly=false&;returnCountOnly=假&;returnExtentOnly=false&;returnQueryGeometry=假&;returnDistinctValues=false&;cacheHint=false&;orderByFields=&;GroupByFields统计=&;外统计=&;有=&;resultofset=&;结果记录计数=&;returnZ=false&;returnM=false&;returnExceededLimitFeatures=真&;量化参数=&;sqlFormat=none&;f=pjson&;代币

    response=urllib.request.urlopen(url\u json)

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

    jsonContent=json.load(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中获取它


Tags: 数据httpscomrestjsonfalseurlservice
1条回答
网友
1楼 · 发布于 2024-09-29 06:31:47

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

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

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

相关问题 更多 >