[R-sig-Geo] Could you add my 'Jenks' method to your classInt package?

Roger Bivand Roger.Bivand at nhh.no
Wed Nov 21 19:15:07 CET 2007


On Wed, 21 Nov 2007, Hisaji ONO wrote:

> Hello.
>
> I've tried to port Java code for Jenks optimization
> classification method "natural break" to R, although far
> from smart coding.
>
> My java code was ported Jenks's Basic code and I checked
> these results compared to results of ArcView 3.x.
>
> Jenks method derived from Fischer, but seems to be a
> little different in the algorithm.
>
> My code's results are similar to results of current
> ArcGIS's, but not equal to them. Accordindg to Murray, A.
> T. & Shyy, T. K.'s papaer (IJGIS, 2000, 14-7, 649-667,
> http://geog-www.sbs.ohio-state.edu/faculty/murray/personal/research/crimepubs/murray-shyy2000.pdf),
> there are difference between ArcGIS's and MapInfo's. How
> about Autodesk's Map Guide Open Source which has employed
> Jenks's method as a function.
>
> Could you try my following code and add this into your
> classInt package if you like?

Thank you very much!

I have put your contribution into the sourceforge classInt repository in 
r-spatial - could those who are interested try it from there?

Roger

>
>
> Regards.
>
>
>
>
>
> else if (style == "fisher") {
> ---- cut ---- cut ---- cut ---- cut ---- cut ----
>        }
> else if (style == "Jenks") { # Jenks Optimisation Method
>            d<- sort(var)
>           #work<-matrix(0,k,length(d))
>           mat1<-matrix(1,length(d),k)
>           mat2<-matrix(0,length(d),k)
>           mat2[2:length(d),1:k]<-10000000 #R's max double
> value?
>           v<-0
>
>           for(l in 2:length(d)){
>             s1=s2=w=0
>             for(m in 1:l){
>               i3 <- l - m + 1
>               val <- d[i3]
>               s2 <- s2 + val * val
>               s1 <- s1 + val
>               w<-w+1
>               v <- s2 - (s1 * s1) / w
>               i4 <- trunc(i3 - 1)
>
>               if(i4 !=0){
>                 for(j in 2:k){
>                   if(mat2[l,j] >= (v + mat2[i4, j - 1])){
>                     mat1[l,j] <- i3
>                     mat2[l,j] <- v + mat2[i4, j - 1]
>                   }
>                 }
>               }
>             }
>             mat1[l,1] <- 1
>             mat2[l,1] <- v
>           }
>
>           kclass<-1:k
>           kclass[k] <-length(d)
>           k <- length(d)
>           last<-length(d)
>           for(j in length(kclass):1){
>             id <- trunc(mat1[k,j]) - 1
>             kclass[j - 1] <- id
>             k <- id #lower
>             last <- k -1 #upper
>           }
>           brks<-d[c(1, kclass)]
>         }
>         else stop(paste(style, "unknown"))
>

-- 
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 R-sig-Geo mailing list