Пример #1
0
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
Пример #2
0
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")
Пример #3
0
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"]))
Пример #4
0
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)