簡體   English   中英

地理和幾何之間的精度和性能方面的郵政差異

[英]postgis difference in terms of precision and performance between geography and geometry

我開發了一種電報機器人,該機器人可以使2位用戶使用相同的語言,並且他們倆都在尋找帶postgres查詢的合作伙伴。 我想添加可選功能以根據位置(最近的用戶)匹配用戶。 由於這是一個選項,我認為我默認情況下會將列保持為空,如果用戶發送了他的位置,則添加它。 我將使用postigs實現它。 我有兩個問題:

  1. 使用地理或幾何更好嗎? 因為人們可能來自世界各地,在這種情況下,我讀到這本書比較好,但是無論如何,我不需要任何精確的數據,只需知道誰是最近的用戶以及他們之間的距離即可(大約匹配時作為附加信息顯示)。 我希望查詢能夠快速運行(我的意思是少於1秒)。 我當時正在考慮使用KNN在列上創建索引並使用<->排序。 這是一個好選擇嗎? 你會怎么做? 幾何還是地理? 我的主意還好嗎?

  2. 因為,正如我所說,該字段也可以為NULL,因為用戶不想提供該位置,因此我希望為在順序中指定位置的用戶提供更好的優先級(如果沒有指定的位置i)從NULL值用戶中隨機抽取一位。 查詢可能嗎?

我的機器人是用python編寫的,如果有幫助的話。

非常感謝你

根據第一點,我認為本文將最好地回答您的問題

http://postgis.net/docs/manual-1.5/ch04.html#PostGIS_Geography

關於速度-只需在geom / geog列上創建gist索引,然后使用st_Dwithin(geom1,geom2,100)並按st_distance(geom1,geom2)對結果進行排序,它將足夠快,直到擁有數千萬用戶為止。

第二點:是的,例如,它只是工會

select *, st_distance(u1.geom, u2.geom) dist from 
(Select u2.*
  from users u1, users u2
 where u1.id=1
   and u1.id<>u2.id
   and st_dwithin(u1.geom, u2.geom, 5000)
UNION
Select * , null dist
  from users
 where id<>1
   and geom is null
 LIMIT 1) a
order by dist

我想念其他標准,如性別,年齡等,但當然在兩個選擇中都使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM