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 <[email protected]
<mailto:[email protected]>>:

    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 <[email protected]
    <mailto:[email protected]>> 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
        <[email protected] <mailto:[email protected]>>:

            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: [email protected]
            <mailto:[email protected]>
            <[email protected]
            <mailto:[email protected]>> on behalf of
            Sandro Santilli <[email protected] <mailto:[email protected]>>
            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
            [email protected]
            <mailto:[email protected]>
            http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
            _______________________________________________
            postgis-users mailing list
            [email protected]
            <mailto:[email protected]>
            http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



        _______________________________________________
        postgis-users mailing list
        [email protected] <mailto:[email protected]>
        http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users



    _______________________________________________
    postgis-users mailing list
    [email protected] <mailto:[email protected]>
    http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users




_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users


_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

Reply via email to