python 使用ArcPy从ArcGIS REST服务中提取功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 使用ArcPy从ArcGIS REST服务中提取功能相关的知识,希望对你有一定的参考价值。

import arcpy
import json
import urllib

arcpy.env.overwriteOutput = True
baseURL = "http://services.gis.ca.gov/arcgis/rest/services/Environment/Wildfires/MapServer/0"
fields = "*"
out_data = "H:/cal_data/data.gdb/testdata"

# Get record extract limit
urlstring = baseURL + "?f=json"
j = urllib.request.urlopen(urlstring)
js = json.load(j)
maxrc = int(js["maxRecordCount"])
print("Record extract limit: %s" % maxrc)

# Get object ids of features
where = "1=1"
urlstring = baseURL + "/query?where={}&returnIdsOnly=true&f=json".format(where)
j = urllib.request.urlopen(urlstring)
js = json.load(j)
idfield = js["objectIdFieldName"]
idlist = js["objectIds"]
idlist.sort()
numrec = len(idlist)
print("Number of target records: %s" % numrec)

# Gather features
print("Gathering records...")
fs = dict()
for i in range(0, numrec, maxrc):
  torec = i + (maxrc - 1)
  if torec > numrec:
    torec = numrec - 1
  fromid = idlist[i]
  toid = idlist[torec]
  where = "{} >= {} and {} <= {}".format(idfield, fromid, idfield, toid)
  print("  {}".format(where))
  urlstring = baseURL + "/query?where={}&returnGeometry=true&outFields={}&f=json".format(where,fields)
  fs[i] = arcpy.FeatureSet()
  fs[i].load(urlstring)

# Save features
print("Saving features...")
fslist = []
for key,value in fs.items():
  fslist.append(value)
arcpy.Merge_management(fslist, out_data)
print("Done!")

以上是关于python 使用ArcPy从ArcGIS REST服务中提取功能的主要内容,如果未能解决你的问题,请参考以下文章

ArcPy开发教程1-面向ArcGIS的Python语言基础

ArcGIS 应用Python中arcpy模块

arcpy arcgis python实例教程--原点夹角距离定义线(坐标正算)

arcgis python 刷新

arcgis python 删除一个数据库所有数据

ArcGIS Python 唯一值专题