Esta es probablemente una pregunta simple, pero no soy muy bueno en PostGIS y no entiendo completamente todo esto.Distancia entre 2 PUNTOS en Postgis en srid 4326 en metros
Básicamente tengo una tabla (nodes
) con una columna POINT (point
). He creado un índice en esta columna
create index nodes__points on nodes using gist (point)
La columna fue creado con
select addgeometrycolumn('nodes', 'points', 'POINT', 4326, 2)
estoy usando srid 4326 debido a que estoy añadiendo datos que está en la forma (latitud, longitud). (es decir, el sistema de coordenadas donde la posición de Dublín, Irlanda es lat = 53.353 lon = -6.264 (que he agregado con GeomFromText('POINT(-6.264 53.535)')
)).
Para cada punto, quiero encontrar todos los puntos que están aproximadamente dentro de un cuadro de 1km centrado en ese punto (así selcet a.id, count(*) from nodes as a, nodes as b where SOME_DISTANCE_FUNCTION_HERE(a.point, b.point, 1000) group by a.id;
. No tiene que ser exacto, solo una figura huerística aproximada. Un bbox de 1 km está bien, un círculo 1 km es bien. no tiene que ser exactamente de 1 km, justo ese orden de magnitud.
el ST_Distance
/ST_DWithin
/etc. todo el uso de las unidades de la SRID, que para 4326/WGS64 es grados (por lo 1 = 1 grado de LAttitude/longitud). pero quiero usar metros.
probé ST_distance_sphere
y st_dwithin
que puede utilizar metros, pero si hago eso, el explain
muestra que el índice no se está utilizando.
¿Cómo puedo obtener aproximadamente lo que quiero, y usar el índice geográfico?
ACTUALIZACIÓN: Esto está en PostgreSQL 9.1 y PostGIS 2.0 svn build.
Tal vez de alguna ayuda: [ST_DWithin toma como parámetro de grado, no metros, ¿por qué?] (Http://stackoverflow.com/questions/8444753/st-dwithin -takes-parameter-as-degree-not-meters-why) – radek
pregunta obligatoria: ¿Qué versión de PostGIS? ¿Qué versión de PostgreSQL? – filiprem