Calculați sau interogați distanța cercului mare dintre punctele de latitudine și longitudine folosind formula Havesine (exemple PHP, Python, MySQL, MSSQL)

Formula Havesine - Distanța cercului mare - PHP, Python, MySQL

Luna aceasta am programat destul de mult în PHP și MySQL în ceea ce privește GIS. Trăgând prin net, de fapt am găsit cu greu unele dintre Calcule geografice pentru a găsi distanța dintre două locații, așa că am vrut să le împărtășesc aici.

Harta de zbor Europa cu distanța cercului mare

Modul simplu de a calcula distanța dintre două puncte este utilizarea formulei pitagorice pentru a calcula ipotenuza unui triunghi (A² + B² = C²). Acest lucru este cunoscut sub numele de distanta euclidiana.

Acesta este un început interesant, dar nu se aplică cu Geografia, deoarece distanța dintre liniile de latitudine și longitudine este distanțe nu egale în afară. Pe măsură ce vă apropiați de ecuator, liniile de latitudine se îndepărtează. Dacă utilizați un fel de ecuație simplă de triunghi, aceasta poate măsura distanța cu precizie într-o locație și teribil de greșită în cealaltă, din cauza curburii Pământului.

Distanța cercului mare

Rutele parcurse pe distanțe lungi în jurul Pământului sunt cunoscute sub numele de Distanța cercului mare. Adică... cea mai scurtă distanță dintre două puncte de pe o sferă este diferită de punctele de pe o hartă plată. Combină asta cu faptul că liniile de latitudine și longitudine nu sunt echidistante... și ai un calcul dificil.

Iată o explicație video fantastică despre modul în care funcționează Cercurile mari.

Formula Haversine

Distanța utilizând curbura Pământului este încorporată în Formula Haversine, care folosește trigonometria pentru a permite curbura pământului. Când găsiți distanța dintre 2 locuri de pe pământ (în linie dreaptă), o linie dreaptă este într-adevăr un arc.

Acest lucru este aplicabil în zborul aerian - v-ați uitat vreodată pe harta reală a zborurilor și ați observat că sunt arcuite? Asta pentru că este mai scurt să zbori într-o arcadă între două puncte decât direct către locație.

PHP: Calculați distanța dintre 2 puncte de latitudine și longitudine

Iată formula PHP pentru calcularea distanței dintre două puncte (împreună cu conversia milă vs. kilometru) rotunjită la două zecimale.

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'miles') {
  $theta = $longitude1 - $longitude2; 
  $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); 
  $distance = acos($distance); 
  $distance = rad2deg($distance); 
  $distance = $distance * 60 * 1.1515; 
  switch($unit) { 
    case 'miles': 
      break; 
    case 'kilometers' : 
      $distance = $distance * 1.609344; 
  } 
  return (round($distance,2)); 
}

Variabilele sunt:

  • $Latitude1 – o variabilă pentru latitudinea primei locații.
  • $Longitudine1 – o variabilă pentru longitudinea primei locații
  • $Latitude2 – o variabilă pentru latitudinea celei de-a doua locații.
  • $Longitudine2 – o variabilă pentru longitudinea celei de-a doua locații.
  • $unitate – implicit fiind mile. Acesta poate fi actualizat sau transmis ca kilometri.

Python: Calculați distanța dintre 2 puncte de latitudine și longitudine

Oricum, iată formula Python pentru calcularea distanței dintre două puncte (împreună cu conversia milă vs. kilometru) rotunjită la două zecimale. Multumim fiului meu, Bill Karr, care este Data Scientist pentru OpenINSIGHTS, pentru cod.

from numpy import sin, cos, arccos, pi, round

def rad2deg(radians):
    degrees = radians * 180 / pi
    return degrees

def deg2rad(degrees):
    radians = degrees * pi / 180
    return radians

def getDistanceBetweenPointsNew(latitude1, longitude1, latitude2, longitude2, unit = 'miles'):
    
    theta = longitude1 - longitude2
    
    distance = 60 * 1.1515 * rad2deg(
        arccos(
            (sin(deg2rad(latitude1)) * sin(deg2rad(latitude2))) + 
            (cos(deg2rad(latitude1)) * cos(deg2rad(latitude2)) * cos(deg2rad(theta)))
        )
    )
    
    if unit == 'miles':
        return round(distance, 2)
    if unit == 'kilometers':
        return round(distance * 1.609344, 2)

Variabilele sunt:

  • latitudinea 1 – o variabilă pentru prima locație latitudine.
  • longitudine1 – o variabilă pentru prima locație longitudine
  • latitudinea 2 – o variabilă pentru cea de-a doua locație latitudine.
  • longitudine2 – o variabilă pentru cea de-a doua locație longitudine.
  • unitate – implicit fiind mile. Acesta poate fi actualizat sau transmis ca kilometri.

MySQL: Preluarea tuturor înregistrărilor dintr-un interval prin calculul distanței în mile utilizând latitudinea și longitudinea

De asemenea, este posibil să utilizați SQL pentru a face un calcul pentru a găsi toate înregistrările la o anumită distanță. În acest exemplu, voi interoga MyTable în MySQL pentru a găsi toate înregistrările care sunt mai mici sau egale cu variabila $ distanță (în mile) până la locația mea la $ latitudine și $ longitudine:

Interogarea pentru recuperarea tuturor înregistrărilor dintr-un anumit distanţă prin calcularea distanței în mile între două puncte de latitudine și longitudine sunt:

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`)*pi()/180)))) * 180/pi()) * 60 * 1.1515) as distance FROM `table` WHERE distance <= ".$distance."

Va trebui să personalizați acest lucru:

  • $ longitudine - aceasta este o variabilă PHP în care trec longitudinea punctului.
  • $ latitudine - aceasta este o variabilă PHP în care trec longitudinea punctului.
  • $ distanta - aceasta este distanța la care doriți să găsiți toate înregistrările mai mici sau egale.
  • tabel - acesta este tabelul ... veți dori să îl înlocuiți cu numele tabelei.
  • latitudine - acesta este câmpul latitudinii tale.
  • longitudine - acesta este domeniul longitudinii tale.

MySQL: Preluarea tuturor înregistrărilor dintr-un interval prin calculul distanței în kilometri folosind latitudinea și longitudinea

Iată interogarea SQL folosind kilometri în MySQL:

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`) * pi()/180)))) * 180/pi()) * 60 * 1.1515 * 1.609344) as distance FROM `table` WHERE distance <= ".$distance."

Va trebui să personalizați acest lucru:

  • $ longitudine - aceasta este o variabilă PHP în care trec longitudinea punctului.
  • $ latitudine - aceasta este o variabilă PHP în care trec longitudinea punctului.
  • $ distanta - aceasta este distanța la care doriți să găsiți toate înregistrările mai mici sau egale.
  • tabel - acesta este tabelul ... veți dori să îl înlocuiți cu numele tabelei.
  • latitudine - acesta este câmpul latitudinii tale.
  • longitudine - acesta este domeniul longitudinii tale.

Am folosit acest cod într-o platformă de cartografiere a întreprinderii pe care am folosit-o pentru un magazin de vânzare cu amănuntul cu peste 1,000 de locații din America de Nord și a funcționat frumos.

Distanța geografică Microsoft SQL Server: STDistance

Dacă utilizați Microsoft SQL Server, acestea oferă propria lor funcție, STDistanța pentru calcularea distanței dintre două puncte folosind tipul de date Geography.

DECLARE @g geography;  
DECLARE @h geography;  
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);  
SET @h = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);  
SELECT @g.STDistance(@h);  

Sfat de pălărie pentru Manash Sahoo, VP și arhitect al Highbridge.

4 Comentarii

  1. 1

    Vă mulțumesc foarte mult pentru împărtășire. Aceasta a fost o lucrare ușoară de copiere și inserare și funcționează grozav. M-ai economisit mult timp.
    FYI pentru oricine face portarea la C:
    double deg2rad(double deg) { return deg*(3.14159265358979323846/180.0); }

  2. 2

    O postare foarte frumoasă – a funcționat foarte bine – a trebuit doar să schimb numele mesei care ține lat-long. Funcționează destul de repede pentru a... Am un număr destul de mic de lat-long-uri (< 400), dar cred că acest lucru s-ar scala bine. Frumos și site – tocmai l-am adăugat în contul meu del.icio.us și mă voi verifica în mod regulat.

  3. 4
  4. 5
  5. 8

    Cred că SQL-ul tău are nevoie de o declarație have.
    în loc de WHERE distanță <= $distanță este posibil să aveți nevoie
    utilizați HAVING distance <= $distanță

    în rest, mulțumesc că mi-ai economisit mult timp și energie.

  6. 10
  7. 11
  8. 12

    Mulțumesc foarte mult pentru distribuirea acestui cod. Mi-a economisit mult timp de dezvoltare. De asemenea, mulțumim cititorilor dumneavoastră pentru că ați subliniat că o instrucțiune HAVING este necesară pentru MySQL 5.x. Foarte util.

  9. 14
  10. 15

    Buna,

    Alta intrebare. Există o formulă pentru șirurile NMEA ca cea de mai jos?

    1342.7500,N,10052.2287,E

    $GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B

    Multumesc,
    Harry

  11. 16

    De asemenea, am constatat că WHERE nu a funcționat pentru mine. Am schimbat-o în HAVING și totul funcționează perfect. La început nu am citit comentariile și le-am rescris folosind o selectie imbricată. Ambele vor funcționa bine.

  12. 17
  13. 18

    Incredibil de util, multumesc mult! Aveam niște probleme cu noul „HAVING”, mai degrabă decât cu „WHERE”, dar odată ce am citit comentariile de aici (după aproximativ jumătate de oră de scrâșnit din dinți de frustrare =P), l-am prins să funcționeze frumos. Mulțumesc ^_^

  14. 19
  15. 20

    Rețineți că o declarație selectată ca aceasta va fi foarte intensă din punct de vedere computațional și, prin urmare, lentă. Dacă aveți multe dintre aceste interogări, lucrurile se pot bloca destul de repede.

    O abordare mult mai puțin intensă este să rulați o primă selecție (brută) folosind o zonă PĂTRATĂ definită de o distanță calculată, adică „select * from tablename unde latitudinea între lat1 și lat2 și longitudinea între lon1 și lon2”. lat1 = targetlatitude – latdiff, lat2 = targetlatitude + latdiff, similar cu lon. latdiff ~= distanta / 111 (pentru km), sau distanta/69 pentru mile, deoarece 1 grad de latitudine este ~ 111 km (variatie usoara deoarece pamantul este usor oval, dar suficient pentru acest scop). londiff = distanță / (abs(cos(deg2rad(latitudine))*111)) — sau 69 pentru mile (puteți lua de fapt un pătrat puțin mai mare pentru a ține seama de variații). Apoi luați rezultatul și introduceți-l în selectarea radială. Doar nu uitați să luați în considerare coordonatele în afara limitelor - adică intervalul de longitudine acceptabilă este de la -180 la +180 și intervalul de latitudine acceptabilă este de -90 la +90 - în cazul în care latdiff-ul sau londiff-ul dvs. se află în afara acestui interval . Rețineți că, în majoritatea cazurilor, acest lucru poate să nu fie aplicabil, deoarece afectează doar calculele pe o linie care traversează Oceanul Pacific de la pol la pol, deși intersectează o parte din Chukotka și o parte din Alaska.

    Ceea ce realizăm prin aceasta este o reducere semnificativă a numărului de puncte în raport cu care faceți acest calcul. Dacă aveți un milion de puncte globale în baza de date distribuite aproximativ uniform și doriți să căutați pe o rază de 100 km, atunci prima dvs. căutare (rapidă) are o suprafață de 10000 20 km pătrați și va produce probabil aproximativ 500 de rezultate (bazat pe o distribuție uniformă într-un suprafață de aproximativ 20 de milioane km pătrați), ceea ce înseamnă că executați calculul complex al distanței de XNUMX de ori pentru această interogare în loc de un milion de ori.

    • 21
      • 22

        Un sfat fantastic! De fapt, am lucrat cu un dezvoltator care a scris o funcție care a tras pătratul interior și apoi o funcție recursivă care a făcut „pătrate” în jurul perimetrului pentru a include și a exclude punctele rămase. Rezultatul a fost un rezultat incredibil de rapid – el a putut evalua milioane de puncte în microsecunde.

        Abordarea mea de mai sus este cu siguranță „brută”, dar capabilă. Mulțumesc din nou!

        • 23

          Doug,

          Am încercat să folosesc mysql și php pentru a evalua dacă un punct lung lat se află într-un poligon. Știți dacă prietenul dvs. dezvoltator a publicat exemple despre cum să îndepliniți această sarcină. Sau cunosti exemple bune. Mulțumesc anticipat.

  16. 24

    Bună tuturor, aceasta este declarația mea de test SQL:

    SELECT DISTINCT area_id, (
    (
    (
    acos( sin( ( 13.65 * pi( ) /180 ) ) * sin( (
    `lat_dec` * pi( ) /180 ) ) + cos( ( 13.65 * pi( ) /180 ) ) * cos( (
    `lat_dec` * pi( ) /180 )
    ) * cos( (
    ( 51.02 - `lon_dec` ) * pi( ) /180 )
    )
    )
    ) *180 / pi( )
    ) *60 * 1.1515 * 1.609344
    ) AS distance
    FROM `post_codes` WHERE distance <= 50

    și Mysql îmi spune că distanța, nu există ca coloană, pot folosi ordinea după, pot să o fac fără UNDE și funcționează, dar nu cu ea...

  17. 26

    Este grozav, totuși este așa cum zboară păsările. Ar fi grozav să încerci să încorporezi API-ul Google Maps în acest fel (poate folosind drumuri etc.) Doar pentru a da o idee folosind o altă formă de transport. Încă nu am realizat o funcție de recoacere simulată în PHP care să poată oferi o soluție eficientă la problema vânzătorului ambulant. Dar cred că aș putea reutiliza o parte din codul tău pentru a face acest lucru.

  18. 27
  19. 28

    Bun articol! Am găsit o mulțime de articole care descriu cum se calculează distanța dintre două puncte, dar chiar căutam fragmentul SQL.

  20. 29
  21. 30
  22. 31
  23. 32
  24. 36

    2 zile de cercetare pentru a găsi în sfârșit această pagină care îmi rezolvă problema. Se pare că ar fi bine să-mi scot WolframAlpha și să-mi perfecționez matematica. Modificarea de la WHERE la HAVING are scriptul meu în stare de funcționare. MULȚUMESC

  25. 37
    • 38

      Multumesc Georgi. Am continuat să primesc coloana „distanță” negăsită. Odată ce am schimbat WHERE la HAVING a funcționat ca un farmec!

  26. 39

    Mi-as fi dorit ca aceasta sa fie prima pagina pe care am gasit-o pe asta. După ce am încercat multe comenzi diferite, aceasta a fost singura care a funcționat corect și cu modificări minime necesare pentru a se potrivi cu propria mea bază de date.
    Multumesc mult!

  27. 40

    Mi-as fi dorit ca aceasta sa fie prima pagina pe care am gasit-o pe asta. După ce am încercat multe comenzi diferite, aceasta a fost singura care a funcționat corect și cu modificări minime necesare pentru a se potrivi cu propria mea bază de date.
    Multumesc mult!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47

    Știu că această formulă funcționează, dar nu văd unde se ia în considerare raza pământului. Poate cineva sa ma lumineze, va rog?

  34. 49
  35. 50
  36. 52
  37. 53
  38. 55
  39. 56
  40. 58

    multumesc pentru postarea acestui articol util,  
    dar din anumite motive aș vrea să întreb
    cum să obțineți distanța dintre coords din mysql db și coords inserate în php de către utilizator?
    pentru a descrie mai clar:
    1. utilizatorul trebuie să insereze [id] pentru selectarea datelor specificate din db și coordonatele utilizatorului însuși
    2.Fișierul php obține datele țintă (coords) folosind [id] și apoi calculează distanța dintre utilizator și punctul țintă

    sau pur și simplu puteți obține distanță de codul de mai jos?

    $qry = „SELECT *,(((acos(sin((“.$latitudine.”*pi()/180)) * sin((`Latitudine`*pi()/180))+cos((“. $latitudine.”*pi()/180)) * cos((`Latitudine`*pi()/180)) * cos((((„.$longitudine.”- `Longitudine`)*pi()/180) )))*180/pi())*60*1.1515*1.609344) ca distanță FROM `MyTable` WHERE distanță >= „.$distanță.” >>>>pot sa “scot” distanta de aici?
    multumesc din nou,
    Timmy S

  41. 60

    ok, tot ce am incercat nu merge. Adică, ceea ce am funcționează, dar distanțele sunt departe.

    Poate cineva să vadă ce este în neregulă cu acest cod?

    if(isset($_POST['submitted'])){ $z = $_POST['zipcode']; $r = $_POST['raza']; echo „Rezultate pentru „.$z; $sql = mysql_query(„SELECT DISTINCT m.zipcode, m.MktName,m.LocAddSt,m.LocAddCity,m.LocAddState,m.x1,m.y1,m.verified,z1.lat,z2.lon,z1. city,z1.state FROM mrk m, zip z1, zip z2 WHERE m.zipcode = z1.zipcode AND z2.zipcode = $z AND (3963 * acos( truncate( sin( z2.lat / 57.2958 ) * sin( m. y1 / 57.2958 ) + cos( z2.lat / 57.2958 ) * cos( m.y1 / 57.2958 ) * cos( m.x1 / 57.2958 – z2.lon / 57.2958 ) , 8 ) ) ) sau <= $e ") (mysql_error()); while($row = mysql_fetch_array( $sql )) { $store1 = $row['MktName']."”; $magazin = $row['LocAddSt'].””; $store .= $row['LocAddCity'].”, „.$row['LocAddState'].” „.$row['cod poștal']; $latitudine1 = $row['lat']; $longitudine1 = $rând['lon']; $latitudine2 = $row['y1']; $longitudine2 = $rând['x1']; $oraș = $rând['oraș']; $state = $row['state']; $dis = getnew($latitudine1, $longitudine1, $latitudine2, $longitudine2, $unitate = 'Mi'); // $dis = distanta($lat1, $lon1, $lat2, $lon2); $verificat = $row['verificat']; if($verified == '1'){ echo “”; echo „”.$magazin.””; echo $dis . „milă(e) distanță”; ecou „”; } else { echo „”.$magazin.””; echo $dis . „milă(e) distanță”; ecou „”; } }}

    funcțiile mele.codul php
    function getnew($latitudine1, $longitudine1, $latitudine2, $longitudine2, $unitate = 'Mi') { $theta = $longitudine1 – $longitudine2; $distanta = (sin(deg2rad($latitudine1)) * sin(deg2rad($latitudine2)))) + (cos(deg2rad($latitudine1)) * cos(deg2rad($latitudine2)) * cos(deg2rad($theta)) ); $distanta = acos($distanta); $distanta = rad2deg($distanta); $distanta = $distanta * 60 * 1.1515; comutator($unitate) { case 'Mi': break; caz 'Km' : $distanta = $distanta * 1.609344; } intoarcere (rotunda($distanta,2)); }

    Va multumesc anticipat

  42. 61
  43. 62

    Hei Douglas, minunat articol. Mi s-a părut foarte interesantă explicația dvs. despre conceptele geografice și codul. Singura mea sugestie ar fi să spați și să indentați codul pentru afișare (cum ar fi Stackoverflow, de exemplu). Înțeleg că doriți să economisiți spațiu, dar spațierea / indentarea convențională a codului ar face mult mai ușor pentru mine, ca programator, să citesc și să disec. Oricum, asta e un lucru mic. Continuați cu mare lucru.

  44. 64
  45. 65

    aici, în timp ce folosim cu funcția, obținem un tip de distanță... în timp ce folosim interogarea, vine un alt tip de distanță

  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    pare mai rapid (mysql 5.9) să folosești de două ori formula în select și unde:
    $formula = „(((acos(sin((“.$latitudine.”*pi()/180)) * sin((`Latitudine`*pi()/180))+cos(((“.$latitudine. ”*pi()/180)) * cos((`Latitudine`*pi()/180)) * cos(((“.$longitudine.”- `Longitudine`)*pi()/180)))) *180/pi())*60*1.1515*1.609344)”;
    $sql = 'SELECT *, '.$formula.' ca distanță DE LA tabelul WHERE '..$formula.' <= '.$distanta;

  51. 71
  52. 72

    Mulțumesc foarte mult pentru acest articol. Este foarte util.
    PHP a fost creat la început ca o platformă simplă de scripting numită „Personal Home Page”. În prezent, PHP (prescurtarea pentru Hypertext Preprocessor) este o alternativă a tehnologiei Microsoft Active Server Pages (ASP).

    PHP este un limbaj open source pe partea serverului, care este folosit pentru crearea de pagini web dinamice. Poate fi încorporat în HTML. PHP este folosit de obicei împreună cu o bază de date MySQL pe serverele web Linux/UNIX. Este probabil cel mai popular limbaj de scripting.

  53. 73

    Am descoperit că soluția de mai sus nu funcționează corect.
    trebuie sa ma schimb in:

    $qqq = „SELECT *,(((acos(sin((“.$latitudine.”*pi()/180)) * sin((`latt`*pi()/180))+cos((” . $latitudine . „*pi()/180)) * cos((`latt`*pi()/180)) * cos(((” . $longitudine . „- `longt`)*pi()/180) )))*180/pi())*60*1.1515) ca distanta DE LA `registru` “;

  54. 75
  55. 76

    Bună, vă rog, chiar am nevoie de ajutorul vostru în acest sens.

    Am făcut o cerere de obținere către serverul meu web http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $latitudine
    -2.23389 = $longitudine
    și 20 = distanța pe care vreau să o recuperez

    Cu toate acestea, folosind formula dvs., preia toate rândurile din db-ul meu

    $rezultate = DB::select( DB::raw(„SELECT *, (((acos(sin((“.$latitudine.”*pi()/180)) * sin((lat*pi()/180 ))+cos((“.$latitudine.”*pi()/180)) * cos((lat*pi()/180)) * cos(((“.$longitudine.”- lng)*pi( )/180))))*180/pi())*60*1.1515*1.609344) ca distanta FROM markeri HAVING distanta >= “.$distanta ));

    [{“id”:1,”name”:”Frankie Johnnie & Luigo Too”,”address”:”939 W El Camino Real, Mountain View, CA”,”lat”:37.386337280273,”lng”:-122.08582305908, ”distanță”:16079.294719663},{“id”:2,”name”:”Amici's East Coast Pizzeria”,”adresă”:”790 Castro St, Mountain View, CA”,”lat”:37.387138366699,”lng”: -122.08323669434,”distance”:16079.175940152},{“id”:3,”name”:”Kapp's Pizza Bar & Grill”,”adresa”:”191 Castro St, Mountain View, CA”,”lat”:37.393886566162, ”lng”:-122.07891845703,”distance”:16078.381373826},{“id”:4,”name”:”Round Table Pizza: Mountain View”,”address”:”570 N Shoreline Blvd, Mountain View, CA”, ”lat”:37.402652740479,”lng”:-122.07935333252,”distanța”:16077.420540582},{“id”:5,”name”:”Tony & Alba's Pizza & Pasta”,”adresa”:”619 Escuela Ave, Mountain View, CA”,”lat”:37.394012451172,”lng”:-122.09552764893,”distanța”:16078.563225154},{“id”:6,”name”:”Oregano’s Wood-Fired Pizza”,”adresa4546”:”37.401725769043” El Camino Real, Los Altos, CA”,”lat”:122.11464691162,”lng”:-16077.937560795,”distanța”:7},{“ id”:24,”nume”:”Barurile și grătarele”,”adresa”:”53.485118865967 Whiteley Street, Manchester”,”lat”:2.1828699111938,”lng”:-8038.7620112314,”distanța”:XNUMX}]

    Vreau să recuperez doar rândurile cu 20 de mile, dar aduce toate rândurile. Va rog cu ce gresesc

  56. 77

    Caut o interogare similară, dar am intensificat puțin - pe scurt, aceasta este să grupez toate coordonatele la 2 mile de fiecare coordonată și apoi să număr câte coordonate în fiecare grup și să produc doar un grup care are cele mai multe coordonate - chiar dacă aveți mai mult de un grup printre grupurile care au cel mai mare număr de coordonate - pur și simplu scoateți grupul aleatoriu din grupurile cu același număr cel mai mare -

Ce părere ai?

Acest site folosește Akismet pentru a reduce spamul. Aflați cum sunt procesate datele despre comentarii.