Estoy tratando de encontrar donde un usuario se basa en su punto y una tabla de varios polígonos.
Tengo actualmente:
SELECT u.name l.name
FROM users u
INNER JOIN locations AS l
ON ST_Intersects(u.location, l.geog)
Donde tanto u.ubicación y l.geog son de tipo geografía.
Y me sale el Error
Boom! No podía generar fuera de punto
He creado una nueva tabla con un solo usuario y una multi polígono y todavía desencadenar el error anterior.
Si yo me vuelvo a la ubicación original conjunto y añadir ::geometría, el punto parece a la tierra en 23 de los 28 posibles múltiples polígonos que también es incorrecto.
Podría usted me dirija en lo que estoy haciendo mal?
Me mudé a geom y el problema persistió (no el boom, pero el azar de regresar de polígonos).
He descubierto el problema.
Los datos que estaba usando era en el formato 27700, pero no tenía un conjunto SRID de 27700.
Así que para hacer este trabajo, he tenido que establezca explícitamente a la correcta SRID antes de cambiar:
SELECT u.name l.name
FROM users u
INNER JOIN locations AS l
ON ST_Intersects(u.location, ST_Transform(ST_SetSRID(l.geom,27700),4326))