[GRASS-dev] Re: [STATSGRASS] cant read raster created with r.neighbours

Roger Bivand Roger.Bivand at nhh.no
Thu Jul 26 13:39:47 EDT 2007


CC-ed to GRASS-dev, short file name buffer issue in 
raster/r.out.bin/main.c line 225:

On Thu, 26 Jul 2007, Carlos "Guâno" Grohmann wrote:

> Here is the debug output:
>
>>  debug(readBinGrid)
>>  slopeavg<-readRAST6("dem3arcsec_srtm_reprojected_slope_avg2")
> Creating BIL support files ...
> Header File = .wld
> World File =
> /home/guano/grassdata/srtm_krig_utm/death_valley/.tmp/eclipse/dem3arcsec_srtm_reprojected_slope_avg2.wld
> Exporting Raster as floating values (bytes=4)
> Using the Current Region settings ...
> north=4031000.000000
> south=4002650.000000
> east=494850.000000
> west=466500.000000
> r=315
> c=315
> 100%
> debugging in: readBinGrid(rtmpfl11, colname = vname[i], proj4string =
> p4, integer = to_int)
> debug: {
>    if (missing(integer))
>        stop("integer TRUE/FALSE required")
>    if (!file.exists(fname))
>        stop(paste("no such file:", fname))
>    if (!file.exists(paste(fname, "hdr", sep = ".")))
>        stop(paste("no such file:", paste(fname, "hdr", sep = ".")))
>    if (!file.exists(paste(fname, "wld", sep = ".")))
>        stop(paste("no such file:", paste(fname, "wld", sep = ".")))
>    con <- file(paste(fname, "hdr", sep = "."), "r")
>    l8 <- readLines(con, n = 8)
>    close(con)
>    l8 <- read.dcf(textConnection(gsub(" ", ":", l8)))
>    lres <- as.list(l8)
>    names(lres) <- colnames(l8)
>    lres$nrows <- as.integer(lres$nrows)
>    lres$ncols <- as.integer(lres$ncols)
>    lres$nbands <- as.integer(lres$nbands)
>    lres$nbits <- as.integer(lres$nbits)
>    lres$skipbytes <- as.integer(lres$skipbytes)
>    lres$nodata <- ifelse(integer, as.integer(lres$nodata),
> as.numeric(lres$nodata))
>    con <- file(paste(fname, "wld", sep = "."), "r")
>    l6 <- readLines(con, n = 6)
>    close(con)
>    lres$ewres <- abs(as.numeric(l6[1]))
>    lres$nsres <- abs(as.numeric(l6[4]))
>    lres$n_cc <- as.numeric(l6[6])
>    lres$w_cc <- as.numeric(l6[5])
>    lres$s_cc <- lres$n_cc - lres$nsres * (lres$nrows - 1)
>    what <- ifelse(integer, "integer", "double")
>    n <- lres$nrows * lres$ncols
>    size <- lres$nbits/8
>    map <- readBin(fname, what = what, n = n, size = size, signed = TRUE)
>    is.na(map) <- map == lres$nodata
>    grid = GridTopology(c(lres$w_cc, lres$s_cc), c(lres$ewres,
>        lres$nsres), c(lres$ncols, lres$nrows))
>    df <- list(var1 = map)
>    names(df) <- colname
>    if (.sp_lt_0.9()) {
>        df1 <- AttributeList(df)
>    }
>    else {
>        df1 <- data.frame(df)
>    }
>    res <- SpatialGridDataFrame(grid, data = df1, proj4string = proj4string)
>    res
> }
> Browse[1]> list.files(dirname(fname))
> [1] "162.0"
> [2] "162.1"
> [3] "162.2"
> [4] "260.0"
> [5] "260.1"
> [6] "260.2"
> [7] "284.0"
> [8] "284.1"
> [9] "284.2"
> [10] "336.0"
> [11] "336.1"
> [12] "393.0"
> [13] "393.1"
> [14] "436.0"
> [15] "436.1"
> [16] "436.2"
> [17] "436.3"
> [18] "441.0"
> [19] "60.0"
> [20] "60.1"
> [21] "60.2"
> [22] "60.3"
> [23] "6183.0"
> [24] "6183.1"
> [25] "6183.1.ppm"
> [26] "6183.2"
> [27] "6183.2.pgm"
> [28] "6183.2.ppm"
> [29] "6183.3"
> [30] "6183.3.pgm"
> [31] "6183.3.ppm"
> [32] "653.0"
> [33] "653.1"
> [34] "653.2"
> [35] "653.3"
> [36] "653.4"
> [37] "653.5"
> [38] "661.0"
> [39] "661.1"
> [40] "661.2"
> [41] "6630.0"
> [42] "6630.1"
> [43] "753.0"
> [44] "753.1"
> [45] "753.2"
> [46] "786.0"
> [47] "786.1"
> [48] "786.2"
> [49] "796.0"
> [50] "796.1"
> [51] "796.2"
> [52] "796.3"
> [53] "796.4"
> [54] "846.0"
> [55] "846.1"
> [56] "846.2"
> [57] "846.3"
> [58] "847.0"
> [59] "847.1"
> [60] "847.2"
> [61] "847.3"
> [62] "940.0"
> [63] "dem3arcsec_srtm_reprojected_aspect"
> [64] "dem3arcsec_srtm_reprojected_slope_avg2"
> [65] "dem3arcsec_srtm_reprojected_slope_avg2.wld"
> Browse[1]>
> debug: if (missing(integer)) stop("integer TRUE/FALSE required")
> Browse[1]>
> debug: if (!file.exists(fname)) stop(paste("no such file:", fname))
> Browse[1]>
> debug: if (!file.exists(paste(fname, "hdr", sep = ".")))
> stop(paste("no such file:",
>   paste(fname, "hdr", sep = ".")))
> Browse[1]>
> Error in readBinGrid(rtmpfl11, colname = vname[i], proj4string = p4,
> integer = to_int) :
>       no such file:
> /home/guano/grassdata/srtm_krig_utm/death_valley/.tmp/eclipse/dem3arcsec_srtm_reprojected_slope_avg2.hdr
>> 
>
>
> and then with a short file name
>
>
>>  elev<-readRAST6("srtm3sec_reprojected")
> Creating BIL support files ...
> Header File =
> /home/guano/grassdata/srtm_krig_utm/death_valley/.tmp/eclipse/srtm3sec_reprojected.hdr
> World File =
> /home/guano/grassdata/srtm_krig_utm/death_valley/.tmp/eclipse/srtm3sec_reprojected.wld
> Exporting Raster as floating values (bytes=4)
> Using the Current Region settings ...
> north=4031000.000000
> south=4002650.000000
> east=494850.000000
> west=466500.000000
> r=315
> c=315
> 100%
> debugging in: readBinGrid(rtmpfl11, colname = vname[i], proj4string =
> p4, integer = to_int)
> debug: {
>
> <snip>
>
> [60] "847.1"
> [61] "847.2"
> [62] "847.3"
> [63] "940.0"
> [64] "dem3arcsec_srtm_reprojected_aspect"
> [65] "dem3arcsec_srtm_reprojected_slope_avg2"
> [66] "dem3arcsec_srtm_reprojected_slope_avg2.wld"
> [67] "srtm3sec_reprojected"
> [68] "srtm3sec_reprojected.hdr"
> [69] "srtm3sec_reprojected.wld"
> Browse[1]>
> debug: if (missing(integer)) stop("integer TRUE/FALSE required")
>
>
> So it appears to me that for some reason the .hdr was not attached to
> the file...

Yes, because a shorter file name buffer is declared on line 225 of main.c 
in r.out.bin - with a length of 100, so fname fits, but the header 
overwrites it, I think - could I suggest that the lengths of the out_bufs 
in line 255 be set to [GNAME_MAX] instead?

Roger

>
>
> Carlos
>
>
>
>
> +-----------------------------------------------------------+
>              Carlos Henrique Grohmann - Guano
>  Visiting Researcher at Kingston University London - UK
>  Geologist M.Sc  - Doctorate Student at IGc-USP - Brazil
> Linux User #89721  - carlos dot grohmann at gmail dot com
> +-----------------------------------------------------------+
> _________________
> "Good morning, doctors. I have taken the liberty of removing Windows
> 95 from my hard drive."
> --The winning entry in a "What were HAL's first words" contest judged
> by 2001: A SPACE ODYSSEY creator Arthur C. Clarke
>
> Can't stop the signal.
>
> _______________________________________________
> statsgrass mailing list
> statsgrass at grass.itc.it
> http://grass.itc.it/mailman/listinfo/statsgrass
>
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no


More information about the grass-dev mailing list