[postgis-users] Problem with convex hulls that cross thedateline

Paragon Corporation lr at pcorp.us
Thu Sep 8 17:57:59 PDT 2011


I don't think it's that hard.  The function hack is all in SQL.
 
Just look at the st_buffer geography sql function and create a similar
ST_ConvexHull sql function replace ST_Buffer with ST_ConvexHull and get rid
of the distance arg
 
Hope that helps,
Regina


  _____  

From: postgis-users-bounces at postgis.refractions.net
[mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of Sarah
Berke
Sent: Thursday, September 08, 2011 3:22 PM
To: postgis-users at postgis.refractions.net
Subject: Re: [postgis-users] Problem with convex hulls that cross
thedateline


Thanks very much, Regina, Paul, and Ben for the responses. I don't think my
hacking skills are quite up to following Paul's suggestion, but I can try to
find an equal area projection for the Pacific Ocean. It seems like that
would work. I also rather like the idea of translating the points--if I did
that, would it then be easy to just translate the entire hull back into
position?

Thanks,
Sarah
_________________________________
Sarah K Berke
Postdoctoral Scholar
Department of the Geophysical Sciences
University of Chicago
5734 S. Ellis Ave
Chicago, IL 60637






------------------------------

Message: 2
Date: Wed, 7 Sep 2011 01:18:51 -0400
From: "Paragon Corporation" <lr at pcorp.us>
Subject: Re: [postgis-users] Problem with convex hulls that cross the
       dateline
To: "'PostGIS Users Discussion'"
       <postgis-users at postgis.refractions.net>
Message-ID: <F8675FD4BB254CD09D2359CF11685DEA at D>
Content-Type: text/plain; charset="us-ascii"

 Sarah,
 >  I'm having trouble making convex hulls that cross the international
dateline. Imagine 4 points making a square with the international dateline
running down the middle--I would like the convex hull to be that square, but
instead I get a giant rectangle that goes across the entire planet. I've
done some reading, and it sounds like GEOS generally has a hard time dealing
with the dateline--is that accurate?
Yes GEOS  only deals with planar coordinates.  Geography is the only
geodetic aware type and there is no ConvexHull function for it.

 >  Does anyone know of a way to get around this? I was thinking that it
might work if I use an SRID that is just like 4326 but with a central
meridian of 180, does that sound like a good plan?
No.  You should use a planar projection of some sort.  4326 squashed on a
map is no good.  Paul Ramsey might have some thoughts on the matter.

>   I'm pretty new to postGIS and I'm not sure how to either find such an
SRID or how to define it--I've been trying to find an explanation of SRID
syntax and so far coming up empty. If anyone has advice for solving this
problem, or for places where I can learn more about defining custom SRIDs,
I'd be really grateful!

You might want to check out http://spatialreference.org

 >  Here's an example--if you make this table and then look at it in QGIS
(or whatever) along with a world map, you'll see a big rectangle spanning
the entire map. On a map with
>  central meridian of zero, I'd want to see half the polygon on the left
side of the map and the other half on the right side.

 >  CREATE TABLE example AS
 >  SELECT ST_ConvexHull(
  >   ST_Collect(ST_GeomFromText('MULTIPOINT(175 5, 175 30, -175 5, -175
30)') ))::geography(Polygon, 4326) ;

My guess is you'll have to cut your area into pieces.  Still then its not
that pretty when you try to rejoin.

Sorry couldn't be more help,
Regina
http://www.postgis.us

-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://postgis.refractions.net/pipermail/postgis-users/attachments/20110907
/dca69b0a/attachment-0001.html>

------------------------------

Message: 3
Date: Tue, 6 Sep 2011 22:21:48 -0700
From: Paul Ramsey <pramsey at opengeo.org>
Subject: Re: [postgis-users] Problem with convex hulls that cross the
       dateline
To: PostGIS Users Discussion <postgis-users at postgis.refractions.net>
Message-ID:
       <CACowWR0YVqT5_wasbLoscmCnqNFAqVT2ioA=yJQ6Uv_yX9Cv0A at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

On Tue, Sep 6, 2011 at 10:18 PM, Paragon Corporation <lr at pcorp.us> wrote:
> ?Sarah,
> ?> ?I'm having trouble making convex hulls that cross the international
> dateline. Imagine 4 points making a square with the international dateline
> running down the middle--I would like the convex hull to be that square,
but
> instead I get a giant rectangle that goes across the entire planet. I've
> done some reading, and it sounds like GEOS generally has a hard time
dealing
> with the dateline--is that accurate?
> Yes GEOS? only deals with planar coordinates.? Geography is the only
> geodetic aware type and there is no ConvexHull function for it.

Although you could hack one up easily enough by copying the ideas in
ST_Buffer(geography)

P


------------------------------

Message: 4
Date: Wed, 7 Sep 2011 13:43:52 +0800
From: Ben Madin <lists at remoteinformation.com.au>
Subject: Re: [postgis-users] Problem with convex hulls that cross the
       dateline
To: PostGIS Users Discussion <postgis-users at postgis.refractions.net>
Message-ID:
       <6AFE8509-2218-4CB2-956A-1269AB5CDB4B at remoteinformation.com.au>
Content-Type: text/plain; charset=us-ascii

Sarah,

I'm sure that there are good reasons not to do this, but could you translate
your points left or right, create your convex hull then translate the
polygon back...?

Otherwise you could project it onto a custom projection that covers your
area of interest? As an example look for an equal area proj string (I know
there is one for Australia GDA94 Albers -
http://www.spatialreference.org/ref/epsg/3577) and shift the lat and lon
parameters...

cheers

Ben


On 07/09/2011, at 1:13 AM, Sarah Berke wrote:

> Hello,
>
> I'm having trouble making convex hulls that cross the international
dateline. Imagine 4 points making a square with the international dateline
running down the middle--I would like the convex hull to be that square, but
instead I get a giant rectangle that goes across the entire planet. I've
done some reading, and it sounds like GEOS generally has a hard time dealing
with the dateline--is that accurate? Does anyone know of a way to get around
this? I was thinking that it might work if I use an SRID that is just like
4326 but with a central meridian of 180, does that sound like a good plan?
I'm pretty new to postGIS and I'm not sure how to either find such an SRID
or how to define it--I've been trying to find an explanation of SRID syntax
and so far coming up empty. If anyone has advice for solving this problem,
or for places where I can learn more about defining custom SRIDs, I'd be
really grateful!
>
> Here's an example--if you make this table and then look at it in QGIS (or
whatever) along with a world map, you'll see a big rectangle spanning the
entire map. On a map with central meridian of zero, I'd want to see half the
polygon on the left side of the map and the other half on the right side.
>
> CREATE TABLE example AS
> SELECT ST_ConvexHull(
>     ST_Collect(ST_GeomFromText('MULTIPOINT(175 5, 175 30, -175 5, -175
30)') ))::geography(Polygon, 4326) ;
>
>
> Thanks very much,
> Sarah
>
> _________________________________
> Sarah K Berke
> Postdoctoral Scholar
> Department of the Geophysical Sciences
> University of Chicago
> 5734 S. Ellis Ave
> Chicago, IL 60637
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users



------------------------------



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20110908/45f399aa/attachment.html>


More information about the postgis-users mailing list