🗺 Automatización de Geodatabases en ArcGIS con ArcPy
En este tutorial aprenderás cómo automatizar la creación, clonación y configuración de Geodatabases usando ArcPy.
Trabajaremos en dos partes:
- Creación de GDB, Feature Dataset, Feature Class y Campos
- Clonado de Geodatabases (con y sin datos)
🗂 Parte 1 — Creación de una GDB, Dataset y Feature Class con Campos en ArcPy
1️⃣ Configuración de rutas y nombres
import arcpy
import os
ruta_carpeta = r"Ruta de la carpeta donde se almacenará la GBD"
nombre_gdb = "Nombre.gdb" #Debe tener siempre la extensión .gdb
ruta_gdb = os.path.join(ruta_carpeta, nombre_gdb)
📌 Aquí definimos:
- La carpeta donde se creará la Geodatabase.
- El nombre de la GDB.
- La ruta completa usando os.path.join() para mayor compatibilidad.
2️⃣ Creación de la Geodatabase (GDB)
if not arcpy.Exists(ruta_gdb):
arcpy.CreateFileGDB_management(ruta_carpeta, nombre_gdb)
print("GDB Creada con éxito en la ruta {}".format(ruta_gdb))
else:
print("La GDB ya existe")
💡 Verificamos si la GDB ya existe.
- Si no existe, la creamos con arcpy.CreateFileGDB_management().
- Si ya existe, mostramos un mensaje informativo.
3️⃣ Creación del Feature Dataset
spatial_ref = r"ruta del archivo 9377.prj"
nombre_dataset = 'Nombre_dataset'
ruta_dataset = os.path.join(ruta_gdb, nombre_dataset)
if not arcpy.Exists(ruta_dataset):
arcpy.CreateFeatureDataset_management(ruta_gdb, nombre_dataset, spatial_ref)
print("Dataset creado con éxito en la ruta: {}".format(ruta_dataset))
else:
print("El dataset ya existe")
📌 Un Feature Dataset agrupa varias capas con la misma referencia espacial.
- Usamos un archivo .prj para definir el sistema de coordenadas.
- Se crea solo si no existe.
4️⃣ Creación de la Feature Class
nombre_fc = "Nombre_capa"
ruta_fc = os.path.join(ruta_dataset, nombre_fc)
if not arcpy.Exists(ruta_fc):
arcpy.CreateFeatureclass_management(ruta_dataset, nombre_fc, "POLYGON", spatial_reference=spatial_ref)
print("Feature Class '{}' creada con éxito".format(nombre_fc))
else:
print("La Feature Class '{}' ya existe".format(nombre_fc))
📌 Creamos una Feature Class del tipo POLYGON para almacenar predios.
- Definimos la referencia espacial.
- Se crea solo si no existe.
5️⃣ Agregar campos a la tabla de atributos
campos = [
("NUMERO_PREDIAL", "TEXT", 30),
("CODIGO_CATASTRAL", "TEXT", 20),
("DIRECCION", "TEXT", 50),
("PROPIETARIO", "TEXT", 50),
("AREA_OFICIAL", "DOUBLE", None),
("AREA_CALCULADA", "DOUBLE", None)
]
for nombre_campo, tipo, longitud in campos:
if nombre_campo not in [f.name for f in arcpy.ListFields(ruta_fc)]:
if longitud:
arcpy.AddField_management(ruta_fc, nombre_campo, tipo, field_length=longitud)
else:
arcpy.AddField_management(ruta_fc, nombre_campo, tipo)
print("Campo '{}' agregado a {}".format(nombre_campo, nombre_fc))
else:
print("El campo '{}' ya existe".format(nombre_campo))
📌 Añadimos los campos requeridos para el manejo de datos catastrales.
- Campos de texto (TEXT) con longitudes específicas.
- Campos numéricos (DOUBLE) sin longitud definida.
- Solo se agregan si no existen previamente.
🎥 Video recomendado: Creación de una GDB, Dataset y Feature Class con Campos en ArcPy
Descarga el archivo aquí...
📦 Parte 2 — Clonado de Geodatabases con ArcPy
En esta sección aprenderemos dos formas de clonar una Geodatabase usando ArcPy:
- Clonado completo (estructura + datos)
- Clonado de solo la estructura (sin datos), usando exportación e importación a través de un archivo XML.
1️⃣ Clonar todo (datos + estructura)
import arcpy
gdb_origen = r"RUTA_GDB_ORIGEN"
gdb_destino = r"RUTA_GDB_DESTINO"
arcpy.Copy_management(gdb_origen, gdb_destino)
print("GDB copiada a: {}".format(gdb_destino))
💡 Tip: Este método crea una copia exacta de la geodatabase, ideal para respaldos o migraciones rápidas.
2️⃣ Clonar solo la estructura (sin datos)
A veces necesitamos duplicar solo la estructura (datasets, feature classes, dominios, subtipos, relaciones) sin transferir datos. Esto se logra exportando el esquema a un archivo XML y luego importándolo en una nueva GDB vacía.
Exportar estructura a XML
import arcpy
xml_salida = r"RUTA_AL_ARCHIVO\\XML_ESQUEMA.xml"
arcpy.ExportXMLWorkspaceDocument_management(
gdb_origen,
xml_salida,
"SCHEMA_ONLY"
)
print("Estructura exportada a: {}".format(xml_salida))
Crear nueva GDB e importar estructura
import arcpy
ruta_carpeta_destino = r"RUTA_DE_CARPETA_DESTINO"
nombre_gdb_destino = "NOMBRE_GDB_DESTINO.gdb"
arcpy.CreateFileGDB_management(ruta_carpeta_destino, nombre_gdb_destino)
nueva_gdb = ruta_carpeta_destino + "\\" + nombre_gdb_destino
arcpy.ImportXMLWorkspaceDocument_management(
nueva_gdb,
xml_salida,
"SCHEMA_ONLY"
)
print("Estructura importada en: {}".format(nueva_gdb))
🎥 Video recomendado: Clonado de Geodatabases con ArcPy
Descarga el archivo aquí...
📌 Conclusión
La automatización de procesos en ArcGIS Pro y ArcMap con Python no solo ahorra tiempo y esfuerzo, sino que también garantiza la estandarización de los flujos de trabajo. La creación de datasets, el llenado de tablas y la manipulación de datos pueden convertirse en tareas repetitivas y propensas a errores si se realizan manualmente. Implementar scripts permite ejecutar estas operaciones de forma precisa, reproducible y con la flexibilidad necesaria para adaptarse a diferentes proyectos. En un entorno profesional, esta eficiencia se traduce en mejores resultados y mayor productividad para cualquier equipo GIS.
¿Quieres más?
Si te interesa aprender cómo visualizar estos servicios desde Python, Colab o un visor web, puedes suscribirte a nuestro canal de YouTube FD-SIG Soluciones o seguir este blog para futuros tutoriales.
Etiquetas: ArcGIS, Python, Geodatabase, GDB, SIG, GIS, arcpy, ESRI, shapefile, feature class, datos espaciales, cartografía, análisis geoespacial, gestión de datos, renombrar geodatabase, eliminar geodatabase, crear geodatabase, Python GIS, ArcGIS Pro, ArcMap, XML workspace, exportar GDB, importar GDB, visualización SIG, ArcGIS Online, geoprocesamiento, bases de datos espaciales, SIG Python, tutorial ArcGIS, scripts arcpy