[postgis-users] Oriented BBox Efficient computing?
Stephen Woodbridge
woodbri at swoodbridge.com
Sat Oct 25 06:41:23 PDT 2014
And if you do that on the convex hull rather than the original geometry,
you will have less points to consider while doing the evaluation.
-Steve
On 10/25/2014 8:52 AM, Rémi Cura wrote:
> Found a python version here for minimal area enclosing rectangle
> http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#minarearect
> It takes a numpy 2D array as point
> That means it is possible to use shapely to read postgis wkb geom, then
> convert it to numpy and use opencv afterward.
>
> There is also this implementation in python (iterate over all possible
> edge angle)
> https://github.com/dbworth/minimum-area-bounding-rectangle/blob/master/python/min_bounding_rect.py
>
> To implement rotating caliper,
> I would need some functions like :
> - compute robust orientation of an edge (easy)
> - loop on points (should be provided)
> - area of a rectangle defined by 4 points and 1 angle (=2 caliper
> sets) (easy)
>
> I guess using only the geos_c.h api is not a good solution.
> Where should I look in the cpp geos jungle?
>
> Cheers,
> Rémi-C
>
> 2014-10-25 2:23 GMT+02:00 Åsmund Tokheim <asmundto at gmail.com
> <mailto:asmundto at gmail.com>>:
>
> As far as I can tell, you shouldn't order and rotate, or you'll be
> looking at a O(n^2) implementation. During an iteration of
> http://cgm.cs.mcgill.ca/~orm/rotcal.html
> <http://cgm.cs.mcgill.ca/%7Eorm/rotcal.html>, it seems like you can
> make the following assumptions:
>
> The next angle you should rotate to will be one of the four angles,
> given by the current extreme points and their next clockwise
> neighbour. So you should be able to find the next minimum clockwise
> rotation in O(1) time
>
> Also whenever you do a clockwise rotation to orient one of the
> support lines along a new edge, the extreme points for the other
> support lines stay the same. You only need to update the extreme
> point that was on the edge we now use as a support line, to its next
> clockwise point. Using the new extreme points and caliper's angle,
> you can calculate the bbox area in O(1) time as well.
>
> Regards
> Åsmund
>
>
> On Fri, Oct 24, 2014 at 7:09 PM, Rémi Cura <remi.cura at gmail.com
> <mailto:remi.cura at gmail.com>> wrote:
>
> Ok if I understand right,
> implementing it at the sql level would be :
>
> - compute convex envelop
> - order edges by angle
> - round angle to a given precision, keep distinct values
> - for each angle, rotate and compute bbox and area
>
> keep bbox and rotation giving the min area.
>
> Cheers,
> Rémi-C
>
> 2014-10-23 18:46 GMT+02:00 Stephen V. Mather
> <svm at clevelandmetroparks.com <mailto:svm at clevelandmetroparks.com>>:
>
> That would be really cool. Could be a set of functions. It
> would be interesting to see if the triangulation
> optimizations listed at
> http://cgm.cs.mcgill.ca/~orm/rotcal.html
> <http://cgm.cs.mcgill.ca/%7Eorm/rotcal.html> are faster than
> the JTS/GEOS equivalents.
>
> Stephen V. Mather
> GIS Manager
> (216) 635-3243 <tel:%28216%29%20635-3243> (Work)
> clevelandmetroparks.com <http://clevelandmetroparks.com>
>
>
>
>
> ________________________________________
> From: postgis-users-bounces at lists.osgeo.org
> <mailto:postgis-users-bounces at lists.osgeo.org>
> <postgis-users-bounces at lists.osgeo.org
> <mailto:postgis-users-bounces at lists.osgeo.org>> on behalf of
> Sandro Santilli <strk at keybit.net <mailto:strk at keybit.net>>
> Sent: Thursday, October 23, 2014 12:36 PM
> To: PostGIS Users Discussion
> Subject: Re: [postgis-users] Oriented BBox Efficient computing?
>
> On Thu, Oct 23, 2014 at 06:17:56PM +0200, Rémi Cura wrote:
> > Wov thanks everybody :
> > Seems it possible to do it fully geometrically :
> > http://cgm.cs.mcgill.ca/~orm/rotcal.html
> <http://cgm.cs.mcgill.ca/%7Eorm/rotcal.html>
>
> Nice, would be a good candidate for a new PostGIS function
> (possibly via JTS/GEOS)
>
> --strk;
>
> () Free GIS & Flash consultant/developer
> /\ http://strk.keybit.net/services.html
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> <mailto:postgis-users at lists.osgeo.org>
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> <mailto:postgis-users at lists.osgeo.org>
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org>
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org>
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
More information about the postgis-users
mailing list