postgresql – Postgis中的2点之间的距离,以srid 4326为单位

前端之家收集整理的这篇文章主要介绍了postgresql – Postgis中的2点之间的距离,以srid 4326为单位前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这可能是一个简单的问题,但我对PostGIS并不是非常的好,而且还没有完全了解这一切.

基本上我有一个带有POINT列(点)的表(节点).我已经在此列创建了一个索引

create index nodes__points on nodes using gist (point)

列是创建的

select addgeometrycolumn('nodes','points','POINT',4326,2)

我正在使用srid 4326,因为我添加的形式(纬度,经度)的数据. (即,爱尔兰都柏林的职位的坐标系统= 53.353 lon = -6.264(我添加了GeomFromText(‘POINT(-6.264 53.535)’))).

对于每个点,我想要找到大约在一个1公里的框内,以该点为中心的点(所以selcet a.id,count(*)从节点为a,节点为b,其中SOME_DISTANCE_FUNCTION_HERE(a.point,b.point,1000)group by a.id;它不一定是精确的,只是一个粗俗的生意人物,1公里的bBox是罚款,1公里的圈子是罚款,它不一定是1公里,只是这个顺序的数量.

ST_Distance / ST_DWithin / etc都使用SRID的单位,其中4326 / WGS64是度数(因此1 = 1度的度数/经度).但我想用米.

我尝试了ST_distance_sphere和st_dwithin可以使用米,但如果我这样做,解释说明索引没有被使用.

我怎么能粗略地得到我想要的,并使用地理指标?

更新:这是在Postgresql 9.1和PostGIS 2.0 svn构建.

您可以使用ST_Transform来使用米,还会注意到并非所有功能都可用于地理类型,但是如果您真的需要使用速度ST_DWithin,则是最快的方式.以下是以度数和米为单位的转换次数近似值:
| places | degrees    | distance |
| ------ | ---------- | -------- |
| 0      | 1.0        | 111 km   |
| 1      | 0.1        | 11.1 km  |
| 2      | 0.01       | 1.11 km  |
| 3      | 0.001      | 111 m    |
| 4      | 0.0001     | 11.1 m   |
| 5      | 0.00001    | 1.11 m   |
| 6      | 0.000001   | 0.111 m  |
| 7      | 0.0000001  | 1.11 cm  |
| 8      | 0.00000001 | 1.11 mm  |

猜你在找的Postgre SQL相关文章