Intento averiguar todos los geopuntos que intersecan el polígono establecido como parámetro.
El problema es cuando paso polígono que abarca aproximadamente una zona del estrecho de Bering (cerca de 180 longitud):
Así que uso la consulta:
SELECT ST_AsText(l.geo_point)
FROM "lightnings" "l"
WHERE (ST_Intersects(ST_GeomFromText('Polygon((132.0 40.0, -148.0 40.0, -148.0 -8.0, 132.0 -8.0, 132.0 40.0) )', 4326), geo_point));
Como puede ver, los vértices están colocados en el orden correcto, en el sentido de las agujas del reloj, desde el Noroeste. Pero el resultado cubre un área exterior e incluye todo otro mundo.
Por ejemplo, en resultado:
POINT(75.5637 40.0434)
El problema no toca el meridiano 0.
Prueba elemental:
SELECT ST_Area(ST_GeomFromText('Polygon((0.0 60.0, 10.0 60.0, 10.0 40.0, 0.0 40.0, 0.0 60.0) )', 4326))
UNION ALL
SELECT ST_Area(ST_GeomFromText('Polygon((-5.0 60.0, 5.0 60.0, 5.0 40.0, -5.0 40.0, -5.0 60.0) )', 4326))
UNION ALL
SELECT ST_Area(ST_GeomFromText('Polygon((175.0 60.0, -175.0 60.0, -175.0 40.0, 175.0 40.0, 175.0 60.0) )', 4326))
da el resultado:
200
200
7000
¿Hay algún truco sencillo para forzar que PostGIS me entienda? No me gusta la idea de dividir el polígono...