def searchPortalItems(wherestring, start=1): token = Security.GenerateToken() questionParams = { 'q': wherestring, "sortField": "name", "start": start, "num": 100, "f": "json", "token": token } url = r"{}/sharing/rest/search".format("https://www.arcgis.com") print("Start searching portal: {}, start: {}".format(wherestring, start)) response = requests.post(url, questionParams) retObject = response.json() returnResults = [] if retObject["total"] > 0: returnResults = retObject["results"] else: print("No results for wherestring: {}".format(wherestring)) return returnResults
def main(): print("opening CSV") f = open(os.path.join(os.path.split(__file__)[0], _csvFile), "r") lines = f.readlines() newCodedValues = [] for line in lines: parts = line.split(",") newCodedValues.append({"code": parts[0], "name": parts[1].strip()}) print("Getting token") token = Security.GenerateToken() print("Getting service info") layerInfoUrl = "{}?f=json&token={}".format(_featureLayerUrl, token) layerInfo = requests.get(layerInfoUrl).json() currentField = [ field for field in layerInfo["fields"] if field["name"] == _fieldName ][0] print("Currently field {} has {} domain values".format( _fieldName, len(currentField["domain"]["codedValues"]))) currentField["domain"]["codedValues"] = newCodedValues print("Updating field {} to have {} domain values".format( _fieldName, len(newCodedValues))) featureLayerAdminUrl = _featureLayerUrl.replace("/rest/", "/rest/admin/") params = {"f": "json", "token": token} params["updateDefinition"] = json.dumps({"fields": [currentField]}) layerUpdateUrl = "{}/updateDefinition".format(featureLayerAdminUrl) print("Sending request ") layerResult = requests.post(layerUpdateUrl, params).json() print(layerResult) print("script complete")
def main(): print("Appending data to feature") portalUrl = "https://www.arcgis.com" username = Security.GetUsername() #upload zip gdb fileName = "EGT19_MarkantObject_Deel2.gdb.zip" objectName = os.path.split(fileName)[-1] fileType = "File Geodatabase" print("Check if gdb already exists") currentID = getPortalIdByNameAndType(objectName, fileType) if currentID != None: addUrl = '{}/sharing/rest/content/users/{}/items/{}/update'.format( portalUrl, username, currentID) else: addUrl = "{}/sharing/rest/content/users/{}/addItem".format( portalUrl, username) filesUp = { "file": open(os.path.join(os.path.split(__file__)[0], fileName), 'rb') } token = Security.GenerateToken() params = {} params["f"] = "json" params["token"] = token params["filename"] = fileName params["type"] = fileType params["title"] = objectName params["tags"] = "EGT19,REST,MarkantObject" params[ "description"] = "Deel 2 van de Top10NL MarkantObject records voor de Esri GISTech Devday 2019" print("Start uploading {} to Arcgis Online".format(fileName)) response = requests.post(addUrl, params, files=filesUp) itemPartJSON = response.json() if "success" in itemPartJSON: zipid = itemPartJSON['id'] print("Zipfile added to content: {}".format(zipid)) #appendparameters layerUrl = "https://services.arcgis.com/emS4w7iyWEQiulAb/arcgis/rest/services/EGT19_REST_MarkantObject/FeatureServer/0" params = {} params["f"] = "json" params["token"] = token response = requests.post(layerUrl, params) layerInfo = response.json() dctSource, fields = getFieldMappings(layerInfo) #APPEND print("Appending data to: {}".format(layerInfo["name"])) appendUrl = "{}/append".format(layerUrl) params = {} params["f"] = "json" params["token"] = token params["sourceTableName"] = "MarkantObject_Append" params["fieldMappings"] = json.dumps(dctSource) params["upsert"] = False params["skipUpdates"] = False params["useGlobalIds"] = False params["skipInserts"] = False params["updateGeometry"] = True params["appendItemId"] = zipid params["appendUploadFormat"] = "filegdb" params["rollbackOnFailure"] = True params["appendFields"] = json.dumps(fields) response = requests.post(appendUrl, params) append = response.json() statusUrl = append["statusUrl"] #JOBSTATUS status = "InProgress" while (status == "InProgress" or status == "Pending"): print("Status is {}, sleeping for 1 second".format(status)) time.sleep(1) params = {} params["f"] = "json" params["token"] = token try: response = requests.post(statusUrl, params) status = response.json()["status"] except Exception as e: time.sleep(1) response = requests.post(statusUrl, params) status = response.json()["status"] pass print("Status is: {}".format(status)) if status != "Completed": if status == "Failed": print("Failed updating data") else: print("Not completed with status code: {}".format(status)) else: print("Succesfully updated layer {}".format(layerInfo["name"]))
print("Start - Get Beer Script") ### URL TO THE ESRI WORLD SERVICE AREA SERVICE solveServiceAreaUrl = "https://route.arcgis.com/arcgis/rest/services/World/ServiceAreas/NAServer/ServiceArea_World/solveServiceArea" ### URL TO THE ESRI WORLD GEOCODING SERVICE findAddressCandidatesUrl = "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates" ### URL TO THE ESRI GEOMETRY SERVER geometryServerUrl = "http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer/relation" ### ADDRESSES OF THE WTC AND THE ROTTERDAM BIERGARTEN wtcAddress = "Beursplein 37, 3011 AA Rotterdam" bierGartenAddress = "Schiestraat 18, 3013 BR Rotterdam" ### GET A TOKEN print("Getting token") token = Security.GenerateToken() ### GET COORDINATES OF THE WTC ROTTERDAM AND THE ROTTERDAM BIERGARTEN print("Getting coordinates of WTC and Biergarten") wtcParams = { "f": "json", "singleLine": wtcAddress, "outFields": "Match_addr,Addr_type" } beerParams = { "f": "json", "singleLine": bierGartenAddress, "outFields": "Match_addr,Addr_type" } r = requests.post(findAddressCandidatesUrl,wtcParams)