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

Markus Neteler neteler at itc.it
Thu Jul 26 17:28:25 EDT 2007


Roger, Carlos,

I have fixed the r.out.bin buffer issue in CVS (also in 6.2.3-CVS).

Markus

On Thu, Jul 26, 2007 at 07:39:47PM +0200, Roger Bivand wrote:
> 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

> _______________________________________________
> grass-dev mailing list
> grass-dev at grass.itc.it
> http://grass.itc.it/mailman/listinfo/grass-dev




More information about the grass-stats mailing list