Tengo una tabla llamada h2combines en Postgres que tiene dos campos de geometría de puntos: geom1 y geom2, y algunos otros campos. Quiero seleccionar todos los registros que geom1 y gemo2 tienen 400 millas. Intenté esto:
SELECT * from h2combines WHERE ST_DWithin(geom1, geom2, 643738);Sin embargo, devolvió todas las filas. Parece que no entiendo algo aquí. ¡Gracias!
Bienvenido a SO.
Para obtener la distancia en metros/millas, debe convertir sus geometrías en geography , por ejemplo
SELECT * FROM h2combines WHERE ST_DWithin(geom1::geography, geom2::geography, 643737.6); Tenga en cuenta que los cálculos con GEOMETRY y GEOGRAPHY se realizan de manera diferente, al igual que sus resultados. GEOGRAPHY calcula las coordenadas sobre una superficie esférica (que puede ser mucho más lenta que GEOMETRY ) y usa metros como unidad de medida, mientras que GEOMETRY usa una proyección plana y usa la unidad SRS.