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 un notebook
Para cargar shapefiles o geodatabases de archivos y utilizarlos con ArcPy en su notebook, realice lo siguiente:
- Comprima el dataset que desea cargar en archivo .zip.
- En el editor de notebook, haga clic en la pestaña Archivos.
- En la pestaña Archivos, vaya a /arcgis/home.
- Haga clic en Elegir archivo y seleccione la archivo .zip de su dataset.
- Haga clic en Cargar.
- En su notebook, utilice uno de los siguientes métodos para descomprimir su archivo:
- Utilice sentencias mágicas de IPython dentro de una celda del notebook.
!unzip /arcgis/home/watersheds.zip -d /arcgis/home
- 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")
- Utilice sentencias mágicas de IPython dentro de una celda del notebook.
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:
- Descargue el dataset de muestra de la página de elemento del dataset de inicio de Python.
- 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.
- Importe ArcGIS API for Python y ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Descomprima el dataset que cargó en el directorio del espacio de trabajo.
!unzip /arcgis/home/PythonStart.zip -d /arcgis/home
- Defina el espacio de trabajo de ArcPy en la ruta del directorio del archivo extraído.
arcpy.env.workspace = "/arcgis/home/PythonStart"
- 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")
- 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}")
- 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))
- 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)
- 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)
- Elimine el shapefile de zona de influencia.
arcpy.management.Delete("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
Los siguientes pasos describen un flujo de trabajo de ejemplo para cargar una geodatabase de archivos para usar con ArcPy.
- Descargue el dataset de muestra de la página de elemento de la geodatabase de datos de Singapur.
- Cargue en su 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.
- Importe ArcGIS API for Python y ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Descomprima el dataset que cargó en el directorio de su espacio de trabajo.
!unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home
- Defina el espacio de trabajo de ArcPy en la ruta del directorio del archivo extraído.
arcpy.env.workspace = "/arcgis/home/Singapore_Data.gdb"
- Enumere los nombres de las clases de entidad contenidas dentro de la geodatabase de archivos.
singapore_data = arcpy.ListFeatureClasses() singapore_data
- 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
- 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(f'{row[0]}. {row[1]}, {row[2]}')