Quiero buscar objetos que tengan al menos un punto dentro de un rectángulo. En función del tamaño del rectángulo, PostGIS a veces devuelve el objeto contenido y a veces no.
create table t1 (id integer not null primary key, coords geography(linestring));
insert into t1 values (1, 'linestring(9.4 48.5, 9.2 48.6, 9.0 48.8)')
Así que la tabla contiene una cadena de líneas, que consiste en 3 coordenadas (en algún lugar de la zona de Stuttgart).
Ahora quiero buscar todos los objetos que tengan al menos un punto dentro de un rectángulo determinado. Utilizo un polígono para este límite. La siguiente consulta devuelve la cadena de líneas de arriba:
select t.id, st_astext(t.coords) from t1 t
where ST_Intersects(
ST_GeogFromText('POLYGON((-110.0 49.0, 10.0 49.0, 10.0 47.0, -110.0 47.0, -110.0 49.0))'),
t.coords)
> 1, LINESTRING(9.4 48.5,9.2 48.6,9 48.8)
En la siguiente consulta, acabo de modificar el borde derecho (este) del rectángulo y lo he movido de lon=10,0 a lon=20,0. Esta consulta no devuelve ningún resultado:
select t.id, st_astext(t.coords) from t1 t
where ST_Intersects(
ST_GeogFromText('POLYGON((-110.0 49.0, 20.0 49.0, 20.0 47.0, -110.0 47.0, -110.0 49.0))'),
t.coords)
¿Qué estoy haciendo mal?
Algunos datos sobre mi entorno:
SELECT version() || ' ' || postgis_full_version();
PostgreSQL 12.3 (Debian 12.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit POSTGIS="3.0.1 ec2a9aa" [EXTENSION] PGSQL="120" GEOS="3.7.1-CAPI-1.11.1 27a5e771" PROJ="Rel. 5.2.0, September 15th, 2018" LIBXML="2.9.4" LIBJSON="0.12.1" LIBPROTOBUF="1.3.1" WAGYU="0.4.3 (Internal)"