Cum pentru a determina dacă o parte geotochka (latitudinea, longitudinea) la raza
decizie proastă. O astfel de cerere poate utiliza indexul pe o coordonată, dar va trebui să facă o căutare exhaustivă a doua coordonate. Ieșire două:
Utilizați georasshirenie pentru baze de date și de a folosi un indice spațial de la ea. Aceasta este opțiunea corectă.
În cazul în care acest lucru nu este posibil, este necesar să se ia în considerare geohash coordonate, a pus într-o bază de date și de a face o cerere, trage obiecte geohash'em care se încadrează în intervalul dorit (de exemplu, intervalul poate fi de până la patru).
Da, exact. Obține o căutare cu timp logaritmică numărul de utilizatori, mai bine și să vină cu este imposibilă. Și odată ce a găsit utilizatorii din pătrat dorit ei pot verifica deja urne pentru a intra în cercul de o anumită rază.
Ai atât de multe puncte sau de ce intensiv forța de muncă? Pe măsură ce punct salvat? În baza de date, și dacă da, în ce? In MongoDB, de exemplu, există un www.mongodb.org/display/DOCS/Geospatial+Indexing/ index. cu care puteți selecta rapid toate punctele dintr-o anumită rază de coordonatele specificate.
În general, dacă doriți să obțineți un răspuns calificat la întrebarea dvs., vă rugăm să descrieți ceea ce ai nevoie de mai multe detalii.
Dacă am găsit cum să calculeze distanța, îmi place acest algoritm este furnizat de la început))
Această decizie prea frunte.
De ce biblioteca? Există o formulă în linia 1, determină distanța în metri.
$ Distanța = 2 * asin (sqrt (pow (sin (deg 2rad (($ lat1- $ lat2) / 2)) 2) +
cos (deg 2rad ($ lat1)) * cos (deg 2rad ($ lat2)) *
pow (sin (deg 2rad (($ lng1- $ lng2) / 2)) 2))) * 6378245;
În cazul în care punctele sunt stocate în baza de date - alege nu toate, dar numai în opredelnie. Și pentru ei deja pentru a calcula distanța
Puteți înscrie un cerc într-un pătrat, și să nu ia în considerare faptul că această casetă nu este inclus.
Vorbeste despre aparținând pătratul brichetei.
Există un mic, dar încă o diferență între „face parte din raza“ și „o parte a pieței.“ decizie Piața mai ușor pentru el, la toate nu este nevoie de artilerie grave GIS, și funcționează imediat.
Iată cum:
0. Se presupune că coordonatele punctului în radiani stocate în baza de date în domeniile lat și lng.
1. creează un index unic pe ambele domenii pentru a accelera interogări.
2. În codul traduce 10 km la radiani (cred că un metru 0.1988 radiani, dar a verifica).
3. Pentru a determina care termeni sunt incluse într-un pătrat cu laturile de 10 km la un punct predeterminat, în centru, a scrie această interogare:
Primele 3 rânduri (SET) ar trebui să fie eliminate și înlocuite în cererea de a utiliza variabile de la limba dvs. server de aplicații (Python, după cum am înțeles).