Skip To Content

Cargar datasets para utilizarlos con ArcPy

ArcGIS Notebook Server 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 ArcGIS Notebooks

Para cargar shapefiles o geodatabases de archivos y utilizarlos con ArcPy en su notebook, siga estos pasos:

  1. Comprima el dataset que desea cargar en archivo .zip.
  2. En el visor 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 la archivo .zip de su dataset.
  5. Haga clic en Cargar.
  6. En su notebook, utilice uno de los siguientes métodos para descomprimir su 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 su 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 su 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 la sección ArcGIS Notebooks .
  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.Buffer_analysis("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("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. 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))
        #print field.name + " = " + field.type

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

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

A través de este flujo de trabajo de ejemplo, habrá creado y publicado un nuevo shapefile de zona de influencia utilizando ArcPy con un dataset cargado.

Utilizar una geodatabase de archivos cargada con ArcPy

Estos pasos describen un ejemplo de flujo de trabajo de carga de una geodatabase de archivos para usarla con ArcPy.

  1. Descargue el dataset de muestra de la página de elemento de la geodatabase de datos de Singapur.
  2. Cargue el archivo .zip que contiene la geodatabase de archivos en su espacio de trabajo de notebook. Para obtener más información sobre este proceso, consulte la sección Cargar datasets para usarlos en ArcGIS Notebooks arriba.
  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 su 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_place_fields

  8. Para cada fila del dataset, imprima los valores de campo de objectid, topónimo y dirección.

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