Laius- ja pikkuskraadi punktide vahelise laius- ja pikkuskraadi vahelise kauguse arvutamine või päring Haversine'i valemi abil (PHP, Python, MySQL, MSSQL näited)

Haversine'i valem – Great Circle Distance – PHP, Python, MySQL

Sel kuul olen GIS-i osas üsna palju PHP-s ja MySQL-is programmeerinud. Netis ringi nuhkides oli mul tegelikult raske mõnda neist leida Geograafilised arvutused kahe asukoha vahelise kauguse leidmiseks tahtsin neid siin jagada.

Suure ringkaugusega Euroopa lennukaart

Lihtne viis kahe punkti vahelise kauguse arvutamiseks on Pythagorase valemi abil kolmnurga hüpotenuusi arvutamine (A² + B² = C²). Seda tuntakse kui Eukleidese kaugus.

See on huvitav algus, kuid see ei kehti geograafia kohta, kuna laius- ja pikkusjoonte vaheline kaugus on mitte võrdsed vahemaad lahus. Ekvaatorile lähemale jõudes lähevad laiuskraadid üksteisest kaugemale. Kui kasutate mingisugust lihtsat triangulatsioonivõrrandit, võib see Maa kumeruse tõttu mõõta ühes kohas kaugust täpselt ja teises kohutavalt valesti.

Suur ringkaugus

Maad mööda pikki vahemaid läbitud marsruute nimetatakse Suur ringkaugus. See tähendab… sfääri kahe punkti vaheline lühim vahemaa erineb tasapinnalise kaardi punktidest. Kombineerige see tõsiasjaga, et laius- ja pikkuskraadid ei ole võrdsel kaugusel... ja teil on keeruline arvutus.

Siin on fantastiline video selgitus suurepäraste ringide toimimise kohta.

Haversine valem

Maa kumerust kasutav kaugus on integreeritud Haversine valem, mis kasutab trigonomeetriat, et võimaldada maa kumerust. Kui leiate maa peal kahe koha vahemaa (linnulennul), on sirgjoon tõesti kaar.

See kehtib õhulennu puhul - kas olete kunagi tegelikku lennukaarti vaadanud ja märganud, et see on kaardus? Seda seetõttu, et kahe punkti vahelises kaares on lühem lennata kui otse asukohta.

PHP: arvutage kaugus kahe laius- ja pikkuskraadi vahel

Siin on PHP valem kahe punkti vahelise kauguse arvutamiseks (koos Mile vs. Kilometer teisendusega) ümardatuna kahe kümnendkohani.

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)); 
}

Muutujad on:

  • $Latitude1 – teie esimese asukoha laiuskraadi muutuja.
  • $ pikkuskraad1 – teie esimese asukoha pikkuskraadi muutuja
  • $Latitude2 – teie teise asukoha laiuskraadi muutuja.
  • $ pikkuskraad2 – teie teise asukoha pikkuskraadi muutuja.
  • $ühik – vaikeolemus miili. Seda saab värskendada või edasi anda kilomeetrit.

Python: 2 laius- ja pikkuspunkti vahelise kauguse arvutamine

Igatahes on siin Pythoni valem kahe punkti vahelise kauguse arvutamiseks (koos Mile vs. Kilometer teisendusega) ümardatuna kahe kümnendkohani. Tänu minu pojale Bill Karrile, kes on andmeteadlane OpenINSIGHTS, koodi jaoks.

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)

Muutujad on:

  • laiuskraad1 – teie esimese asukoha muutuja laius.
  • pikkuskraad1 – teie esimese asukoha muutuja pikkuskraad
  • laiuskraad2 – teie teise asukoha muutuja laius.
  • pikkuskraad2 – teie teise asukoha muutuja pikkuskraad.
  • üksus – vaikeolemus miili. Seda saab värskendada või edasi anda kilomeetrit.

MySQL: kõigi teatud vahemikus olevate kirjete hankimine, arvutades vahemaa miilides laius- ja pikkuskraadide abil

Samuti on SQL-i abil võimalik arvutada, et leida kõik kirjed kindla vahemaa tagant. Selles näites küsin MySQL-is MyTable-ist, et leida kõik kirjed, mis on väiksemad või võrdsed muutujaga $ distance (miilides) minu asukohani $ latitude ja $ longitude:

Päring kõigi konkreetses olevate kirjete hankimiseks kaugus arvutades kahe laius- ja pikkuskraadi vahelise kauguse miilides, on:

$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."

Peate seda kohandama:

  • $ pikkuskraad - see on PHP muutuja, kus ma läbin punkti pikkuskraadi.
  • $ laiuskraad - see on PHP muutuja, kus ma läbin punkti pikkuskraadi.
  • $ vahemaa - see on vahemaa, mille soovite leida kõik kirjed vähem või võrdsed.
  • tabel - see on tabel ... soovite selle asendada oma tabeli nimega.
  • laius - see on teie laiuskraadi väli.
  • pikkuskraad - see on teie pikkuskraadi väli.

MySQL: kõigi kirjete otsimine vahemikus, arvutades kauguse kilomeetrites laius- ja pikkuskraadi abil

Ja siin on SQL-päring, kasutades MySQL-is kilomeetreid:

$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."

Peate seda kohandama:

  • $ pikkuskraad - see on PHP muutuja, kus ma läbin punkti pikkuskraadi.
  • $ laiuskraad - see on PHP muutuja, kus ma läbin punkti pikkuskraadi.
  • $ vahemaa - see on vahemaa, mille soovite leida kõik kirjed vähem või võrdsed.
  • tabel - see on tabel ... soovite selle asendada oma tabeli nimega.
  • laius - see on teie laiuskraadi väli.
  • pikkuskraad - see on teie pikkuskraadi väli.

Kasutasin seda koodi ettevõtte kaardistamise platvormil, mida kasutasime Põhja-Ameerikas üle 1,000 asukohaga jaekaupluses ja see töötas suurepäraselt.

Microsoft SQL Serveri geograafiline kaugus: STDistance

Kui kasutate Microsoft SQL Serverit, pakuvad nad oma funktsiooni, STDistants kahe punkti vahelise kauguse arvutamiseks, kasutades andmetüüpi Geograafia.

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);  

Kübaraotsa Manash Sahoole, VP ja arhitektile Highbridge.

77 Kommentaarid

  1. 1

    Suur tänu jagamise eest. See oli lihtne kopeerimis- ja kleepimistöö ning töötab suurepäraselt. Säästsid mu palju aega.
    Teabeks kõigile, kes portivad C-sse:
    double deg2rad(double deg) { return deg*(3.14159265358979323846/180.0); }

  2. 2

    Väga tore postitus – töötas väga hästi – pidin muutma vaid lati-pikkust hoidva tabeli nime. See töötab üsna kiiresti, et.. Mul on suhteliselt vähe lat-longe (< 400), kuid ma arvan, et see mastaapiks kenasti. Tore sait ka – lisasin selle just oma del.icio.us kontole ja kontrollin seda regulaarselt.

  3. 4
  4. 5
  5. 8

    Ma arvan, et teie SQL vajab avaldust.
    asemel WHERE vahemaa <= $vahemaa, mida võib vaja minna
    kasuta OMA kaugust <= $kaugust

    muidu tänan, et säästsite mu hunniku aega ja energiat.

  6. 10
  7. 11
  8. 12

    Suur tänu selle koodi jagamise eest. See säästis palju arendusaega. Samuti täname teie lugejaid tähelepanu eest, et MySQL 5.x jaoks on HAVING-lause vajalik. Väga abivalmis.

  9. 14
  10. 15

    Tere,

    Järgmine küsimus. Kas NMEA stringide jaoks on olemas selline valem nagu allpool?

    1342.7500,N,10052.2287,E

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

    Thanks,
    Röövima

  11. 16

    Samuti leidsin, et WHERE minu jaoks ei sobinud. Vahetasin selle vastu HAVING ja kõik töötab ideaalselt. Alguses ma ei lugenud kommentaare ja kirjutasin selle ümber, kasutades pesastatud valikut. Mõlemad töötavad hästi.

  12. 17
  13. 18

    Uskumatult abivalmis, suur tänu! Mul oli probleeme pigem uue “HAVING”-ga kui “KUS”, kuid kui lugesin siinseid kommentaare (pärast umbes poolt tundi pettunult hammaste krigistamist =P), sain selle kenasti tööle. Aitäh ^_^

  14. 19
  15. 20

    Pidage meeles, et selline valitud avaldus on arvutuslikult intensiivne ja seetõttu aeglane. Kui teil on palju neid päringuid, võib see asjad üsna kiiresti takerduda.

    Palju vähem intensiivne lähenemine on käivitada esimene (toores) valik, kasutades SQUARE ala, mis on määratletud arvutatud vahemaaga, st "vali * tabelinimest, kus laiuskraad on vahemikus lat1 ja lat2 ja pikkuskraad vahemikus lon1 ja lon2". lat1 = sihtlaiuskraad – latdiff, lat2 = sihtlaiuskraad + latiff, sarnane lon-iga. latdiff ~= kaugus / 111 (km) või kaugus/69 miili puhul, kuna 1 laiuskraad on ~ 111 km (väike kõikumine, kuna maa on veidi ovaalne, kuid selleks piisab). londiff = kaugus / (abs(cos(deg2rad(laiuskraad))*111)) — või 69 miili kohta (tegelikult võite variatsioonide arvessevõtmiseks võtta veidi suurema ruudu). Seejärel võtke selle tulemus ja sisestage see radiaalsesse valikusse. Lihtsalt ärge unustage arvestada piiriväliste koordinaatidega – st vastuvõetava pikkuskraadi vahemik on -180 kuni +180 ja vastuvõetava laiuskraadi vahemik -90 kuni +90 - juhuks, kui teie latdiff või londiff jookseb väljaspool seda vahemikku . Pange tähele, et enamikul juhtudel ei pruugi see olla kohaldatav, kuna see mõjutab ainult arvutusi üle Vaikse ookeani pooluse vahelt läbiva joone, kuigi see ristub osa chukotkast ja osa Alaskast.

    See, mida me sellega saavutame, on selle arvutuse tegemisel kasutatavate punktide arvu märkimisväärne vähendamine. Kui teil on andmebaasis miljon globaalset punkti, mis on jaotatud ligikaudu ühtlaselt ja soovite otsida 100 km raadiuses, siis on teie esimene (kiire) otsing 10000 20 ruutkilomeetri suurusel alal ja annab tõenäoliselt umbes 500 tulemust (ühtlase jaotuse põhjal pindala on umbes 20 miljonit ruutkilomeetrit), mis tähendab, et käivitate selle päringu jaoks keeruka kauguse arvutamise miljoni korra asemel XNUMX korda.

    • 21
      • 22

        Fantastiline nõuanne! Ma töötasin tegelikult arendajaga, kes kirjutas funktsiooni, mis tõmbas sisemise ruudu, ja seejärel rekursiivse funktsiooni, mis moodustas perimeetri ümber "ruudud", et lisada ja välistada ülejäänud punktid. Tulemuseks oli uskumatult kiire tulemus – ta suutis hinnata miljoneid punkte mikrosekundites.

        Minu ülaltoodud lähenemisviis on kindlasti "toores", kuid võimekas. Aitäh veel kord!

        • 23

          Doug,

          Olen proovinud kasutada mysql-i ja php-d, et hinnata, kas lati pikk punkt on hulknurga sees. Kas teate, kas teie arendaja sõber on avaldanud näiteid selle ülesande täitmiseks? Või tead häid näiteid. Ette tänades.

  16. 24

    Tere kõigile, see on minu test-SQL-lause:

    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

    ja Mysql ütleb mulle, et vahemaa ei eksisteeri veeruna, ma saan kasutada järjestust, saan seda teha ilma WHEREta ja see töötab, aga mitte sellega…

  17. 26

    See on suurepärane, kuid see on täpselt nii, nagu linnud lendavad. Oleks tore proovida google mapsi API-d sellesse kuidagi kaasata (võib-olla kasutades teid vms). Lihtsalt selleks, et anda aimu mõne teise transpordiliigi kasutamisest. Mul on veel vaja teha PHP-s simuleeritud anniilimisfunktsioon, mis suudaks pakkuda tõhusat lahendust reisiva müügimehe probleemile. Kuid arvan, et saan osa teie koodist selleks uuesti kasutada.

  18. 27
  19. 28

    Hea artikkel! Leidsin palju artikleid, mis kirjeldavad kahe punkti vahelise kauguse arvutamist, kuid otsisin tõesti SQL-i fragmenti.

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

    2 päeva uurimistööd, et lõpuks leida see leht, mis mu probleemi lahendab. Tundub, et parem võtan oma WolframAlpha välja ja teen oma matemaatikat. Muudatus väärtuselt WHERE väärtusele HAVING on minu skripti töökorras. AITÄH

  25. 37
    • 38

      Aitäh Georgile. Sain pidevalt, et veergu "kaugus" ei leitud. Kui ma vahetan WHERE väärtuseks HAVING, see töötas nagu võlu!

  26. 39

    Soovin, et see oleks esimene leht, mille ma selle kohta leidsin. Pärast paljude erinevate käskude proovimist oli see ainus, mis töötas korralikult ja minu enda andmebaasi sobitamiseks oli vaja minimaalseid muudatusi.
    Suured tänud!

  27. 40

    Soovin, et see oleks esimene leht, mille ma selle kohta leidsin. Pärast paljude erinevate käskude proovimist oli see ainus, mis töötas korralikult ja minu enda andmebaasi sobitamiseks oli vaja minimaalseid muudatusi.
    Suured tänud!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47
  34. 49
  35. 50
  36. 52
  37. 53
  38. 55
  39. 56
  40. 58

    täname selle kasuliku artikli postitamise eest,  
    aga millegipärast tahaks küsida
    kuidas saada vahemaa mysql db-s olevate koordinaatide ja kasutaja poolt php-sse sisestatud koordinaatide vahel?
    selgemaks kirjeldamiseks:
    1.kasutaja peab sisestama [id] määratud andmete valimiseks andmebaasist ja kasutaja enda koordinaatidest
    2. php-fail hangib sihtandmed (koordid) kasutades [id] ja arvutab seejärel kasutaja ja sihtpunkti vahelise kauguse

    või saate lihtsalt allolevast koodist kauguse?

    $qry = "VALI *,(((acos(sin((.$laiuskraad."*pi()/180)) * sin((`Laiuskraad`*pi()/180))+cos((". $laiuskraad.”*pi()/180)) * cos((`Laiuskraad`*pi()/180)) * cos(((.$pikkuskraad.”- `Pikkuskraad`)*pi()/180) )))*180/pi())*60*1.1515*1.609344) kui kaugus 'Minu tabelist' WHERE vahemaa >= ".$ vahemaa." >>>>kas ma saan siit "välja võtta" kauguse?
    aitäh veel kord,
    Timmy S

  41. 60

    ok, kõik, mida olen proovinud, ei tööta. See, mis mul on, töötab, aga vahemaad on kaugel.

    Kas keegi saaks näha, mis sellel koodil viga on?

    if(isset($_POST['esitatud'])){ $z = $_POST['postiindeks']; $r = $_POST['raadius']; echo "Tulemused ".$z" jaoks; $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. linn,z1.osariik FROM mrk m, zip z1, zip z2 WHERE m.sipcode = z1.zipcode JA z2.sipcode = $z JA (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 <= die ) ) ") (mysql_error()); while($row = mysql_fetch_array( $sql )) { $store1 = $row['MktName'].""; $pood = $rida['LocAddSt'].””; $store .= $row['LocAddCity'].”, ".$row['LocAddState']." “.$row['sihtnumber']; $laiuskraad1 = $rida['lat']; $pikkuskraad1 = $rida['pikk']; $laiuskraad2 = $rida['y1']; $pikkuskraad2 = $rida['x1']; $linn = $rida['linn']; $osariik = $rida['osariik']; $dis = hanki uus($laiuskraad1, $pikkuskraad1, $laiuskraad2, $pikkuskraad2, $ühik = 'Mi'); // $dis = kaugus($lat1, $lon1, $lat2, $lon2); $kinnitatud = $rida['kinnitatud']; if($verified == '1'){ echo ""; echo “”.$store.””; kaja $dis . " miile eemal"; kaja ""; } else { echo “”.$store.””; kaja $dis . " miile eemal"; kaja ""; } }}

    minu funktsioonid.php kood
    function getnew($laiuskraad1, $pikkuskraad1, $laiuskraad2, $pikkuskraad2, $ühik = 'Mi') { $teeta = $pikkuskraad1 – $pikkuskraad2; $kaugus = (sin(deg2rad($laiuskraad1)) * sin(deg2rad($laiuskraad2))) + (cos(deg2rad($laiuskraad1)) * cos(deg2rad($laiuskraad2)) * cos(deg2rad($teeta)) ); $kaugus = acos($kaugus); $kaugus = rad2deg($kaugus); $kaugus = $kaugus * 60 * 1.1515; switch($ unit) { case 'Mi': break; suurtäht 'Km' : $kaugus = $kaugus * 1.609344; } return (round($distance,2)); }

    Tänan ette

  42. 61
  43. 62

    Tere, Douglas, suurepärane artikkel. Minu arvates oli teie selgitus geograafiliste mõistete ja koodi kohta väga huvitav. Minu ainus soovitus oleks kuvamiseks koodis tühik ja taane jätta (näiteks Stackoverflow). Ma saan aru, et soovite ruumi kokku hoida, kuid tavapärased koodivahed / taanded muudaksid minu kui programmeerija lugemise ja lahkamise palju lihtsamaks. Igatahes on see väike asi. Jätkake samas vaimus.

  44. 64
  45. 65
  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    tundub kiirem (mysql 5.9) kasutada valikus kaks korda valemit ja kus:
    $valem = “(((acos(sin((.$laiuskraad.”*pi()/180)) * sin((`Laiuskraad`*pi()/180))+cos((.$laiuskraad. ”*pi()/180)) * cos((`Laiuskraad`*pi()/180)) * cos(((.$pikkuskraad.- `Pikkuskraad`)*pi()/180)))) *180/pi())*60*1.1515*1.609344)”;
    $sql = 'VALI *, '.$valem.' kaugusena tabelist WHERE '..$valem.' <= '.$kaugus;

  51. 71
  52. 72

    Suur tänu selle artikli lõikamise eest. See on väga kasulik.
    PHP loodi algul lihtsa skriptimisplatvormina nimega "Isiklik koduleht". Tänapäeval on PHP (lühend sõnadest Hypertext Preprocessor) Microsofti Active Server Pages (ASP) tehnoloogia alternatiiv.

    PHP on avatud lähtekoodiga serveripoolne keel, mida kasutatakse dünaamiliste veebilehtede loomiseks. Selle saab manustada HTML-i. PHP-d kasutatakse tavaliselt Linuxi/UNIXi veebiserverites koos MySQL-i andmebaasiga. See on ilmselt kõige populaarsem skriptikeel.

  53. 73

    Avastasin, et ülaltoodud lahendus ei tööta korralikult.
    Pean vahetama vastu:

    $qqq = “SELECT *,(((acos(sin((.$laiuskraad.*pi()/180)) * sin((`latt`*pi()/180))+cos((” . $laiuskraad . “*pi()/180)) * cos((`latt`*pi()/180)) * cos(((” . $pikkuskraad . “- `pikkus`)*pi()/180) )))*180/pi())*60*1.1515) kui kaugus "registrist";

  54. 75
  55. 76

    Tere, palun ma tõesti vajan teie abi.

    Esitasin oma veebiserverile hankimistaotluse http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ laiuskraad
    -2.23389 = $ pikkuskraad
    ja 20 = vahemaa, mille tahan tuua

    Kuid teie valemit kasutades hangib see kõik minu db read

    $results = DB::select( DB::raw("SELECT *, (((acos(sin(().$laiuskraad."*pi())/180)) * sin((lat*pi()/180 ))+cos((.$laiuskraad.*pi()/180)) * cos((lat*pi()/180)) * cos(((.$pikkuskraad..- lng)*pi( )/180))))*180/pi())*60*1.1515*1.609344) kui kaugus markeritest HAAVING distance >= “.$distance ));

    [{"id":1"name":"Frankie Johnnie & Luigo Too","aadress":"939 W El Camino Real, Mountain View, CA","lat":37.386337280273,"lng":-122.08582305908, ”distance”:16079.294719663},{“id”:2”name”:”Amici's East Coast Pizzeria”,”aadress”:”790 Castro St, Mountain View, CA”,”lat”:37.387138366699,”lng”: -122.08323669434,"distance":16079.175940152},{"id":3,"name":"Kappi pitsabaar ja grill","aadress":"191 Castro St, Mountain View, CA","lat":37.393886566162, "lng":-122.07891845703,"distance":16078.381373826},{"id":4,"name":"Round Table Pizza: Mountain View","aadress":"570 N Shoreline Blvd, Mountain View, CA", ”lat”:37.402652740479,”lng”:-122.07935333252,”kaugus”:16077.420540582},{“id”:5,”nimi”:”Tony & Alba's Pizza & Pasta”,”aadress”:”619 Mountain Escuela Vaade, CA”,”lat”:37.394012451172,”lng”:-122.09552764893,”kaugus”:16078.563225154},{“id”:6,”nimi”:”Puine puuküttega pitsa”,”aadress”:”4546 El Camino Real, Los Altos, CA”,”lat”:37.401725769043,”lng”:-122.11464691162,”kaugus”:16077.937560795},{“ id":7"nimi":"Baarid ja grillid","aadress":"24 Whiteley Street, Manchester","lat":53.485118865967,"lng":-2.1828699111938,"kaugus":8038.7620112314}]

    Ma tahan tuua ainult 20 miili ridu, kuid see toob kõik read. Palun, mida ma valesti teen

  56. 77

    Otsin sarnast päringut, kuid tegin veidi hoogu – lühidalt öeldes rühmitan kõik koordinaadid igast koordinaadist 2 miili raadiuses ja seejärel loendan, mitu koordinaati igas rühmas on, ja väljastan ainult ühe rühma, millel on kõige rohkem koordinaate – isegi kui teil on rohkem kui üks rühm rühmade hulgas, millel on kõige rohkem koordinaate – lihtsalt väljastage juhuslik rühm sama arvuga rühmadest -

Mis sa arvad?

Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.