sql >> Databáze >  >> RDS >> Mysql

Geolokační SQL dotaz nenašel přesnou polohu

Ve svém prvním dotazu se domnívám, že jste při odečítání převrátili zeměpisné délky. Sférický zákon kosinus je:

d = acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(long2−long1))*R

Pokud je lat1 nahrazeno tblcity.latitude, long1 musí být nahrazeno tblcity.longitude. Myslím, že jste ve svém dotazu omylem nahradili long2. Funguje to lépe?

SELECT tblcity.city, tblcity.latitude, tblcity.longitude, 
truncate((degrees(acos( sin(radians(tblcity.latitude)) 
* sin(radians(45.266708)) 
+ cos(radians(tblcity.latitude)) 
* cos(radians(45.266708)) 
* cos(radians(-73.616257 - tblcity.longitude) ) ) ) 
* 69.09*1.6),1) as distance 
FROM tblcity HAVING distance < 10 ORDER BY distance desc 

Váš druhý dotaz jsem ještě nezkoumal, ale doufám, že to pomůže.



  1. Importujte data Excelu do PostgreSQL 9.3

  2. Ovladač nemohl navázat zabezpečené připojení k serveru SQL Server pomocí šifrování Secure Sockets Layer (SSL).

  3. '𠂉' Není platný znak unicode, ale ve znakové sadě unicode?

  4. mysql_num_rows() očekává, že parametr 1 bude zdroj, zadaný boolean