拜托,你能解释一下earth_box函数的这种行为......或者我做错了什么?
使用的数据
40.749276, -73.985643 = Empire State Building - is in my table 40.689266, -74.044512 = Statue of Liberty - is my current position in select - 8324m far from Empire State Building
我的桌子
=> select id, latitude, longitude, title from requests; id | latitude | longitude | title ----+-----------+------------+----------------------- 1 | 40.749276 | -73.985643 | Empire State Building
从帝国大厦到自由女神像的距离
=> SELECT id, latitude, longitude, title, earth_distance(ll_to_earth(40.689266, -74.044512), ll_to_earth(latitude, longitude)) as distance_from_current_location FROM requests ORDER BY distance_from_current_location ASC; id | latitude | longitude | title | distance_from_current_location ----+-----------+------------+-----------------------+-------------------------------- 1 | 40.749276 | -73.985643 | Empire State Building | 8324.42998846164
我目前的位置是远离帝国大厦的距离超过8000米的Libery雕像,但是即使半径只有5558m,也选择id为1的返回行!你能解释一下这种行为或出了什么问题吗?
=> SELECT id,latitude,longitude,title FROM requests WHERE earth_box(ll_to_earth(40.689266, -74.044512), 5558) @> ll_to_earth(requests.latitude, requests.longitude); id | latitude | longitude | title ----+-----------+------------+----------------------- 1 | 40.749276 | -73.985643 | Empire State Building
扩展和postgresql的版本
=> \dx List of installed extensions Name | Version | Schema | Description ---------------+---------+------------+-------------------------------------------------------------- cube | 1.0 | public | data type for multidimensional cubes earthdistance | 1.0 | public | calculate great-circle distances on the surface of the Earth plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language => select version(); version -------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 9.4beta2 on x86_64-apple-darwin13.3.0, compiled by Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn), 64-bit
谢谢你