无法从 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的附件