Caricare set di dati da usare con ArcPy

ArcGIS Notebooks consente di caricare shapefile e file geodatabase a cui è possibile accedere nei notebook per utilizzarli con ArcPy.

Caricare dataset da utilizzare in un notebook

Per caricare shapefile o file geodatabase da utilizzare con ArcPy in un notebook, procedere nel modo seguente:

  1. Comprimi il dataset che vuoi caricare in un file .zip.
  2. Nell'editor notebook, fai clic sulla scheda File.
  3. Nella scheda File, sfogliare fino a /arcgis/home.
  4. Fare clic su Scegli file e selezionare il file .zip del dataset.
  5. Fare clic su Carica.
  6. Nel notebook, usare uno dei seguenti metodi per decomprimere il file:
    1. Usare le istruzioni magiche di IPython dall'interno di una cella del notebook.
      !unzip /arcgis/home/watersheds.zip -d /arcgis/home
    2. Usa il modulo Zip Python per decomprimere il file.
      import zipfile
      with zipfile.ZipFile("/arcgis/home/watersheds.zip", "r") as zip_ref:
          zip_ref.extractall("/arcgis/home")

Per saperne di più sull'uso di ArcPy in un notebook, vedere Usare ArcPy in un notebook.

Utilizzare i set di dati caricati con ArcPy in un quaderno

Una volta caricato lo shapefile o il file geodatabase, è possibile accedervi da un notebook.

Utilizzare uno shapefile caricato con ArcPy

I seguenti passi delineano un esempio di flusso di lavoro per utilizzare lo strumento Buffer ArcPy con uno shapefile caricato:

  1. Scaricare il dataset di esempio dalla pagina dell'elemento del datasaset di avvio Python.
  2. Caricare il file .zip in un workspace del notebook seguendo la procedura indicata nella sezione Caricare dataset da utilizzare in un notebook.
  3. Importa ArcGIS API for Python e ArcPy.

    from arcgis.gis import GIS
    gis = GIS("home")
    import arcpy

  4. Decomprimere il dataset caricato nella directory del workspace.

    
    !unzip /arcgis/home/PythonStart.zip -d /arcgis/home

  5. Imposta l'area di lavoro ArcPy sul percorso della directory del file estratto.

    arcpy.env.workspace = "/arcgis/home/PythonStart"

  6. Creare un buffer di 500 metri intorno ad ogni stazione dei pompieri nel file fire_stations.shp.

    result = arcpy.analysis.Buffer("fire_stations.shp", "fire_stations_500m", "500 METERS")

  7. Genera e stampa una descrizione del risultante buffer shapefile dataset.

    # Describe the resulting shapefile dataset
    desc = arcpy.Describe("fire_stations_500m.shp")
    
    # Print dataset properties
    print(f"Dataset Type: {desc.datasetType}")
    print(f"Shape Type: {desc.shapeType}")
    print(f"Feature Type: {desc.featureType}")
    print(f"Spatial Index: {desc.hasSpatialIndex}")
    print(f"Spatial reference name: {desc.spatialReference.name}")
    print(f"Extent:\n\tXMin: {desc.extent.XMin}\n\tXMax: {desc.extent.XMax}")
    print(f"\tYMin: {desc.extent.YMin}\n\tYMax: {desc.extent.YMax}")

  8. Stampa i nomi e i tipi di campi nel buffer shapefile.

    for field in desc.fields:
        print("%-22s %s %s" % (field.name, ":", field.type))

  9. Crea un file .zip del buffer shapefile dataset.

    import os
    import fnmatch
    import zipfile
     
    # The path for listing items
    path = '/arcgis/home/PythonStart/'
    os.chdir(path)
     
    # List of files in complete directory
    file_list = []
    
    # Loop to extract files containing word "fire_stations_500m"
    for path, folders, files in os.walk(path):
        for file in files:
            if fnmatch.fnmatch(file, '*fire_stations_500m*'):
                file_list.append(file)
    
    with zipfile.ZipFile('/arcgis/home/fire_stations_500m.zip', 'w') as zipF:
        for file in file_list:
            zipF.write(file, compress_type=zipfile.ZIP_DEFLATED)

  10. Pubblicare lo shapefile del buffer come feature layer ospitato.

    item = gis.content.add({}, '/arcgis/home/fire_stations_500m.zip')
    published_item = item.publish()
    published_item.share(everyone=True)
    display(published_item)

  11. Elimina il buffer shapefile.

    arcpy.management.Delete("fire_stations_500m.shp")

Usa un geodatabase caricato con ArcPy

La procedura seguente descrive un flusso di lavoro di esempio per il caricamento di un file geodatabase da utilizzare con ArcPy.

  1. Scarica il dataset di esempio dalla pagina del geodatabase Singapore data item.
  2. Caricare il file .zip contenente il file geodatabae in un notebook seguendo la procedura indicata nella sezione Caricare dataset da utilizzare in un notebook.
  3. Importa ArcGIS API for Python e ArcPy.

    from arcgis.gis import GIS
    gis = GIS("home")
    import arcpy

  4. Decomprimere il dataset caricato in una directory del workspace.

    !unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home

  5. Imposta l'area di lavoro ArcPy sul percorso della directory del file estratto.

    arcpy.env.workspace = "/arcgis/home/Singapore_Data.gdb"

  6. Elenca i nomi delle classi di elementi contenuti nel file geodatabase.

    singapore_data = arcpy.ListFeatureClasses()
    singapore_data

  7. Elenca i campi contenuti in una delle classi di feature.

    singapore_tourist_attractions = singapore_data[2]
    singapore_tourist_attractions_fields = []
    fields = arcpy.ListFields(singapore_tourist_attractions)
    for field in fields:
        if (field.name != 'Shape'):
            singapore_tourist_attractions_fields.append(field.name)
    singapore_tourist_attractions_fields

  8. Per ogni riga del dataset, stampare i valori dei campi objectid, place-name e address.

    with arcpy.da.SearchCursor(singapore_tourist_attractions, singapore_tourist_attractions_fields) as cursor:
        for row in cursor:
            print(f'{row[0]}. {row[1]}, {row[2]}')