Skip To Content

Caricare set di dati da usare con ArcPy

ArcGIS Notebook Server consente di caricare geodatabase di shapefile e file a cui è possibile accedere negli appunti per essere utilizzati con ArcPy.

Caricare dataset da utilizzare in un notebook

Per caricare geodatabase di shapefile o file da utilizzare con ArcPy nel notebook, procedi 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. Clicca su Scegli file e seleziona il file .zip del tuo dataset.
  5. Fare clic su Carica.
  6. Nel tuo notebook, usa uno dei seguenti metodi per decomprimere il tuo 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 nel tuo notebook, vedi Usare ArcPy in un notebook.

Utilizzare i set di dati caricati con ArcPy in un quaderno

Una volta che hai caricato il tuo shapefile o file geodatabase, puoi accedervi dal tuo 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. Scarica il set di dati di esempio dalla pagina dell'elemento Python start dataset.
  2. Carica il file .zip nel 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. Decomprimi il dataset che hai caricato nella directory del tuo spazio di lavoro.

    
    !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")

Attraverso questo flusso di lavoro di esempio, avrai creato e pubblicato un nuovo buffer shapefile utilizzando ArcPy con un set di dati caricato.

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. Carica il file .zip contenente il geodatabae di file nel 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. Decomprimete il set di dati caricato nella vostra directory dell'area di lavoro.

    !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 set di dati, stampa 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]}')