Cargar datasets para utilizarlos con ArcPy

ArcGIS Notebooks le permite cargar shapefiles y geodatabases de archivos a los que se puede acceder desde sus notebooks para utilizarlos con ArcPy.

Cargar datasets para utilizarlos en un notebook

Para cargar shapefiles o geodatabases de archivos y utilizarlos con ArcPy en su notebook, realice lo siguiente:

  1. Comprima el dataset que desea cargar en archivo .zip.
  2. En el editor de notebook, haga clic en la pestaña Archivos.
  3. En la pestaña Archivos, vaya a /arcgis/home.
  4. Haga clic en Elegir archivo y seleccione el archivio .zip de su dataset.
  5. Haga clic en Cargar.
  6. En el notebook, utilice uno de los siguientes métodos para descomprimir el archivo:
    1. Utilice sentencias mágicas de IPython dentro de una celda del notebook.
      !unzip /arcgis/home/watersheds.zip -d /arcgis/home
    2. Utilice el módulo zip Python para descomprimir el archivo.
      import zipfile
      with zipfile.ZipFile("/arcgis/home/watersheds.zip", "r") as zip_ref:
          zip_ref.extractall("/arcgis/home")

Para obtener más información sobre cómo utilizar ArcPy en un notebook, consulte Usar ArcPy en un notebook.

Utilice datasets cargados con ArcPy en un notebook

Una vez que haya cargado el shapefile o geodatabase de archivos, puede acceder a él desde un notebook.

Usar un shapefile cargado con ArcPy

Los siguientes pasos describen un ejemplo de flujo de trabajo del uso de la herramienta Zona de influencia de ArcPy con un shapefile cargado:

  1. Descargue el dataset de muestra de la página de elemento del dataset de inicio de Python.
  2. Cargue el archivo .zip en el espacio de trabajo de su notebook siguiendo los pasos que se indican en la sección Cargar datasets para utilizarlos en un notebook anterior.
  3. Importe ArcGIS API for Python y ArcPy.

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

  4. Descomprima el dataset que cargó en el directorio del espacio de trabajo.

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

  5. Defina el espacio de trabajo de ArcPy en la ruta del directorio del archivo extraído.

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

  6. Cree una zona de influencia de 500 metros alrededor de cada estación de bomberos en el archivo fire_stations.shp.

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

  7. Genere e imprima una descripción del dataset de shapefile de zona de influencia resultante.

    # 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. Imprima los nombres y tipos de campos en el shapefile de zona de influencia.

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

  9. Cree un archivo .zip del dataset shapefile de zona de influencia.

    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. Publique el shapefile de zona de influencia como una capa de entidades alojada.

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

  11. Elimine el shapefile de zona de influencia.

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

Utilizar una geodatabase de archivos cargada con ArcPy

Los siguientes pasos describen un flujo de trabajo de ejemplo para cargar una geodatabase de archivos para usar con ArcPy.

  1. Descargue el dataset de muestra de la página de elemento de la geodatabase de datos de Singapur.
  2. Cargue en el notebook el archivo .zip que contiene la geodatabase de archivos siguiendo los pasos indicados en la sección Cargar datasets para utilizarlos en un notebook anterior.
  3. Importe ArcGIS API for Python y ArcPy.

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

  4. Descomprima el dataset que cargó en el directorio de un espacio de trabajo.

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

  5. Defina el espacio de trabajo de ArcPy en la ruta del directorio del archivo extraído.

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

  6. Enumere los nombres de las clases de entidad contenidas dentro de la geodatabase de archivos.

    singapore_data = arcpy.ListFeatureClasses()
    singapore_data

  7. Enumere los campos contenidos en una de las clases de entidad.

    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. Para cada fila del dataset, imprima los valores de campo de object ID, topónimo y dirección.

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