Reordering geographical coordinates clockwise to make a polygon

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Reordering geographical coordinates clockwise to make a polygon

Patrick Giraudoux
Dear listers,

There is an interesting post here:
https://stackoverflow.com/questions/6989100/sort-points-in-clockwise-order 
dealing on the issue. However, I would like to know if a function has
been already developped in a R package.

I am coping with a young colleague's shapefile where borders of polygons
have been drawn as lines quite inconsistently. To change this
SpatialLinesDataFrame into a SpatialPoints object is easy. The idea is
to  select the points  bordering each polygon (delete the others),
define the point set as a Polygon, then rebuild step by step a
SpatialPolygonsDataFrame with all its (~25) polygons. It would be much
quicker than to redraw one by one the 5160 data points (two times on
borders shared by two polygons).

The problem is that the points must be reordered clockwise (the way
lines making the  borders is all except clockwise) before making them a
polygon.

Any function already developped for that ?

Cheers,

Patrick




        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: Reordering geographical coordinates clockwise to make a polygon

edzer
Look for argument check_ring_dir in the documentation of sf::st_read.

On 11/5/18 2:02 PM, Patrick Giraudoux wrote:

> Dear listers,
>
> There is an interesting post here:
> https://stackoverflow.com/questions/6989100/sort-points-in-clockwise-order 
> dealing on the issue. However, I would like to know if a function has
> been already developped in a R package.
>
> I am coping with a young colleague's shapefile where borders of polygons
> have been drawn as lines quite inconsistently. To change this
> SpatialLinesDataFrame into a SpatialPoints object is easy. The idea is
> to  select the points  bordering each polygon (delete the others),
> define the point set as a Polygon, then rebuild step by step a
> SpatialPolygonsDataFrame with all its (~25) polygons. It would be much
> quicker than to redraw one by one the 5160 data points (two times on
> borders shared by two polygons).
>
> The problem is that the points must be reordered clockwise (the way
> lines making the  borders is all except clockwise) before making them a
> polygon.
>
> Any function already developped for that ?
>
> Cheers,
>
> Patrick
>
>
>
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Edzer Pebesma
Institute for Geoinformatics
Heisenbergstrasse 2, 48151 Muenster, Germany
Phone: +49 251 8333081

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

pEpkey.asc (2K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Reordering geographical coordinates clockwise to make a polygon

Patrick Giraudoux
In reply to this post by Patrick Giraudoux

Apologize to answer to myself: the way described below would work only
if there are no concave "peninsula" towards north or south inside the
polygon. Even thinking about an alternate solution, e.g. the Traveling
Salesman Problem (TSP), ie. the shortest route linking all points, one
could get wrong since points of  a narrowpeninsula could have points
closest to the opposite border than from the next point on the border...

Suppose we are stuck, and should redraw polygons by hand


Le 05/11/2018 à 14:02, Patrick Giraudoux a écrit :

>
> Dear listers,
>
> There is an interesting post here:
> https://stackoverflow.com/questions/6989100/sort-points-in-clockwise-order 
> dealing on the issue. However, I would like to know if a function has
> been already developped in a R package.
>
> I am coping with a young colleague's shapefile where borders of
> polygons have been drawn as lines quite inconsistently. To change this
> SpatialLinesDataFrame into a SpatialPoints object is easy. The idea is
> to  select the points  bordering each polygon (delete the others),
> define the point set as a Polygon, then rebuild step by step a
> SpatialPolygonsDataFrame with all its (~25) polygons. It would be much
> quicker than to redraw one by one the 5160 data points (two times on
> borders shared by two polygons).
>
> The problem is that the points must be reordered clockwise (the way
> lines making the  borders is all except clockwise) before making them
> a polygon.
>
> Any function already developped for that ?
>
> Cheers,
>
> Patrick
>
>
>


        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: Reordering geographical coordinates clockwise to make a polygon

edzer
Sorry for my previous answer, I didn't get the question fully.

I'm afraid I still don't get the question fully, but functions that
might help are sf::st_line_merge (creates a LINESTRING from line pieces)
and sf::st_polygonize (creates a polygon from a LINESTRING that forms a
closed ring)

On 11/5/18 5:35 PM, Patrick Giraudoux wrote:

>
> Apologize to answer to myself: the way described below would work only
> if there are no concave "peninsula" towards north or south inside the
> polygon. Even thinking about an alternate solution, e.g. the Traveling
> Salesman Problem (TSP), ie. the shortest route linking all points, one
> could get wrong since points of  a narrowpeninsula could have points
> closest to the opposite border than from the next point on the border...
>
> Suppose we are stuck, and should redraw polygons by hand
>
>
> Le 05/11/2018 à 14:02, Patrick Giraudoux a écrit :
>>
>> Dear listers,
>>
>> There is an interesting post here:
>> https://stackoverflow.com/questions/6989100/sort-points-in-clockwise-order 
>> dealing on the issue. However, I would like to know if a function has
>> been already developped in a R package.
>>
>> I am coping with a young colleague's shapefile where borders of
>> polygons have been drawn as lines quite inconsistently. To change this
>> SpatialLinesDataFrame into a SpatialPoints object is easy. The idea is
>> to  select the points  bordering each polygon (delete the others),
>> define the point set as a Polygon, then rebuild step by step a
>> SpatialPolygonsDataFrame with all its (~25) polygons. It would be much
>> quicker than to redraw one by one the 5160 data points (two times on
>> borders shared by two polygons).
>>
>> The problem is that the points must be reordered clockwise (the way
>> lines making the  borders is all except clockwise) before making them
>> a polygon.
>>
>> Any function already developped for that ?
>>
>> Cheers,
>>
>> Patrick
>>
>>
>>
>
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Edzer Pebesma
Institute for Geoinformatics
Heisenbergstrasse 2, 48151 Muenster, Germany
Phone: +49 251 8333081

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

pEpkey.asc (2K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Reordering geographical coordinates clockwise to make a polygon

Michael Sumner-2
alphahull or a hand-crafted "triangulate and cull long/large triangles"
might be workable options (geometry and RTriangle have the fastest and most
useful triangulation functions).

It's not generally a tractable problem afaics.  Some refs that came up in
recent discussions:

https://pdfs.semanticscholar.org/669b/1415cd64d39f1e44fd90c2b9d9453c42581b.pdf

http://erikdemaine.org/polygonization/

Cheers, Mike.

On Tue, 6 Nov 2018 at 05:26 Edzer Pebesma <[hidden email]>
wrote:

> Sorry for my previous answer, I didn't get the question fully.
>
> I'm afraid I still don't get the question fully, but functions that
> might help are sf::st_line_merge (creates a LINESTRING from line pieces)
> and sf::st_polygonize (creates a polygon from a LINESTRING that forms a
> closed ring)
>
> On 11/5/18 5:35 PM, Patrick Giraudoux wrote:
> >
> > Apologize to answer to myself: the way described below would work only
> > if there are no concave "peninsula" towards north or south inside the
> > polygon. Even thinking about an alternate solution, e.g. the Traveling
> > Salesman Problem (TSP), ie. the shortest route linking all points, one
> > could get wrong since points of  a narrowpeninsula could have points
> > closest to the opposite border than from the next point on the border...
> >
> > Suppose we are stuck, and should redraw polygons by hand
> >
> >
> > Le 05/11/2018 à 14:02, Patrick Giraudoux a écrit :
> >>
> >> Dear listers,
> >>
> >> There is an interesting post here:
> >>
> https://stackoverflow.com/questions/6989100/sort-points-in-clockwise-order
> >> dealing on the issue. However, I would like to know if a function has
> >> been already developped in a R package.
> >>
> >> I am coping with a young colleague's shapefile where borders of
> >> polygons have been drawn as lines quite inconsistently. To change this
> >> SpatialLinesDataFrame into a SpatialPoints object is easy. The idea is
> >> to  select the points  bordering each polygon (delete the others),
> >> define the point set as a Polygon, then rebuild step by step a
> >> SpatialPolygonsDataFrame with all its (~25) polygons. It would be much
> >> quicker than to redraw one by one the 5160 data points (two times on
> >> borders shared by two polygons).
> >>
> >> The problem is that the points must be reordered clockwise (the way
> >> lines making the  borders is all except clockwise) before making them
> >> a polygon.
> >>
> >> Any function already developped for that ?
> >>
> >> Cheers,
> >>
> >> Patrick
> >>
> >>
> >>
> >
> >
> >       [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-sig-Geo mailing list
> > [hidden email]
> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> >
>
> --
> Edzer Pebesma
> Institute for Geoinformatics
> Heisenbergstrasse 2, 48151 Muenster, Germany
> Phone: +49 251 8333081 <+49%20251%208333081>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Dr. Michael Sumner
Software and Database Engineer
Australian Antarctic Division
203 Channel Highway
Kingston Tasmania 7050 Australia

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo