[postgis-users] Possible function to convert +-180 featuresto0-360 longitudes

pcreso at pcreso.com pcreso at pcreso.com
Fri Jun 20 14:22:40 PDT 2008


Thanks guys,

I thought this had been done, but perusing through the docs I failed to spot it! I figured it would be a useful place to start learning about plpgsql functions, but I've obviously been beaten to it with a C version.

I'm increasingly finding that PostGIS does pretty much everything I need (or want) but sometimes miss finding out how in the docs, but the list here always comes to the rescue. The range of supported functions is most impressive!


Thanks,

  Brent



> > 
> > CREATE OR REPLACE FUNCTION
> st_shift_longitude(geometry)
> >   RETURNS geometry AS
> > '$libdir/liblwgeom',
> 'LWGEOM_longitude_shift'
> >   LANGUAGE 'c' IMMUTABLE STRICT;
> > COMMENT ON FUNCTION st_shift_longitude(geometry) IS
> 'Reads 
> > every point/vertex in every component of every feature
> in a 
> > geometry, and if the longitude coordinate is <0,
> adds 360 to 
> > it. The result would be a 0-360 version of the data to
> be 
> > plotted in a 180 centric map';
> > 
> > 
> > Just my two cents,
> > Regina
> > 
> > 
> > -----Original Message-----
> > From: postgis-users-bounces at postgis.refractions.net
> > [mailto:postgis-users-bounces at postgis.refractions.net]
> On 
> > Behalf Of Paul Ramsey
> > Sent: Friday, June 20, 2008 2:47 AM
> > To: pcreso at pcreso.com; PostGIS Users Discussion
> > Subject: Re: [postgis-users] Possible function to
> convert 
> > +-180 features to0-360 longitudes
> > 
> > ST_Shift_Longitude?
> > 
> > On Fri, Jun 20, 2008 at 5:52 AM, 
> <pcreso at pcreso.com> wrote:
> > > Hi,
> > >
> > > I believe such a function is feasible, but my
> programming skills are
> > pretty minimal, so any advice appreciated.
> > >
> > > I have data in a custom mercator projection,
> crossing 180 degrees. I
> > can use ST_transform to generate a lat/long
> (EPSG:4326) 
> > version, but only in a +-180 longtitudinal space,
> which 
> > results in features at each side of a map with lines
> joining 
> > them running across the map.
> > >
> > > It seems feasible to have a function (to360 ?)
> which reads every
> > point/vertex in every component of every feature in a 
> > geometry column, & if the longitude coordinate is
> <0, adds 
> > 360 to it. The result would be a 0-360 version of the
> data to 
> > be plotted in a 180 centric map.
> > >
> > > Given the original data was not split at 180,
> this should simply
> > rebuild the correct topology of the features. I'm
> not looking 
> > to split or join features which cross the 180 or 0
> longitude lines.
> > >
> > > So, am I wrong in any of my assumptions, & if
> not, can 
> > anyone point me
> > to some relevant examples to learn from or suggest how
> I 
> > should go about writing such a function?
> > >
> > >
> > > Thanks,
> > >
> > >   Brent Wood
> > > _______________________________________________
> > > postgis-users mailing list
> postgis-users at postgis.refractions.net
> > >
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> > >
> > _______________________________________________
> > postgis-users mailing list
> postgis-users at postgis.refractions.net
> >
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> > -----------------------------------------
> > The substance of this message, including any
> attachments, may 
> > be confidential, legally privileged and/or exempt from
> 
> > disclosure pursuant to Massachusetts law. It is
> intended 
> > solely for the addressee. If you received this in
> error, 
> > please contact the sender and delete the material from
> any computer.
> > 
> > _______________________________________________
> > postgis-users mailing list
> postgis-users at postgis.refractions.net
> >
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> > 
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users



More information about the postgis-users mailing list