[R-sig-Geo] gIntersection returns error "TopologyException: no outgoing dirEdge found at"

Roger Bivand Roger.Bivand at nhh.no
Wed Sep 23 19:39:52 CEST 2015


On Wed, 23 Sep 2015, Jean-Luc Dupouey wrote:

> Why gIntersection returns the ""TopologyException: no outgoing dirEdge found 
> at" error in the following very simple case:
>
>> #construct a spatial layer with two adjacent squares, each of 10 x 10 
> units:
>>
>> Pol1=rbind(c(0,0),c(0,10),c(10,10),c(10,0),c(0,0))
>> Pol2=rbind(c(0,0),c(10,0),c(10,-10),c(0,-10),c(0,0))
>>
>> Pols1=Polygons(list(Polygon(Pol1)),"Pols1")
>> Pols2=Polygons(list(Polygon(Pol2)),"Pols2")
>> MyLay=SpatialPolygons(list(Pols1,Pols2))
>>
>> #construct the same layer, but lagged by 0.5 in x and y directions
>>
>> Pol1l=Pol1+0.5
>> Pol2l=Pol2+0.5
>>
>> Pols1l=Polygons(list(Polygon(Pol1l)),"Pols1l")
>> Pols2l=Polygons(list(Polygon(Pol2l)),"Pols2l")
>> MyLayl=SpatialPolygons(list(Pols1l,Pols2l))
>>
>> #view the resulting spatial layers:
>>
>> plot(MyLay)
>> plot(MyLayl,add=TRUE)
>>
>> #try to intersect:
>>
>> inter=gIntersection(MyLay,MyLayl)
> Error in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, drop_lower_td, 
> "rgeos_intersection") :
>  TopologyException: no outgoing dirEdge found at 0.5 0

The error message is coming from GEOS - you are welcome to investigate 
further. If you use gUnaryUnion() on the objects first, there is no error:

library(rgeos)
Pol1=rbind(c(0,0),c(0,10),c(10,10),c(10,0),c(0,0))
Pol2=rbind(c(0,0),c(10,0),c(10,-10),c(0,-10),c(0,0))
library(sp)
Pols1=Polygons(list(Polygon(Pol1)),"Pols1")
Pols2=Polygons(list(Polygon(Pol2)),"Pols2")
MyLay=SpatialPolygons(list(Pols1,Pols2))
Pol1l=Pol1+0.5
Pol2l=Pol2+0.5
Pols1l=Polygons(list(Polygon(Pol1l)),"Pols1l")
Pols2l=Polygons(list(Polygon(Pol2l)),"Pols2l")
MyLayl=SpatialPolygons(list(Pols1l,Pols2l))
plot(MyLay)
plot(MyLayl,add=TRUE)
points(x=0.5, y=0)
inter=gIntersection(gUnaryUnion(MyLay), gUnaryUnion(MyLayl))
plot(inter, add=TRUE, border="green")

It is a GEOS issue, not rgeos.

>
> It works with the option byid=TRUE.
>
> But my question is why it does not work without? Is this behaviour 
> predictable?

This is unknown. I'll try again on GEOS 3.5.0 and see if it is still 
there: yes, unfortunately it is still there.

Roger

>
> I went through some previous related posts to the list, but could not find 
> the answer.
>
> Thanks,
>
>

-- 
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 91 00
e-mail: Roger.Bivand at nhh.no



More information about the R-sig-Geo mailing list