আমাকে সম্প্রতি এটি করতে হয়েছিল এবং এটি এখন পর্যন্ত আমার সেরা চেষ্টা ছিল। আমি মূলত "objectid non in {}".format(ids)
এমনটি করার চেষ্টা করছিলাম যেখানে আইডিগুলি সংগ্রহ করা আপত্তিযুক্তদের একটি প্রধান অংশ হবে তবে ইউআরএল কোনও ডেটা ফেরত দেবে না, ক্লজ স্ট্রিংটি কত দীর্ঘ হতে পারে তার একটি সীমা থাকতে হবে। এই কোডটির কয়েকটি হার্ড কোডড এবং আইডিগুলি এই স্ক্রিপ্টের চেয়ে অ-অনুক্রমিক হলে সম্ভবত সম্ভবত কাজ করবে না। তবে যাইহোক আমি আশা করি এটি গাইডকে সহায়তা করে
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 আইডি প্রদান করে।