Mit ArcGIS Notebooks können Sie Shapefiles und File-Geodatabases hochladen und in Notebooks auf diese zugreifen, um sie mit ArcPy zu verwenden.
Hochladen von Datasets zur Verwendung in einem Notebook
Gehen Sie folgendermaßen vor, um Shapefiles oder File-Geodatabases zur Verwendung mit ArcPy in ein Notebook hochzuladen:
- Komprimieren Sie das Dataset, das Sie hochladen möchten, in eine .zip-Datei.
- Klicken Sie im Notebook-Editor auf die Registerkarte Dateien.
- Navigieren Sie auf der Registerkarte Dateien zu /arcgis/home.
- Klicken Sie auf Datei auswählen, und wählen Sie die .zip-Datei mit dem Dataset aus.
- Klicken Sie auf Hochladen.
- Entpacken Sie die Datei im Notebook mit einer der folgenden Methoden:
- Verwenden Sie IPython Magic-Anweisungen in einer Notebook-Zelle.
!unzip /arcgis/home/watersheds.zip -d /arcgis/home
- Verwenden Sie das ZIP-Modul in Python, um die Datei zu entpacken.
import zipfile with zipfile.ZipFile("/arcgis/home/watersheds.zip", "r") as zip_ref: zip_ref.extractall("/arcgis/home")
- Verwenden Sie IPython Magic-Anweisungen in einer Notebook-Zelle.
Weitere Informationen zum Verwenden von ArcPy in einem Notebook finden Sie unter Verwenden von ArcPy in einem Notebook.
Verwenden von hochgeladenen Datasets mit ArcPy in einem Notebook
Nachdem Sie ein Shapefile oder eine File-Geodatabase hochgeladen haben, können Sie über ein Notebook darauf zugreifen.
Verwenden eines hochgeladenen Shapefile mit ArcPy
In den folgenden Schritten wird ein Beispiel-Workflow für die Verwendung des Werkzeugs "Puffer" von ArcPy mit einem hochgeladenen Shapefile erläutert:
- Laden Sie das Beispiel-Dataset von der Elementseite des PythonStart-Datasets herunter.
- Laden Sie die .zip-Datei in einen Notebook-Workspace hoch, wie in den Schritten im Abschnitt Hochladen von Datasets zur Verwendung in einem Notebook oben beschrieben.
- Importieren Sie ArcGIS API for Python und ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Entpacken Sie das Dataset, das Sie in das Workspace-Verzeichnis hochgeladen haben.
!unzip /arcgis/home/PythonStart.zip -d /arcgis/home
- Legen Sie den ArcPy-Workspace auf den Verzeichnispfad der extrahierten Datei fest.
arcpy.env.workspace = "/arcgis/home/PythonStart"
- Erstellen Sie einen Puffer von 500 Meter um jede Feuerwache in der Datei fire_stations.shp.
result = arcpy.analysis.Buffer("fire_stations.shp", "fire_stations_500m", "500 METERS")
- Generieren und drucken Sie eine Beschreibung des resultierenden Puffer-Shapefile-Datasets.
# 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}")
- Drucken Sie die Namen und Typen von Feldern im Puffer-Shapefile.
for field in desc.fields: print("%-22s %s %s" % (field.name, ":", field.type))
- Erstellen Sie eine .zip-Datei des Puffer-Shapefile-Datasets.
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)
- Veröffentlichen Sie das Puffer-Shapefile als gehosteten Feature-Layer.
item = gis.content.add({}, '/arcgis/home/fire_stations_500m.zip') published_item = item.publish() published_item.share(everyone=True) display(published_item)
- Löschen Sie das Puffer-Shapefile.
arcpy.management.Delete("fire_stations_500m.shp")
Verwenden einer hochgeladenen File-Geodatabase mit ArcPy
In den folgenden Schritten wird ein Beispiel-Workflow für das Hochladen einer File-Geodatabase zur Verwendung mit ArcPy erläutert.
- Laden Sie das Beispiel-Dataset von der Elementseite der Geodatabase mit Daten zu Singapur herunter.
- Laden Sie die .zip-Datei mit der File-Geodatabase in ein Notebook hoch, wie in den Schritten im Abschnitt Hochladen von Datasets zur Verwendung in einem Notebook oben beschrieben.
- Importieren Sie ArcGIS API for Python und ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Entpacken Sie das Dataset, das Sie in ein Workspace-Verzeichnis hochgeladen haben.
!unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home
- Legen Sie den ArcPy-Workspace auf den Verzeichnispfad der extrahierten Datei fest.
arcpy.env.workspace = "/arcgis/home/Singapore_Data.gdb"
- Listen Sie die Namen der Feature-Classes auf, die in der File-Geodatabase enthalten sind.
singapore_data = arcpy.ListFeatureClasses() singapore_data
- Listen Sie die Felder auf, die in einer der Feature-Classes enthalten sind.
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
- Drucken Sie für jede Zeile im Dataset die Werte für Objekt-ID, Ortsname und Adressenfeld.
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]}')