[R-sig-Geo] how to create several polygons from a list of vertices

Antonio Silva @olinto@l@t @ending from gm@il@com
Thu Aug 16 01:36:34 CEST 2018


Hi Vijay, Michael and Obrl

Thanks for the answers, finally I could do the job.

I learned a lot too!

Best regards

Antonio Olinto

Em Ter, 14 de ago de 2018 11:19 PM, Vijay Lulla <vijaylulla using gmail.com>
escreveu:

> Maybe you can try this then?
>
> polys <- SpatialPolygons(lapply(unique(vertices$cod),
>                          function(x) {
>                            Polygons(list(Polygon(vertices[vertices$cod ==
> x, 1:2])), ID=x)
>                          } ))
> HTH,
> Vijay.
>
> On Tue, Aug 14, 2018 at 6:03 PM Antonio Silva <aolinto.lst using gmail.com>
> wrote:
>
>> Thanks Lulla,
>>
>> Nice solution. I could also export it as a shapefile after transforming
>> it to a spatial polygon dataframe.
>>
>> The problem is that I could not "individualize" the squares in a
>> multipart layer. They all have the same ID. I tried to change this without
>> success: "Single ID required".
>>
>> The attribute table of the shapefile should have 6 lines in my example
>> and not only one.
>>
>> Any other option?
>>
>> Thanks again,
>>
>> Antonio Olinto
>>
>>
>> Em ter, 14 de ago de 2018 às 18:10, Vijay Lulla <vijaylulla using gmail.com>
>> escreveu:
>>
>>> Maybe something like this?
>>>
>>> poly <- SpatialPolygons(list(Polygons(tapply(seq_len(nrow(vertices)),
>>>                                              vertices$cod,
>>>                                              function(x)
>>> Polygon(vertices[x,1:2])), ID="1")),
>>>                         proj4string=CRS("+proj=longlat +ellps=WGS84
>>> +datum=WGS84 +no_defs"))
>>>
>>>
>>> On Tue, Aug 14, 2018 at 4:17 PM Antonio Silva <aolinto.lst using gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> I have a data.frame with the vertices (lon / lat) and codes from several
>>>> squares (more than 500 in the real dataset).
>>>> I want to create an object with these polygons (squares) and after this
>>>> export it as a shapefile.
>>>> With the script below I can draw one square.
>>>> library(sp)
>>>> P1 = Polygon(vertices[1:4,1:2])
>>>> Ps1 = SpatialPolygons(list(Polygons(list(P1), ID = "1")),
>>>> proj4string=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"))
>>>> plot(Ps1, axes = TRUE)
>>>>
>>>> Now I'm trying to create one object with all squares at once.
>>>> Is it possible?
>>>>
>>>> Thanks a lot,
>>>>
>>>> Antônio Olinto
>>>>
>>>> sample data:vertices
>>>>    lon lat cod
>>>> 1  -33 -23   1
>>>> 2  -32 -23   1
>>>> 3  -32 -22   1
>>>> 4  -33 -22   1
>>>> 5  -32 -23   2
>>>> 6  -31 -23   2
>>>> 7  -31 -22   2
>>>> 8  -32 -22   2
>>>> 9  -31 -23   3
>>>> 10 -30 -23   3
>>>> 11 -30 -22   3
>>>> 12 -31 -22   3
>>>> 13 -33 -22   4
>>>> 14 -32 -22   4
>>>> 15 -32 -21   4
>>>> 16 -33 -21   4
>>>> 17 -32 -22   5
>>>> 18 -31 -22   5
>>>> 19 -31 -21   5
>>>> 20 -32 -21   5
>>>> 21 -31 -22   6
>>>> 22 -30 -22   6
>>>> 23 -30 -21   6
>>>> 24 -31 -21   6
>>>>
>>>>         [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> R-sig-Geo using r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>
>
> --
> Vijay Lulla
>
> Assistant Professor,
> Dept. of Geography, IUPUI
> 425 University Blvd, CA-207C.
> Indianapolis, IN-46202
> vlulla using iupui.edu
> ORCID: https://orcid.org/0000-0002-0823-2522
> Webpage: http://vijaylulla.com
>

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list