[postgis-users] ST_intersects query that crosses date line boundaries
Brent Wood
pcreso at pcreso.com
Thu Feb 19 17:49:29 PST 2015
Hi,
There are two ways to draw a line between (-179, 0) & (179 0) - the long & short way around the earth, & Postgis can't tell which is correct.
You could:1. cast the geometry to a geography for the query,2. try ST_ShiftLongitude([geometry]) which will change it to a 0-360 longitude space instead of +-180 (this was written to fix some 180 issues)
3. try hard coding 0-360 longitudes in your query:
ST_GeomFromText('MULTIPOLYGON(((179.64844 67.73477,204.96094 67.60118,198.80859 61.8462,179.64844 67.73477)))')
Note that points in your table will also need shifting to a 0-360 space in the query for 2 & 3.
You should include a ST_SetSRID([geometry],4326) as well so Postgis knows the CRS of the created polygon, & your point columns should also have this set.
HTH,
Brent Wood
From: Trang Nguyen <Trang.Nguyen at inrix.com>
To: "postgis-users at lists.osgeo.org" <postgis-users at lists.osgeo.org>
Sent: Friday, February 20, 2015 10:57 AM
Subject: [postgis-users] ST_intersects query that crosses date line boundaries
<!--#yiv5574049598 _filtered #yiv5574049598 {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;}#yiv5574049598 #yiv5574049598 p.yiv5574049598MsoNormal, #yiv5574049598 li.yiv5574049598MsoNormal, #yiv5574049598 div.yiv5574049598MsoNormal {margin:0in;margin-bottom:.0001pt;font-size:11.0pt;font-family:"Calibri", "sans-serif";}#yiv5574049598 a:link, #yiv5574049598 span.yiv5574049598MsoHyperlink {color:blue;text-decoration:underline;}#yiv5574049598 a:visited, #yiv5574049598 span.yiv5574049598MsoHyperlinkFollowed {color:purple;text-decoration:underline;}#yiv5574049598 span.yiv5574049598EmailStyle17 {font-family:"Calibri", "sans-serif";color:windowtext;}#yiv5574049598 .yiv5574049598MsoChpDefault {font-family:"Calibri", "sans-serif";} _filtered #yiv5574049598 {margin:1.0in 1.0in 1.0in 1.0in;}#yiv5574049598 div.yiv5574049598WordSection1 {}-->Hi,
I am using Postgres 9.3 and have a table with geometry columns: startloc geometry(Point), endloc geometry(Point), When I run a query that crosses the date line boundary, I’m getting incorrect results. Example: SELECT * from od1.trip_v1_partitioned where startts>=TIMESTAMP '2015-02-16T20:00:00.000Z'and startts<TIMESTAMP '2015-02-17T20:00:00.000Z'and endts<TIMESTAMP '2015-02-17T20:00:00.000Z' and ST_intersects(startloc, ST_MakeValid(ST_GeomFromText('MULTIPOLYGON(((179.64844 67.73477,-155.03906 67.60118,-161.19141 61.8462,179.64844 67.73477)))'))) Would I need to change how my columns are stored (this would require a big migration), or is it possible to adjust my query to handle this correctly? Thanks,
Trang
_______________________________________________
postgis-users mailing list
postgis-users at lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20150220/399d27bd/attachment.html>
More information about the postgis-users
mailing list