ArcGIS Notebooks 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:
- Comprimi il dataset che vuoi caricare in un file .zip.
- Nell'editor notebook, fai clic sulla scheda File.
- Nella scheda File, sfogliare fino a /arcgis/home.
- Clicca su Scegli file e seleziona il file .zip del tuo dataset.
- Fare clic su Carica.
- Nel tuo notebook, usa uno dei seguenti metodi per decomprimere il tuo file:
- Usare le istruzioni magiche di IPython dall'interno di una cella del notebook.
!unzip /arcgis/home/watersheds.zip -d /arcgis/home
- 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")
- Usare le istruzioni magiche di IPython dall'interno di una cella del notebook.
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:
- Scarica il set di dati di esempio dalla pagina dell'elemento Python start dataset.
- Carica il file .zip nel workspace del notebook seguendo la procedura indicata nella sezione Caricare dataset da utilizzare in un notebook.
- Importa ArcGIS API for Python e ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Decomprimi il dataset che hai caricato nella directory del tuo spazio di lavoro.
!unzip /arcgis/home/PythonStart.zip -d /arcgis/home
- Imposta l'area di lavoro ArcPy sul percorso della directory del file estratto.
arcpy.env.workspace = "/arcgis/home/PythonStart"
- Creare un buffer di 500 metri intorno ad ogni stazione dei pompieri nel file fire_stations.shp.
result = arcpy.Buffer_analysis("fire_stations.shp", "fire_stations_500m", "500 METERS")
- 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("Feature Type: " + desc.featureType) print("Shape Type : " + desc.shapeType) print("Spatial Index: " + str(desc.hasSpatialIndex)) print(("Dataset Type: {0}".format(desc.datasetType))) print(("Extent:\n XMin: {0}, XMax: {1}, YMin: {2}, YMax: {3}".format( desc.extent.XMin, desc.extent.XMax, desc.extent.YMin, desc.extent.YMax))) print(("Spatial reference name: {0}:".format(desc.spatialReference.name)))
- Stampa i nomi e i tipi di campi nel buffer shapefile.
for field in desc.fields: print("%-22s %s %s" % (field.name, ":", field.type)) #print field.name + " = " + field.type
- Crea un file .zip del buffer shapefile dataset.
import os, 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)
- 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)
- Elimina il buffer shapefile.
arcpy.Delete_management("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.
- Scarica il dataset di esempio dalla pagina del geodatabase Singapore data item.
- Carica il file .zip contenente il geodatabae di file nel notebook seguendo la procedura indicata nella sezione Caricare dataset da utilizzare in un notebook.
- Importa ArcGIS API for Python e ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Decomprimete il set di dati caricato nella vostra directory dell'area di lavoro.
!unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home
- Imposta l'area di lavoro ArcPy sul percorso della directory del file estratto.
arcpy.env.workspace = "/arcgis/home/Singapore_Data.gdb"
- Elenca i nomi delle classi di elementi contenuti nel file geodatabase.
singapore_data = arcpy.ListFeatureClasses() singapore_data
- 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
- 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(u'{0}, {1}, {2}'.format(row[0], row[1], row[2]))