[R-sig-Geo] Polygon dissolution or union issue

Sébastien Durand v8extra at gmail.com
Mon Dec 6 00:13:22 CET 2010


Hello,

First of all thanks a lot for the answers.

Now regarding the package Akima, I will have to change it then. 

So now that you speak about Tps, and the field package I will look into it, it sure looks interesting

The main reason why I used the package Akima was simply because I was asked to used a linear interpolation basde on delaunay triangulation. And the interp linear interpolation is used in the triangles bounded by data points, a way that is to me similar to Delaunay triangulations, but my understanding of all this is limited. 

There is better interpolation methods there for sure, and I would be very happy to hear about the tools that you prefer using for doing such task.

Thanks a lot


Le 2010-12-05 à 13:59, Roger Bivand a écrit :

> On Sat, 4 Dec 2010, Robert J. Hijmans wrote:
> 
>> Sébastien,
>> 
>> You can fix this by rounding the coordinates of the polygons first:
>> 
>> library(akima)
>> library(maptools)
>> gpclibPermit()
> 
> Please note that both akima and gpclib have restricted licenses (excluding research for paying clients), so that this should not be suggested as a general solution. The equivalent unionSpatialPolygons() in the as yet unreleased maptools on R-forge will use rgeos (also on R-forge) instead - rgeos should reach CRAN this month. Replacing akima remains an open question, any offers?
> 
> Roger
> 
> 
>> library(raster)
>> data(akima)
>> dimgrid <- 50
>> ak.li <- interp(akima$x, akima$y, akima$z, xo=seq(min(akima$x),
>> max(akima$x), length = dimgrid),yo=seq(min(akima$y), max(akima$y),
>> length = dimgrid),linear = TRUE, extrap=FALSE, duplicate = "mean")
>> r <- raster(ak.li)
>> pol <- rasterToPolygons(r, fun=function(x){x>20 & x<25})
>> 
>> ### new code
>> digits <- 6
>> for (i in 1:length(pol at polygons)) {
>> # simple case with no multi-polygons
>> 	pol at polygons[[i]]@Polygons[[1]]@coords <-
>> round(pol at polygons[[i]]@Polygons[[1]]@coords, digits)
>> }
>> ###
>> 
>> union <- unionSpatialPolygons(pol, ID=rep(1, times=length(pol at polygons)))
>> plot(r)
>> plot(union, add=T)
>> 
>> 
>> Robert
>> 
>> On Sat, Dec 4, 2010 at 10:00 PM, Sébastien Durand <v8extra at gmail.com> wrote:
>>> 
>>> Hello,
>>> 
>>> Could somebody find me the solution to this issue!
>>> 
>>> I cannot manage to merge or dissolve all the polygon  generated in the object "pol"
>>> 
>>> Here is my example:
>>> 
>>> library(akima)
>>> library(maptools)
>>> library(raster)
>>> 
>>> data(akima)
>>> # define de dimension of grid
>>> dimgrid=50
>>> 
>>> # Interpolate to regular grid
>>> ak.li=interp(akima$x, akima$y, akima$z, xo=seq(min(akima$x), max(akima$x), length = dimgrid),yo=seq(min(akima$y), max(akima$y), length = dimgrid),linear = TRUE, extrap=FALSE, duplicate = "mean")
>>> 
>>> # Show interpolation
>>> image(ak.li)
>>> points(akima)
>>> with(akima, text(x, y, formatC(z,dig=2), adj = -0.1))
>>> 
>>> # Create a raster with the data
>>> r <- raster(ak.li)
>>> plot(r)
>>> pol <- rasterToPolygons(r, fun=function(x){x>20 & x<25})
>>> plot(pol, add=T, col='red')
>>> 
>>> r <- raster(nrow=length(ak.li$y), ncol=length(ak.li$x), crs=NA)
>>> tmp=ak.li$z
>>> tmp=apply(tmp, 1, rev)
>>> r[] <- tmp
>>> 
>>> # Show the raster
>>> plot(r)
>>> 
>>> # Convert the data found between ]20 and 25[ into polygons
>>> pol <- rasterToPolygons(r, fun=function(x){x>20 & x<25})
>>> 
>>> # Show the polygons
>>> plot(pol, add=T, col='red')
>>> 
>>> # Attempt to merge similar adjacent into one polygon
>>> union = unionSpatialPolygons(pol, ID=rep(1,
>>> times=length(pol at polygons)))
>>> 
>>> # Show
>>> plot(union, add=TRUE, col="red")
>>> 
>>> I beleive all polygons should be merged by that point but obviously I must have done something wrong.  All polygons were not merged into a single one and I don't know how to fix that!
>>> 
>>> Any other solutions
>>> 
>>> Help?
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> R-sig-Geo at r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>> 
>> 
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org
>> 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



More information about the R-sig-Geo mailing list