def getOIDs(targelUrl,expr): # get the list of oids. ids = [] arcpy.SetProgressor("default","Querying Existing Features") arcpy.SetProgressorLabel("Querying Existing Features") url = targelUrl + '/query' #dla.addMessage("Url:"+url) token = dla.getSigninToken() if expr != '': params = {'f': 'pjson', 'where': expr,'token':token,'returnIdsOnly':'true'} else: params = {'f': 'pjson', 'where': '1=1','token':token,'returnIdsOnly':'true'} #dla.addMessage("Params:"+json.dumps(params)) result = dla.sendRequest(url,params) try: if result['error'] != None: retval = False dla.addMessage("Query features from Feature Service failed") dla.addMessage(json.dumps(result)) error = True except: ids = result['objectIds'] lenFound = len(ids) msg = str(lenFound) + " features found in existing Service" print(msg) dla.addMessage(msg) retval = True return ids
def deleteFeatures(sourceLayer,targelUrl,expr): # delete features using chunks of _chunkSize retval = False error = False # delete section ids = getOIDs(targelUrl,expr) try: lenDeleted = 100 #Chunk deletes using chunk size at a time featuresProcessed = 0 numFeat = len(ids) if numFeat == 0: dla.addMessage("0 Features to Delete, exiting") return True # nothing to delete is OK if numFeat > _chunkSize: chunk = _chunkSize else: chunk = numFeat arcpy.SetProgressor("default","Deleting Features") while featuresProcessed < numFeat and error == False: #Chunk deletes using chunk size at a time next = featuresProcessed + chunk msg = "Deleting features " + str(featuresProcessed) + ":" + str(next) dla.addMessage(msg) arcpy.SetProgressorLabel(msg) oids = ",".join(str(e) for e in ids[featuresProcessed:next]) url = targelUrl + '/deleteFeatures' token = dla.getSigninToken() params = {'f': 'pjson', 'objectIds': oids,'token':token} result = dla.sendRequest(url,params) try: if result['error'] != None: retval = False dla.addMessage("Delete features from Feature Service failed") dla.addMessage(json.dumps(result)) error = True except: try: lenDeleted = len(result['deleteResults']) msg = str(lenDeleted) + " features deleted, " + str(featuresProcessed + chunk) + "/" + str(numFeat) print(msg) dla.addMessage(msg) retval = True except: retval = False error = True dla.showTraceback() dla.addMessage("Delete features from Feature Service failed") dla.addError(json.dumps(result)) featuresProcessed += chunk except: retval = False error = True dla.showTraceback() dla.addMessage("Delete features from Feature Service failed") pass return retval
def addFeatures(sourceLayer,targelUrl,expr): # add features using _chunkSize retval = False error = False # add section try: arcpy.SetProgressor("default","Adding Features") arcpy.SetProgressorLabel("Adding Features") featurejs = featureclass_to_json(sourceLayer) url = targelUrl + '/addFeatures' numFeat = len(featurejs['features']) if numFeat == 0: dla.addMessage("0 Features to Add, exiting") return True # nothing to add is OK if numFeat > _chunkSize: chunk = _chunkSize else: chunk = numFeat featuresProcessed = 0 while featuresProcessed < numFeat and error == False: next = featuresProcessed + chunk features = featurejs['features'][featuresProcessed:next] msg = "Adding features " + str(featuresProcessed) + ":" + str(next) dla.addMessage(msg) arcpy.SetProgressorLabel(msg) token = dla.getSigninToken() params = {'rollbackonfailure': 'true','f':'json', 'token':token, 'features': json.dumps(features)} result = dla.sendRequest(url,params) try: if result['error'] != None: retval = False dla.addMessage("Add features to Feature Service failed") dla.addMessage(json.dumps(result)) error = True except: try: lenAdded = len(result['addResults']) msg = str(lenAdded) + " features added, " + str(featuresProcessed + chunk) + "/" + str(numFeat) print(msg) dla.addMessage(msg) retval = True except: retval = False dla.addMessage("Add features to Feature Service failed") dla.showTraceback() dla.addError(json.dumps(result)) error = True featuresProcessed += chunk except: retval = False dla.addMessage("Add features to Feature Service failed") dla.showTraceback() error = True pass return retval
def getOIDs(targelUrl, expr): # get the list of oids. ids = [] arcpy.SetProgressor("default", "Querying Existing Features") arcpy.SetProgressorLabel("Querying Existing Features") url = targelUrl + '/query' #dla.addMessage("Url:"+url) token = dla.getSigninToken() if expr != '': params = { 'f': 'pjson', 'where': expr, 'token': token, 'returnIdsOnly': 'true' } else: params = { 'f': 'pjson', 'where': '1=1', 'token': token, 'returnIdsOnly': 'true' } #dla.addMessage("Params:"+json.dumps(params)) result = dla.sendRequest(url, params) try: if result['error'] != None: retval = False dla.addMessage("Query features from Feature Service failed") dla.addMessage(json.dumps(result)) error = True except: ids = result['objectIds'] lenFound = len(ids) msg = str(lenFound) + " features found in existing Service" print(msg) dla.addMessage(msg) retval = True return ids
def addFeatures(sourceLayer, targelUrl, expr): # add features using _chunkSize retval = False error = False # add section try: arcpy.SetProgressor("default", "Adding Features") arcpy.SetProgressorLabel("Adding Features") featurejs = featureclass_to_json(sourceLayer) url = targelUrl + '/addFeatures' numFeat = len(featurejs['features']) if numFeat == 0: dla.addMessage("0 Features to Add, exiting") return True # nothing to add is OK if numFeat > _chunkSize: chunk = _chunkSize else: chunk = numFeat featuresProcessed = 0 while featuresProcessed < numFeat and error == False: next = featuresProcessed + chunk features = featurejs['features'][featuresProcessed:next] msg = "Adding features " + str(featuresProcessed) + ":" + str(next) dla.addMessage(msg) arcpy.SetProgressorLabel(msg) token = dla.getSigninToken() params = { 'rollbackonfailure': 'true', 'f': 'json', 'token': token, 'features': json.dumps(features) } result = dla.sendRequest(url, params) try: if result['error'] != None: retval = False dla.addMessage("Add features to Feature Service failed") dla.addMessage(json.dumps(result)) error = True except: try: lenAdded = len(result['addResults']) msg = str(lenAdded) + " features added, " + str( featuresProcessed + chunk) + "/" + str(numFeat) print(msg) dla.addMessage(msg) retval = True except: retval = False dla.addMessage("Add features to Feature Service failed") dla.showTraceback() dla.addError(json.dumps(result)) error = True featuresProcessed += chunk except: retval = False dla.addMessage("Add features to Feature Service failed") dla.showTraceback() error = True pass return retval
def deleteFeatures(sourceLayer, targelUrl, expr): # delete features using chunks of _chunkSize retval = False error = False # delete section ids = getOIDs(targelUrl, expr) try: lenDeleted = 100 #Chunk deletes using chunk size at a time featuresProcessed = 0 numFeat = len(ids) if numFeat == 0: dla.addMessage("0 Features to Delete, exiting") return True # nothing to delete is OK if numFeat > _chunkSize: chunk = _chunkSize else: chunk = numFeat arcpy.SetProgressor("default", "Deleting Features") while featuresProcessed < numFeat and error == False: #Chunk deletes using chunk size at a time next = featuresProcessed + chunk msg = "Deleting features " + str(featuresProcessed) + ":" + str( next) dla.addMessage(msg) arcpy.SetProgressorLabel(msg) oids = ",".join(str(e) for e in ids[featuresProcessed:next]) url = targelUrl + '/deleteFeatures' token = dla.getSigninToken() params = {'f': 'pjson', 'objectIds': oids, 'token': token} result = dla.sendRequest(url, params) try: if result['error'] != None: retval = False dla.addMessage( "Delete features from Feature Service failed") dla.addMessage(json.dumps(result)) error = True except: try: lenDeleted = len(result['deleteResults']) msg = str(lenDeleted) + " features deleted, " + str( featuresProcessed + chunk) + "/" + str(numFeat) print(msg) dla.addMessage(msg) retval = True except: retval = False error = True dla.showTraceback() dla.addMessage( "Delete features from Feature Service failed") dla.addError(json.dumps(result)) featuresProcessed += chunk except: retval = False error = True dla.showTraceback() dla.addMessage("Delete features from Feature Service failed") pass return retval