Skip To Content

Hochladen von Datasets zur Verwendung mit ArcPy

ArcGIS Notebook Server ermöglicht das Hochladen von Shapefiles und File-Geodatabases, auf die Sie dann in Notebooks zugreifen können, um sie mit ArcPy zu verwenden.

Hochladen von Datasets zur Verwendung in ArcGIS Notebooks

Gehen Sie wie folgt vor, um Shapefiles oder File-Geodatabases zur Verwendung mit ArcPy in Ihr Notebook hochzuladen:

  1. Komprimieren Sie das Dataset, das Sie hochladen möchten, in eine .zip-Datei.
  2. Klicken Sie im Notebook-Viewer auf die Registerkarte Dateien.
  3. Navigieren Sie auf der Registerkarte Dateien zu /arcgis/home.
  4. Klicken Sie auf Datei auswählen, und wählen Sie die .zip-Datei mit Ihrem Dataset aus.
  5. Klicken Sie auf Hochladen.
  6. Entpacken Sie die Datei in Ihrem Notebook mit einer der folgenden Methoden:
    1. Verwenden Sie IPython Magic-Anweisungen in einer Notebook-Zelle.
      !unzip /arcgis/home/watersheds.zip -d /arcgis/home
    2. 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")

Weitere Informationen zum Verwenden von ArcPy in Ihrem Notebook finden Sie unter Verwenden von ArcPy in einem Notebook.

Verwenden von hochgeladenen Datasets mit ArcPy in einem Notebook

Nachdem Sie das Shapefile oder die File-Geodatabase hochgeladen haben, können Sie über Ihr 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:

  1. Laden Sie das Beispiel-Dataset von der Elementseite des PythonStart-Datasets herunter.
  2. Laden Sie die .zip-Datei in Ihren Notebook-Workspace hoch. Verwenden Sie dabei die Schritte aus dem Abschnitt Hochladen von Datasets zur Verwendung in ArcGIS Notebooks.
  3. Importieren Sie ArcGIS API for Python und ArcPy.

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

  4. Entpacken Sie das Dataset, das Sie in Ihr Workspace-Verzeichnis hochgeladen haben.

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

  5. Legen Sie den ArcPy-Workspace auf den Verzeichnispfad der extrahierten Datei fest.

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

  6. Erstellen Sie einen Puffer von 500 Meter um jede Feuerwache in der Datei fire_stations.shp.

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

  7. 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("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)))

  8. Drucken Sie die Namen und Typen von Feldern im Puffer-Shapefile.

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

  9. Erstellen Sie eine .zip-Datei des Puffer-Shapefile-Datasets.

    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)

  10. 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)

  11. Löschen Sie das Puffer-Shapefile.

    arcpy.Delete_management("fire_stations_500m.shp")

In diesem Beispiel-Workflow haben Sie ein neues Puffer-Shapefile mithilfe von ArcPy mit einem hochgeladenen Dataset erstellt und veröffentlicht.

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.

  1. Laden Sie das Beispiel-Dataset von der Elementseite der Geodatabase mit Daten zu Singapur herunter.
  2. Laden Sie die .zip-Datei, die die File-Geodatabase enthält, in Ihren Notebook-Workspace hoch. Weitere Informationen zu diesem Prozess finden Sie oben im Abschnitt Hochladen von Datasets zur Verwendung in ArcGIS Notebooks.
  3. Importieren Sie ArcGIS API for Python und ArcPy.

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

  4. Entpacken Sie das Dataset, das Sie in Ihr Workspace-Verzeichnis hochgeladen haben.

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

  5. Legen Sie den ArcPy-Workspace auf den Verzeichnispfad der extrahierten Datei fest.

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

  6. Listen Sie die Namen der Feature-Classes auf, die in der File-Geodatabase enthalten sind.

    singapore_data = arcpy.ListFeatureClasses()
    singapore_data

  7. 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_place_fields

  8. Drucken Sie für jede Zeile im Dataset die Werte für ObjectID, Ortsname und Adressenfeld.

    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]))