sf
sf copied to clipboard
st_read() cannot find raster layer in geodatabase
Hi,
I have tried to read a .gdb folder using st_read(), and got the following error:
ras <- read_sf(dsn = "DC_slr_final_dist_rasters.gdb") Error in CPL_read_ogr(dsn, layer, query, as.character(options), quiet, : No layers in datasource.
I got a consistent error from using st_layers() as well:
st_layers(dsn = "DC_slr_final_dist_rasters.gdb") Error in max(sapply(x$geomtype, length)) : invalid 'type' (list) of argument
I opened the data in ArcMap and can confirm that it contains layers. The data can be downloaded from: https://coast.noaa.gov/htdata/Inundation/SLR/SLRdata/DC/DC_slr_raster_data_dist.zip
Could you help me with this issue? Thank you very much.
Best, Penny
For me both commands don't result in error messages. I also see
> st_drivers()["OpenFileGDB",]
name long_name write copy is_raster is_vector vsi
OpenFileGDB OpenFileGDB ESRI FileGDB FALSE FALSE FALSE TRUE TRUE
what does this command give for you?
I see:
> library(sf)
Linking to GEOS 3.10.2, GDAL 3.5.0dev-33f49c1ed0, PROJ 9.0.0; sf_use_s2() is TRUE
> st_layers("DC_slr_final_dist_rasters.gdb")
Driver: OpenFileGDB
Available layers:
layer_name geometry_type features fields
1 DC_slr_depth_0ft Multi Polygon 1 3
2 DC_slr_depth_10ft Multi Polygon 1 3
3 DC_slr_depth_1ft Multi Polygon 1 3
4 DC_slr_depth_2ft Multi Polygon 1 3
5 DC_slr_depth_3ft Multi Polygon 1 3
6 DC_slr_depth_4ft Multi Polygon 1 3
7 DC_slr_depth_5ft Multi Polygon 1 3
8 DC_slr_depth_6ft Multi Polygon 1 3
9 DC_slr_depth_7ft Multi Polygon 1 3
10 DC_slr_depth_8ft Multi Polygon 1 3
11 DC_slr_depth_9ft Multi Polygon 1 3
12 fras_aux_DC_slr_depth_0ft NA 1 3
13 fras_aux_DC_slr_depth_10ft NA 1 3
14 fras_aux_DC_slr_depth_1ft NA 1 3
15 fras_aux_DC_slr_depth_2ft NA 1 3
16 fras_aux_DC_slr_depth_3ft NA 1 3
17 fras_aux_DC_slr_depth_4ft NA 1 3
18 fras_aux_DC_slr_depth_5ft NA 1 3
19 fras_aux_DC_slr_depth_6ft NA 1 3
20 fras_aux_DC_slr_depth_7ft NA 1 3
21 fras_aux_DC_slr_depth_8ft NA 1 3
22 fras_aux_DC_slr_depth_9ft NA 1 3
23 fras_blk_DC_slr_depth_0ft NA 292 6
24 fras_blk_DC_slr_depth_10ft NA 343 6
25 fras_blk_DC_slr_depth_1ft NA 295 6
26 fras_blk_DC_slr_depth_2ft NA 296 6
27 fras_blk_DC_slr_depth_3ft NA 300 6
28 fras_blk_DC_slr_depth_4ft NA 306 6
29 fras_blk_DC_slr_depth_5ft NA 309 6
30 fras_blk_DC_slr_depth_6ft NA 315 6
31 fras_blk_DC_slr_depth_7ft NA 321 6
32 fras_blk_DC_slr_depth_8ft NA 328 6
33 fras_blk_DC_slr_depth_9ft NA 337 6
34 fras_bnd_DC_slr_depth_0ft NA 1 18
35 fras_bnd_DC_slr_depth_10ft NA 1 18
36 fras_bnd_DC_slr_depth_1ft NA 1 18
37 fras_bnd_DC_slr_depth_2ft NA 1 18
38 fras_bnd_DC_slr_depth_3ft NA 1 18
39 fras_bnd_DC_slr_depth_4ft NA 1 18
40 fras_bnd_DC_slr_depth_5ft NA 1 18
41 fras_bnd_DC_slr_depth_6ft NA 1 18
42 fras_bnd_DC_slr_depth_7ft NA 1 18
43 fras_bnd_DC_slr_depth_8ft NA 1 18
44 fras_bnd_DC_slr_depth_9ft NA 1 18
45 fras_ras_DC_slr_depth_0ft NA 1 3
46 fras_ras_DC_slr_depth_10ft NA 1 3
47 fras_ras_DC_slr_depth_1ft NA 1 3
48 fras_ras_DC_slr_depth_2ft NA 1 3
49 fras_ras_DC_slr_depth_3ft NA 1 3
50 fras_ras_DC_slr_depth_4ft NA 1 3
51 fras_ras_DC_slr_depth_5ft NA 1 3
52 fras_ras_DC_slr_depth_6ft NA 1 3
53 fras_ras_DC_slr_depth_7ft NA 1 3
54 fras_ras_DC_slr_depth_8ft NA 1 3
55 fras_ras_DC_slr_depth_9ft NA 1 3
but think that - from the file name - most of the data is raster not vector. It isn't obvious how to read such a FileGDB with GDAL drivers. Does the data provider offer GeoTiff or other alternatives? rgdal::readOGR() sees binary field type "Binary" when trying to read NULL geometry features.
Fra: https://stackoverflow.com/questions/27821571/working-with-rasters-in-file-geodatabase-gdb-with-gdal and https://github.com/r-barnes/ArcRasterRescue:
./arc_raster_rescue.exe ~/tmp/bigshape/DC_slr_final_dist_rasters.gdb/
Arc Raster Rescue (url=github.com/r-barnes/ArcRasterRescue, hash=8e126e0ca17acc6f, compiled=2022-04-16 13:20:39)
Rasters found:
0 DC_slr_depth_0ft
1 DC_slr_depth_1ft
2 DC_slr_depth_2ft
3 DC_slr_depth_3ft
4 DC_slr_depth_4ft
5 DC_slr_depth_5ft
6 DC_slr_depth_6ft
7 DC_slr_depth_10ft
8 DC_slr_depth_7ft
9 DC_slr_depth_8ft
10 DC_slr_depth_9ft
Output from conversion: DC_slr_final_dist_.zip Each band is almost 250MB, so no compression used in the geotiffs.
Unfortunately, all the raster values are missing. The data provider must make the data available to those without an Arc license in a different format.
@edzer I got exactly the same output from this command:
st_drivers()["OpenFileGDB",] name long_name write copy is_raster is_vector vsi OpenFileGDB OpenFileGDB ESRI FileGDB FALSE FALSE FALSE TRUE TRUE
For me both commands don't result in error messages. I also see
> st_drivers()["OpenFileGDB",] name long_name write copy is_raster is_vector vsi OpenFileGDB OpenFileGDB ESRI FileGDB FALSE FALSE FALSE TRUE TRUEwhat does this command give for you?
@rsbivand Thanks for looking into this. Yes, they are raster data and there are no geotiff alternatives by the data provider. Based on what you found with the conversion, is my understanding correct that I cannot read this data using sf unless I somehow save it in another format in ArcMap?
You could read a GeoTiff or other GDAL-compatible format in stars, terra or similar packages handling raster data; sf is for vector data.
See https://mastodon.social/@EvenRouault/109993230083314079 - GDAL 3.7.0 will have this.