Errore in sprintf(fmt, ...) ?
On Sat, 2 Dec 2006, Massimo Di Stefano wrote:
Roger: This is the log,
library(spgrass6)
Carico il pacchetto richiesto: sp Carico il pacchetto richiesto: maptools Carico il pacchetto richiesto: foreign Carico il pacchetto richiesto: rgdal Geospatial Data Abstraction Library extensions to R successfully loaded
library(cluster) sessionInfo()
R version 2.4.0 (2006-10-03) powerpc-apple-darwin8.7.0 locale: it_IT/it_IT/it_IT/C/it_IT/it_IT attached base packages: [1] "methods" "stats" "graphics" "grDevices" "utils" "datasets" [7] "base" other attached packages: cluster spgrass6 rgdal maptools foreign sp "1.11.2" "0.3-3" "0.5-1" "0.6-3" "0.8-18" "0.9-4"
gc()
used (Mb) gc trigger (Mb) max used (Mb) Ncells 408935 11.0 597831 16 531268 14.2 Vcells 320324 2.5 786432 6 472905 3.7
gmeta6 <- gmeta6() x <-
readFLOAT6sp(c("er","crosc","longc","slope","profc","minic","maxic"))
Warning messages:
1: perl = TRUE ? implementato solo nei locale UTF-8
2: perl = TRUE ? implementato solo nei locale UTF-8
3: perl = TRUE ? implementato solo nei locale UTF-8
4: perl = TRUE ? implementato solo nei locale UTF-8
5: perl = TRUE ? implementato solo nei locale UTF-8
6: perl = TRUE ? implementato solo nei locale UTF-8
7: perl = TRUE ? implementato solo nei locale UTF-8
Nowadays I would suggest readRAST6() instead of readFLOAT6sp(), because it uses r.out.bin rather than r.out.arc from GRASS. The perl=TRUE warnings seems to be coming from string comparison somewhere inside a function called by readFLOAT6sp(), I don't think they are the problem.
gc()
used (Mb) gc trigger (Mb) max used (Mb) Ncells 418204 11.2 741108 19.8 699974 18.7 Vcells 22643234 172.8 191414408 1460.4 238993684 1823.4
morph <- data.frame(cbind(x$er, x$crosc, x$longc,
x$slope, x$profc, x$minic, x$maxic))
morph <- as(x, "data.frame") str(morph) # look inside morph summary(morph) sapply(morph, function(x) any(!is.finite(x))) # check morph for NAs etc.
gc()
used (Mb) gc trigger (Mb) max used (Mb) Ncells 418451 11.2 741108 19.8 699974 18.7 Vcells 46682176 356.2 153131526 1168.4 238993684 1823.4 <er, x$crosc, x$longc, x$slope/max(x$slope), x$profc, x$minic, x$maxic))
gc()
used (Mb) gc trigger (Mb) max used (Mb) Ncells 418453 11.2 741108 19.8 699974 18.7 Vcells 46682176 356.2 137841862 1051.7 238993684 1823.4
names(morph) <-
c("er","crosc","longc","slope_n","profc","minic","maxic")
gc()
used (Mb) gc trigger (Mb) max used (Mb) Ncells 418456 11.2 741108 19.8 699974 18.7 Vcells 46682180 356.2 137841862 1051.7 238993684 1823.4
morph.clara <- clara(morph, k=5, stand=F)
Errore in clara(morph, k = 5, stand = F) : Observations 1929241,1931311,1933381,1935451,1937521,1939591,1941661,1943731,1945801,1947871,1949941,1952011,1954081,1956151,1958221,1960291,1962361,1964431,1966501,1968571,1970641,1972711,1974781,1976851,1978921,1980991,1983061,1985131,1987201,1989271,1991341,1993411,1995481,1997551,1999621,2001691,2003761,2005831,2007901,2009971,2012041,2014111,2016181,2018251,2020321,2022391,2024461,2026531,2028601,2030671,2032741,2034811,2036881,2038951,2041021,2043091,2045161,2047231,2049301,2051371,2053441,2055511,2057581,205965 1,2061721,2063791,2065861,2067931,2070001,2072071,2074141,2076211,2078281,2080351,2082421,2084491,2086561,2088631,2090701,2092771,2094841,2096911,2098981,2101051,2103121,2105191,2107261,2109331,2111401,2113471,2115541,2117611,2119681,2121751,2123821,21258 91,2127961,2130031,2132101,2134171,2136241,2138311,2140381,2142451,2144521,2146591,2148661,2150731,2152801,2154871,2156941,2159011,2161081,2163151,2165221,2167291,2169361,2171431
traceback()
2: stop(ngettext(length(i), sprintf("Observation %d
has", i[1]),
sprintf("Observations %s have", paste(i,
collapse = ","))),
" *only* NAs --> omit for clustering")
1: clara(morph, k = 5, stand = F)
is this log usefool ?
Yes, I think the problem is firstly that there are NAs in morph, and then that the string listing the row numbers of the NAs exceeds 8K characters (your earlier message had: Errore in sprintf(fmt, ...) : La lunghezza della stringa eccede la dimensione del buffer di 8192) So try clara on morph once you have omitted the NAs. If the NAs are for all variables in a row, coercing from SpatialGridDataFrame to SpatialPixelsDataFrame will work, if only some, you need to set the whole row to NA, coerce, cluster, add the clara results to the SpatialPixelsDataFrame, coerce back to SpatialGridDataFrame, then back to GRASS. Once this is resolved, please post back to the list as well as to me, NAs do happen, expecially in geomorphometrics, for example around the edges where the filter is not fully within the window and/or mask. Best wishes, Roger
thanks a lot!
Massimo.
Il giorno 02/dic/06, alle ore 11:16, Roger Bivand ha
scritto:
On Fri, 1 Dec 2006, Massimo Di Stefano wrote:
Massimo:
Two deep breaths, it'll work out. Memory may well be a
problem, but we
can't see what is going on without
1) sessionInfo() for your platform with the packages
loaded
2) traceback() after the problem arises
3) do not run this as a script - run it line by line,
so that you can
check things step by step. Run gc() - garbage
collector - manually, and
stay in control as much as possible.
Roger
hi,
i'm trying to perform a clustering on a dem (50x50 km
res=20m)
is this is the code:
require(spgrass6)
require(cluster)
gmeta6 <- gmeta6()
x <-
readFLOAT6sp(c("er","crosc","longc","slope","profc","minic","maxic"))
morph <- data.frame(cbind(x$er, x$crosc, x$longc,
x$slope, x$profc, x$minic, x$maxic))
morph <- data.frame(cbind(x$er, x$crosc, x$longc,
x$slope/max(x$slope), x$profc, x$minic, x$maxic))
names(morph) <-
c("er","crosc","longc","slope_n","profc","minic","maxic")
print("perform the clustering")
morph.clara <- clara(morph, k=5, stand=F)
x$morph_class <- morph.clara$clustering
print("send result back to GRASS")
rast.put6(x,"morph", zcol="morph_class")
....
......
but during:
"perform the clustering"
i'had this error:
Errore in sprintf(fmt, ...) : La lunghezza della
stringa eccede la dimensione del buffer di 8192
Inoltre: Warning messages:
1: perl = TRUE ?? implementato solo nei locale UTF-8
2: perl = TRUE ?? implementato solo nei locale UTF-8
3: perl = TRUE ?? implementato solo nei locale UTF-8
4: perl = TRUE ?? implementato solo nei locale UTF-8
5: perl = TRUE ?? implementato solo nei locale UTF-8
6: perl = TRUE ?? implementato solo nei locale UTF-8
7: perl = TRUE ?? implementato solo nei locale UTF-8
8: La stringa di caratteri verr? probabilmente
troncata
Esecuzione interrotta
if i try the same code on a subregion of my data
(about 20x20 km res=20), it works very fine!
but for a large region i've this error :-(
obviously i think that is a memory problem, right ?
(i'm working with a notebook PPC-1.33-512ram)
my data are : 7 raster-map on a region of about 50X40
km at a resolution of 20m.
is there some wolkaround about the memory problems?
an other question is:
what is this :
Warning messages:
1: perl = TRUE ?? implementato solo nei locale UTF-8
2: perl = TRUE ?? implementato solo nei locale UTF-8
3: perl = TRUE ?? implementato solo nei locale UTF-8
4: perl = TRUE ?? implementato solo nei locale UTF-8
5: perl = TRUE ?? implementato solo nei locale UTF-8
6: perl = TRUE ?? implementato solo nei locale UTF-8
7: perl = TRUE ?? implementato solo nei locale UTF-8
is it about this line of the code :
morph.clara <- clara(morph, k=5, stand=F)
i have an F > false
frustated for this error, to day i buy a 1 GB memory
slot for my laptop
now it have 1,28GB instead the old 512, but i've the
same error :-(
damn!damn!....how can i do?
repeat for a little area (about 20X20 km and res=20m)
it work fine!
have you any suggestion?
is ther a method for look if this error depend from my
ram or other....?
thanks foe any suggestion!
i need your help.
thanks.
Massimo
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo
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