这可能是一个简单的问题,但我不太擅长PostGIS,也不完全了解所有这些.
基本上我有一个表(nodes
)和一个点列(point
).我已经在这个专栏上创建了一个索引
create index nodes__points on nodes using gist (point)
该列是用
select addgeometrycolumn('nodes', 'points', 'POINT', 4326, 2)
我之所以使用SRID4326,是因为我在添加表格(纬度、经度)中的数据.(即,爱尔兰都柏林的坐标系为lat=53.353 lon=-6.264(我加了GeomFromText('POINT(-6.264 53.535)')
)).
对于每个点,我想找到大约在以该点为中心的1公里长方体内的所有点(所以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;
.它不一定是精确的,只是一个粗略的惠利斯特图形.1公里的长方体是好的,1公里的圆是好的.它不一定是精确的1公里,只是那个数量级.
ST_Distance
/ST_DWithin
/等都使用SRID的单位,对于4326/WGS64,SRID的单位是度(因此1=1度纬度/经度).但我想用米.
我try 了ST_distance_sphere
和st_dwithin
,它们可以使用米,但如果我这样做,explain
表明索引没有被使用.
我怎样才能大致得到我想要的,and使用地理索引?
UPDATE:这是在PostgreSQL 9.1和PostGIS 2.0 svn版本上.