es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer que R lea un archivo gdb?

Estoy intentando que R lea un archivo gdb. Lo primero que hice fue averiguar sus capas, lo cual logré ejecutando:

ogrListLayers("mi_datos.gdb")

Resultó que my_data tiene dos capas grandes. He intentado abrir ambas, pero no he tenido éxito. Esto es lo que he intentado hasta ahora:

1)

Wont_open <- readOGR(dsn = "D:/mi_datos.gdb", layer = "capa_1", dropNULLGeometries = F)

He intentado lo anterior tanto con como sin la argumento “dropNULLGeometries” y para ambas capas en my_data. Al ejecutar esto, obtengo el siguiente error:

Error in readOGR(dsn = "D:/mi_datos.gdb", : Unsupported field type: Binary

2)

No_abre <- st_read(dsn="D:/mi_datos.gdb", layer = "capa_1")

He intentado lo anterior para ambas capas en my_data. Cuando ejecuto esto, R simplemente deja de funcionar después de aproximadamente una hora de haber iniciado el proceso.

3)

read_GDB_Layer <- function(dsn, layerName, overwrite = T){
conversionDir <- tempdir() 

gdalUtils::ogr2ogr(src_datasource_name = dsn, dst_datasource_name = conversionDir, f = "ESRI Shapefile", layer + layerName, verbose = T, overwrite = overwrite) 

df <- read.dbf(file.path(conversionDir, paste0(layerName, ".gdbtable"))) 

return(df)}

Luego,

Wont_open <- read_GDB_Layer(dsn = "D:/mi_datos.gdb", layerName = "capa_1")

He probado esto para ambas capas y cambié el argumento “.gdbtable” de la función a “.dbf” para ejecutarlo en ambas capas y aún así no funcionó. Obtuve los siguientes mensajes de advertencia:

1: In gdal_setInstallation(search_path = NULL, rescan = FALSE, ignore.full_scan = TRUE,  :
  No GDAL installation found. Please install 'gdal' before continuing:
    - www.gdal.org (no HDF4 support!)
    - trac.osgeo.org/osgeo4w/ (with HDF4 support RECOMMENDED)
    - www.fwtools.maptools.org (with HDF4 support)

2: In gdal_setInstallation(search_path = NULL, rescan = FALSE, ignore.full_scan = TRUE,  :
  If you think GDAL is installed, please run:
gdal_setInstallation(ignore.full_scan=FALSE)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo problemas para leer un archivo gdb en R usando los paquetes disponibles. El error que recibiste indica que el tipo de campo en tu archivo no es compatible. Una posible solución para tu problema podría ser intentar convertir el archivo gdb en un archivo de shapefile y luego leerlo usando los paquetes sf o rgdal.

    Puedes usar el siguiente código para convertir el archivo gdb en un archivo de shapefile:

    gdalUtils::ogr2ogr(src_datasource_name = "D:/my_data.gdb", dst_datasource_name = "D:/my_data.shp", f = "ESRI Shapefile", verbose = T)
    

    Después de convertir el archivo, puedes intentar leerlo usando sf o rgdal:

    # Leyendo con sf
    my_data <- sf::st_read("D:/my_data.shp")
    
    # Leyendo con rgdal
    my_data <- rgdal::readOGR("D:/my_data.shp", layer = "layer_1")
    

    Esto debería ayudarte a leer tus datos exitosamente. Si todavía encuentras errores, revisa que hayas instalado las dependencias necesarias (como GDAL).

Comments are closed.