[R] [FORGED] intersection of two polygons which are not shapefiles

Adrienne Wootten amwootte at ncsu.edu
Tue Jul 19 15:25:41 CEST 2016


Thanks! That's just what I was looking for!
A

On Mon, Jul 18, 2016 at 5:56 PM, Rolf Turner <r.turner at auckland.ac.nz>
wrote:

> On 19/07/16 01:16, Adrienne Wootten wrote:
>
>> All,
>>
>> Greetings! I hope things are going well for all!  I apologize if someone's
>> already answered this and I'm just not finding it.  Here's what I'd like
>> to
>> do, but I'm hitting a brick wall with it.
>>
>> I have two sets of points for which I've already determined which ones
>> points for the boundaries with the chull function.  What I need for what
>> I'm doing is the coordinates where the two resulting polygons overlap.
>> These are not raster grids, nor shapefiles.  What I have to work with are
>> the two data frames with the points at the vertices of each polygon
>> (included below).
>>
>> chx1
>>>
>>               x          y
>> 1  0.5822569 -0.5555878
>> 2  0.5338428 -0.5883604
>> 3 -0.3442943 -0.6701115
>> 4  -0.7409293  0.2286962
>> 5  0.2147221  0.8061485
>> 6  0.4914146  0.4941865
>> 7  0.5822569 -0.5555878
>>
>> chx2
>>>
>>               x          y
>> 1  0.7163506 -0.4357497
>> 2  0.6513128 -0.5395180
>> 3   0.1818315 -0.6317423
>> 4  -0.6394281 -0.5765610
>> 5 -0.6044681  0.1831627
>> 6 -0.5799485  0.3231473
>> 7  0.2248476  0.9601908
>> 8  0.7163506 -0.4357497
>>
>>
>> If anyone has any ideas on how to get what I'm after I'd appreciate it!
>> I've tried a lot of things from the raster, rgeos, and more.  Knowing me
>> it's something obvious I'm just not seeing right now.
>>
>
> You can do this very easily using the spatstat package:
>
> library(spatstat)
> X1 <- read.table(textConnection("
>              x          y
> 1  0.5822569 -0.5555878
> 2  0.5338428 -0.5883604
> 3 -0.3442943 -0.6701115
> 4  -0.7409293  0.2286962
> 5  0.2147221  0.8061485
> 6  0.4914146  0.4941865
> 7  0.5822569 -0.5555878"))
>
> X2 <- read.table(textConnection("
>                x          y
> 1  0.7163506 -0.4357497
> 2  0.6513128 -0.5395180
> 3   0.1818315 -0.6317423
> 4  -0.6394281 -0.5765610
> 5 -0.6044681  0.1831627
> 6 -0.5799485  0.3231473
> 7  0.2248476  0.9601908
> 8  0.7163506 -0.4357497"))
>
> X1 <- reverse.xypolygon(X1) # Vertices are in the wrong
> X2 <- reverse.xypolygon(X2) # (clockwise) order.
> W1 <- owin(poly=X1)
> W2 <- owin(poly=X2)
> WI <- intersect.owin(W1,W2)
>
> plot(union.owin(W1,W2),col="blue",main="")
> plot(WI,add=TRUE,col="red")
>
> HTH
>
> cheers,
>
> Rolf Turner
>
> P.S.  To extract the coordinates of the intersection polygon you can do:
>
> WI$bdry[[1]]
>
> R. T.
>
> --
> Technical Editor ANZJS
> Department of Statistics
> University of Auckland
> Phone: +64-9-373-7599 ext. 88276
>



-- 
Adrienne Wootten
Ph.D Candidate / Graduate Research Assistant
State Climate Office of North Carolina
Department of Marine, Earth and Atmospheric Sciences
North Carolina State University

	[[alternative HTML version deleted]]



More information about the R-help mailing list