<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class="">
<div class=""><font face="Courier New" class="">Dear all,</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">we have some problems / questions concerning the use of geography data with PostGIS. As far as I understood, it is not possible to use the latitude span from -90 to 90 in polygons / bounding boxes (<a href="https://trac.osgeo.org/postgis/ticket/2495" class="">https://trac.osgeo.org/postgis/ticket/2495</a>),
 if you want to construct a polygon. Otherwise you get the follwing message</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> select ST_GeogFromText('POLYGON((-1 -90, 1 -90, 1 90, -1 90, -1 -90))');</font></div>
<div class=""><font face="Courier New" class="">ERROR:  Antipodal (180 degrees long) edge detected!</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">This is not nice but can be treated by clients with the defintion of these boundary conditions.</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">But we get also strange results for ST_DWITHIN, ST_INTERSECTS with longitude spans larger than 180.</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">-- E-W-extension of 180</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> SELECT ST_DWITHIN(ST_GeogFromText('POINT(0 0)'), ST_GeogFromText('POLYGON((-90 -1, 90 -1, 90 1, -90 1, -90 -1))'), 0);</font></div>
<div class=""><font face="Courier New" class=""> st_dwithin </font></div>
<div class=""><font face="Courier New" class="">------------</font></div>
<div class=""><font face="Courier New" class=""> t</font></div>
<div class=""><font face="Courier New" class="">(1 row)</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> SELECT ST_DWITHIN(ST_GeogFromText('POINT(180 0)'), ST_GeogFromText('POLYGON((-90 -1, 90 -1, 90 1, -90 1, -90 -1))'), 0);</font></div>
<div class=""><font face="Courier New" class=""> st_dwithin </font></div>
<div class=""><font face="Courier New" class="">------------</font></div>
<div class=""><font face="Courier New" class=""> f</font></div>
<div class=""><font face="Courier New" class="">(1 row)</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">-- E-W-extension of 182</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> SELECT ST_DWITHIN(ST_GeogFromText('POINT(0 0)'), ST_GeogFromText('POLYGON((-91 -1, 91 -1, 91 1, -91 1, -91 -1))'), 0);</font></div>
<div class=""><font face="Courier New" class=""> st_dwithin </font></div>
<div class=""><font face="Courier New" class="">------------</font></div>
<div class=""><font face="Courier New" class=""> f</font></div>
<div class=""><font face="Courier New" class="">(1 row)</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> SELECT ST_DWITHIN(ST_GeogFromText('POINT(180 0)'), ST_GeogFromText('POLYGON((-91 -1, 91 -1, 91 1, -91 1, -91 -1))'), 0);</font></div>
<div class=""><font face="Courier New" class=""> st_dwithin </font></div>
<div class=""><font face="Courier New" class="">------------</font></div>
<div class=""><font face="Courier New" class=""> t</font></div>
<div class=""><font face="Courier New" class="">(1 row)</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">The result is, that, if you enlarge the polygon, the one point (0,0) goes outside, the other point goes (180,0) inside. The only explanation, I can imagine, is, that PostGIS choose always the polygon, which has
 a longitude extension which is smaller/equal 180. If this is true, this is a real problem. If you are using the geography type, it is not possible to use polygons, which has a longitude extension larger than 180. Normally this should be solved with the orientation
 of the poylgon, but the orientation has obviously no effect.</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">--Clockwise Orientation</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> SELECT ST_DWITHIN(ST_GeogFromText('POINT(0 0)'), ST_GeogFromText('POLYGON((-91 -1, -91 1, 91 1, 91 -1, -91 -1))'), 0);</font></div>
<div class=""><font face="Courier New" class="">st_dwithin </font></div>
<div class=""><font face="Courier New" class="">------------</font></div>
<div class=""><font face="Courier New" class=""> f</font></div>
<div class=""><font face="Courier New" class="">(1 row)</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> select ST_Orientation(ST_GeomFromText('POLYGON((-91 -1, -91 1, 91 1, 91 -1, -91 -1))'));</font></div>
<div class=""><font face="Courier New" class=""> st_orientation </font></div>
<div class=""><font face="Courier New" class="">----------------</font></div>
<div class=""><font face="Courier New" class="">              1</font></div>
<div class=""><font face="Courier New" class="">(1 row)</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">--Counterclockwise Orientation</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> SELECT ST_DWITHIN(ST_GeogFromText('POINT(0 0)'), ST_GeogFromText('POLYGON((-91 -1, 91 -1, 91 1, -91 1, -91 -1))'), 0);</font></div>
<div class=""><font face="Courier New" class=""> st_dwithin </font></div>
<div class=""><font face="Courier New" class="">------------</font></div>
<div class=""><font face="Courier New" class=""> f</font></div>
<div class=""><font face="Courier New" class="">(1 row)</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">geoDB=> select ST_Orientation(ST_GeomFromText('POLYGON((-91 -1, 91 -1, 91 1, -91 1, -91 -1))'));</font></div>
<div class=""><font face="Courier New" class=""> st_orientation </font></div>
<div class=""><font face="Courier New" class="">----------------</font></div>
<div class=""><font face="Courier New" class="">             -1</font></div>
<div class=""><font face="Courier New" class="">(1 row)</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">Has anybody found a workaround for this? Or did I misunderstood the concept behind this behaviour?</font></div>
<div class=""><font face="Courier New" class=""><br class="">
</font></div>
<div class=""><font face="Courier New" class="">Best regards</font></div>
<div class=""><font face="Courier New" class="">Christian</font></div>
</div>
</body>
</html>