使用Python 3将具有格式的文本从ArcGIS地图服务器查询复制到文本文件,同时保持格式化?

问题描述 投票:0回答:1

我正在尝试自动化一个过程,通过该过程我可以查询ArcGIS地图服务器,获取生成的文本并将其另存为.json文件。

可以通过API查询地图服务器。

api = "https://csg.esri-southafrica.com/server/rest/services/CSGSearch/MapServer/2/query?where=1%3D1&text=&objectIds=&time=&geometry=2053965%2C-4019103%2C2054056%2C-4019169+&geometryType=esriGeometryEnvelope&inSR=3857&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=*&returnGeometry=true&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=3857&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&resultOffset=&resultRecordCount=&queryByDistance=&returnExtentsOnly=false&datumTransformation=&parameterValues=&rangeValues=&f=pjson"

这个URL并不重要,但是当我在浏览器中运行它时会给出这样的响应:

    {
     "displayFieldName": "SP_NAME",
     "fieldAliases": {
      "OBJECTID": "OBJECTID",
      "GID": "Geometry Identifier",
      "PRCL_KEY": "26 Digit Code",
      "PRCL_TYPE": "Parcel Type",
      "LSTATUS": "Legal Status",
      "WSTATUS": "Work Status",
      "GEOM_AREA": "Geometry Area",
      "COMMENTS": "Comments",
      "TAG_X": "Longitude",

    etc.etc.etc

如果我将此文本复制到记事本并保存为“any_file.json”。然后我可以在QGIS中加载它并将其保存为shapefile。

我一直在使用以下代码来尝试实现此目的

import requests


mainapi = "https://csg.esri-southafrica.com/server/rest/services/CSGSearch/MapServer/2/query?where=1%3D1&text=&objectIds=&time=&geometry=2053965%2C-4019103%2C2054056%2C-4019169+&geometryType=esriGeometryEnvelope&inSR=3857&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=*&returnGeometry=true&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=3857&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&returnDistinctValues=false&resultOffset=&resultRecordCount=&queryByDistance=&returnExtentsOnly=false&datumTransformation=&parameterValues=&rangeValues=&f=pjson"

r = str(requests.get(mainapi).json())

#Write response to json text file
with open("csg_erven.json", "w") as f:
    f.write(r)

.json文件中的结果未格式化

它们看起来像这样:

{'displayFieldName': 'SP_NAME', 'fieldAliases': {'OBJECTID': 'OBJECTID', 'GID': 'Geometry Identifier', 'PRCL_KEY':

我是一般的编码新手,但我认为格式化至关重要。如何使用格式复制文本?这是编码问题吗?

当我从浏览器手动复制格式化的文本时它工作正常,但单行文本不起作用。

任何帮助将不胜感激。

python json python-requests qgis
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.