ฉันต้องทำสิ่งนี้เมื่อไม่นานมานี้และนี่เป็นความพยายามอย่างที่สุดของฉัน ฉันเคยพยายามทำ"objectid non in {}".format(ids)
ที่รหัสจะเป็น tuple ของวัตถุที่เก็บรวบรวม แต่ url จะไม่ส่งคืนข้อมูลใด ๆ จะต้องมีข้อ จำกัด เกี่ยวกับระยะเวลาที่สตริงประโยคที่สามารถ รหัสนี้บางรหัสเป็นรหัสยากและถ้ารหัสไม่ต่อเนื่องกว่าสคริปต์นี้ส่วนใหญ่จะไม่ทำงาน แต่อย่างไรก็ตามฉันหวังว่านี่จะช่วยนำทาง
import os, arcpy, json, requests
arcpy.env.workspace=r'C:\path'
arcpy.env.overwriteOutput=True
def non_esri_extract(url,where,idlist):
dic={"where": where,"outFields": "*","returnGeometry": "true","f":"json"}
resp=requests.get(url, params=dic)
data=resp.json()
for i in data['features']:
idlist.append(int(i['attributes']['OBJECTID']))
maximum=max(idlist)
minimum=min(idlist)
return maximum,minimum
def esri_extract(url,e_w):
fields="*"
esri_param="?where={}&outFields={}&returnGeometry=true&f=json".format(e_w, fields)
fsURL=url+esri_param
fs = arcpy.FeatureSet()
fs.load(fsURL)
outname="interm"+str(x)
arcpy.CopyFeatures_management(fs, outname)
x=0
maximum=0
minimum=1
baseURL="http://gismaps.vita.virginia.gov/arcgis/rest/services/VA_Base_layers/VA_Parcels/FeatureServer/0/query"
while maximum!=minimum:
print "number of loops = {}".format(str(x))
if x==0:
ids=[]
maximum,minimum=non_esri_extract(baseURL,"LOCALITY = 'Franklin County'",ids)
esri_where="objectid >={} and objectid <={} and LOCALITY = 'Franklin County'".format(minimum,maximum)
esri_extract(baseURL,esri_where)
x+=1
else:
ids=[]
interm_where="objectid >={} and objectid <={} and LOCALITY = 'Franklin County'".format(maximum,maximum+999)
maximum,minimum=non_esri_extract(baseURL,interm_where,ids)
esri_where="objectid >={} and objectid <={} and LOCALITY = 'Franklin County'".format(minimum,maximum)
esri_extract(baseURL,esri_where)
x+=1
fcs = arcpy.ListFeatureClasses()
arcpy.Merge_management(fcs, "Merged")
return IDs only
ส่งกลับรหัส 58919 ทั้งหมด