Jan Holstein <jan.holstein <at> awi.de> writes: > > I noticed that dnearneigh::spdep shows diverging behaviour with matrix and > SpatialPoints objects respectively: > > reproducible example: > > library(spdep) > set.seed(5) > spdf<-SpatialPointsDataFrame(cbind(lon=runif(1000,2,8),lat=runif(1000,53,56)), > data=data.frame(par=runif(1000,0,1)),coords.nrs = > numeric(0),proj4string=CRS("+init=epsg:4326"))
Thanks for a reproducible example; posting on R-sig-geo would have elicited an earlier response. This will only generate compliant behaviour when rgdal is loaded, converting +init=epsg:4326 to +init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0, so that is.projected(spdf) is FALSE > > dnearneigh(x=coordinates(spdf), d1=0, d2=20,longlat = TRUE) > #Neighbour list object: > #Number of regions: 1000 > #Number of nonzero links: 9504 > #Percentage nonzero weights: 0.9504 > #Average number of links: 9.504 > #2 regions with no links: > #449 619 > > but ... There is a bug in the logic, but: dnearneigh(as(spdf,"SpatialPoints"), 0, 20) #Neighbour list object: #Number of regions: 1000 #Number of nonzero links: 9288 #Percentage nonzero weights: 0.9288 #Average number of links: 9.288 which was the intention - either provide an object inheriting from SpatialPoints, with longlat set internally, or set it manually. Following the removal of the logic bug: dnearneigh(as(spdf,"SpatialPoints"), 0, 20, longlat = TRUE) #Neighbour list object: #Number of regions: 1000 #Number of nonzero links: 9288 #Percentage nonzero weights: 0.9288 #Average number of links: 9.288 #Warning message: #In dnearneigh(as(spdf, "SpatialPoints"), 0, 20, longlat = TRUE) : # dnearneigh: longlat overriden for Spatial object Coercion to SpatialPoints isn't needed - the function looks for objects inheriting from SpatialPoints, so just spdf is sufficient. Bugfix on R-forge at revision 552. Roger > dnearneigh(as(spdf,"SpatialPoints"), 0, 20,longlat = TRUE) > #Neighbour list object: > #Number of regions: 1000 > #Number of nonzero links: 999000 > #Percentage nonzero weights: 99.9 > #Average number of links: 999 > > it seems that 'dnearneigh' ignores longlat=TRUE if class(x)==SpatialPoints, > since > > dnearneigh(x=coordinates(spdf), d1=0, d2=20,longlat = FALSE) > #Neighbour list object: > #Number of regions: 1000 > #Number of nonzero links: 999000 > #Percentage nonzero weights: 99.9 > #Average number of links: 999 > > gives the same 'undesired' result. > > ----- > Jan M. Holstein, Dept. Functional Ecology, Alfred Wegener Institut for Polar and Marine Research (AWI) > -- > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.