Kalkulu aŭ Pridemandu Grandan Rondon Distancon Inter Punktoj de Latitudo kaj Longitudo Uzante La Havesine Formulo (PHP, Python, MySQL, MSSQL Ekzemploj)

Havesine Formulo - Granda Cirkla Distanco - PHP, Python, MySQL

Ĉi-monate mi programis sufiĉe en PHP kaj MySQL rilate al GIS. Promenante ĉirkaŭ la reto, mi efektive malfacile trovis iujn el la Geografiaj kalkuloj por trovi la distancon inter du lokoj do mi volis dividi ilin ĉi tie.

Flugmapo Eŭropo Kun Granda Cirkla Distanco

La simpla maniero kalkuli distancon inter du punktoj estas uzi la pitagorean formulon por kalkuli la hipotenuzon de triangulo (A² + B² = C²). Ĉi tio estas konata kiel la Eŭklida distanco.

Tio estas interesa komenco, sed ĝi ne validas kun Geografio, ĉar la distanco inter latitudaj kaj longitudaj linioj estas ne egalaj distancoj aparte. Kiam vi proksimiĝas al la ekvatoro, latitudaj linioj pli disiĝas. Se vi uzas ian simplan triangulan ekvacion, ĝi eble mezuros distancon precize en unu loko kaj terure malĝuste en la alia, pro la kurbeco de la Tero.

Granda Ronda Distanco

La vojoj trairataj longajn distancojn ĉirkaŭ la Tero estas nomataj Granda Ronda Distanco. Tio estas... la plej mallonga distanco inter du punktoj sur sfero estas malsama ol la punktoj sur plata mapo. Kombinu tion kun la fakto, ke la latitudo kaj longitudo linioj ne estas samdistancaj... kaj vi havas malfacilan kalkulon.

Jen fantazia videoklarigo pri kiel funkcias Grandaj Rondoj.

La Haversina Formulo

La distanco uzanta la kurbecon de la Tero estas inkluzivita en la Haversina formulo, kiu uzas trigonometrion por permesi la kurbecon de la tero. Kiam vi trovas la distancon inter 2 lokoj sur la tero (kiel korvo flugas), rekto estas vere arko.

Ĉi tio aplikeblas en aera flugo - ĉu vi iam rigardis la efektivan mapon de flugoj kaj rimarkis, ke ili estas arkaj? Tio estas ĉar pli mallongas flugi en arko inter du punktoj ol rekte al la loko.

PHP: Kalkulu Distancon Inter 2 Latitudoj kaj Longeco

Jen la PHP-formulo por kalkuli la distancon inter du punktoj (kune kun Mile vs. Kilometer-konverto) rondigita al du decimalaj lokoj.

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

La variabloj estas:

  • $Latitudo1 – variablo por la latitudo de via unua loko.
  • $Longitudo1 – variablo por la longitudo de via unua loko
  • $Latitudo2 – variablo por la latitudo de via dua loko.
  • $Longitudo2 – variablo por la longitudo de via dua loko.
  • $unuo – la defaŭlta estaĵo miloj. Ĉi tio povas esti ĝisdatigita aŭ pasita kiel kilometroj.

Python: Kalkuli Distancon Inter 2 Poentoj de Latitudo kaj Longitudo

Ĉiuokaze, jen la Python-formulo por kalkuli la distancon inter du punktoj (kune kun Mile vs. Kilometer konvertiĝo) rondigita al du decimalaj lokoj. Dankon al mia filo, Bill Karr, kiu estas Datuma Sciencisto por OpenINSIGHTS, por la kodo.

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)

La variabloj estas:

  • latitudo1 – variablo por via unua loko latitudo.
  • longitudo1 – variablo por via unua loko longitudo
  • latitudo2 – variablo por via dua loko latitudo.
  • longitudo2 – variablo por via dua loko longitudo.
  • unuo – la defaŭlta estaĵo miloj. Ĉi tio povas esti ĝisdatigita aŭ pasita kiel kilometroj.

MySQL: Reakiro Ĉiuj Rekordoj Ene de Intervalo Kalkulante Distancon En Mejloj Uzante Latitudon kaj Longitudon

Eblas ankaŭ uzi SQL por fari kalkulon por trovi ĉiujn registrojn ene de specifa distanco. En ĉi tiu ekzemplo, mi pridemandos MyTable en MySQL por trovi ĉiujn registrojn malpli ol aŭ egalajn al varia $ distanco (en Mejloj) al mia loko je $ latitudo kaj $ longitudo:

La konsulto por rekuperi ĉiujn registrojn en specifa malproksimo kalkulante distancon en mejloj inter du punktoj de latitudo kaj longitudo estas:

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

Vi bezonos agordi ĉi tion:

  • $ longitudo - Jen PHP-variablo, kie mi preterpasas la longitudon de la punkto.
  • $ latitudo - Jen PHP-variablo, kie mi preterpasas la longitudon de la punkto.
  • $ distanco - ĉi tiu estas la distanco, kiun vi ŝatus trovi ĉiujn registrojn malpli aŭ egala al.
  • tablo - jen la tabelo ... vi volos anstataŭigi tion per via tabela nomo.
  • latitudo - jen la kampo de via latitudo.
  • longitudo - jen la kampo de via longitudo.

MySQL: Prenante Ĉiujn Rekordojn Ene de Intervalo Kalkulante Distancon En Kilometroj Uzante Latitudon kaj Longitudon

Kaj jen la SQL-konsulto uzanta kilometrojn en 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."

Vi bezonos agordi ĉi tion:

  • $ longitudo - Jen PHP-variablo, kie mi preterpasas la longitudon de la punkto.
  • $ latitudo - Jen PHP-variablo, kie mi preterpasas la longitudon de la punkto.
  • $ distanco - ĉi tiu estas la distanco, kiun vi ŝatus trovi ĉiujn registrojn malpli aŭ egala al.
  • tablo - jen la tabelo ... vi volos anstataŭigi tion per via tabela nomo.
  • latitudo - jen la kampo de via latitudo.
  • longitudo - jen la kampo de via longitudo.

Mi uzis ĉi tiun kodon en platformo pri entreprena mapado, kiun ni uzis por podetala butiko kun pli ol 1,000 lokoj tra Nordameriko kaj ĝi funkciis bele.

Microsoft SQL Server Geografia Distanco: STDistance

Se vi uzas Microsoft SQL-Servilon, ili ofertas sian propran funkcion, STDistanco por kalkuli la distancon inter du punktoj uzante la Geografia datumtipo.

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

Ĉapelpinto al Manash Sahoo, VP kaj Arkitekto de Highbridge.

77 Komentoj

  1. 1

    Koran dankon pro kundivido. Ĉi tio estis facila kopii kaj alglui laboron kaj funkcias bonege. Vi savis min multe da tempo.
    FYI por iu ajn portanta al C:
    duobla deg2rad (duobla grado) { return deg*(3.14159265358979323846/180.0); }

  2. 2

    Tre bela peco de afiŝo - tre bone funkciis - mi devis nur ŝanĝi la nomon de la tablo tenanta la lat-longon. Ĝi funkcias sufiĉe rapide al.. Mi havas sufiĉe malgrandan nombron da lat-longoj (< 400) sed mi pensas, ke tio skalus bele. Ankaŭ bela retejo - mi ĵus aldonis ĝin al mia konto del.icio.us kaj rekontrolos regule.

  3. 4
  4. 5
  5. 8

    Mi pensas, ke via SQL bezonas havantan deklaron.
    anstataŭ WHERE distanco <= $distance vi eble bezonos
    uzu HAVING distancon <= $distance

    alie dankon pro ŝpari al mi amason da tempo kaj energio.

  6. 10
  7. 11
  8. 12

    Koran dankon pro dividi ĉi tiun kodon. Ĝi ŝparis al mi multe da disvolva tempo. Ankaŭ, dankon al viaj legantoj pro atentigi, ke HAVING-deklaro estas necesa por MySQL 5.x. Tre helpema.

  9. 14
  10. 15
  11. 16

    Mi ankaŭ trovis, ke KIE ne funkciis por mi. Ŝanĝis ĝin al HAVING kaj ĉio funkcias perfekte. Komence mi ne legis la komentojn kaj reverkis ĝin uzante nestitan elekton. Ambaŭ funkcios bone.

  12. 17
  13. 18

    Nekredeble helpema, koran dankon! Mi havis kelkajn problemojn kun la nova "HAVING", prefere ol "KIE", sed post kiam mi legis la komentojn ĉi tie (post ĉirkaŭ duonhoro de grincado de miaj dentoj pro frustriĝo =P), mi bonege funkciis. Dankon ^_^

  14. 19
  15. 20

    Memoru, ke elekta deklaro tia estos tre kompute intensa kaj tial malrapida. Se vi havas multajn el tiuj demandoj, ĝi povas malbonigi aferojn sufiĉe rapide.

    Multe malpli intensa aliro estas prizorgi unuan (krudan) elekton uzante Kvadratan areon difinitan per kalkulita distanco t.e. "elektu * el tabelnomo kie latitudo inter lat1 kaj lat2 kaj longitudo inter lon1 kaj lon2". lat1 = cellatitude – latdiff, lat2 = cellatitude + latdiff, simile kun lon. latdiff ~= distanco / 111 (por km), aŭ distanco/69 por mejloj ĉar 1 grado de latitudo estas ~ 111 km (malgranda variado ĉar tero estas iomete ovala, sed sufiĉa por tiu celo). londiff = distanco / (abs(cos(deg2rad(latitudo))*111)) — aŭ 69 por mejloj (vi efektive povas preni iom pli grandan kvadraton por kalkuli variadojn). Tiam prenu la rezulton de tio kaj enigu ĝin en la radialan elekton. Nur ne forgesu prikalkuli eksterlimajn koordinatojn - te la intervalo de akceptebla longitudo estas -180 ĝis +180 kaj la intervalo de akceptebla latitudo estas -90 ĝis +90 - se via latdiff aŭ londiff kuras ekster ĉi tiu intervalo. . Notu ke en la plej multaj kazoj tio eble ne estas uzebla ĉar ĝi nur influas kalkulojn super linio tra la Pacifika oceano de poluso ĝis poluso, kvankam ĝi intersekcas parton de Chukotka kaj parton de Alaska.

    Kion ni sukcesas per tio estas grava redukto de la nombro da punktoj, kontraŭ kiuj vi faras ĉi tiun kalkulon. Se vi havas milionon da tutmondaj poentoj en la datumbazo distribuitaj proksimume egale kaj vi volas serĉi ene de 100 km, tiam via unua (rapida) serĉo estas de areo 10000 kvadrataj km kaj verŝajne donos ĉirkaŭ 20 rezultojn (surbaze de egala distribuo super surfacareo de ĉirkaŭ 500M kvadrataj km), kio signifas, ke vi ruligas la kompleksan distancokalkulon 20 fojojn por ĉi tiu demando anstataŭ milionoble.

    • 21
      • 22

        Mirinda konsilo! Mi fakte laboris kun programisto, kiu skribis funkcion, kiu tiris la internan kvadraton kaj poste rekursivan funkcion, kiu faris 'kvadratojn' ĉirkaŭ la perimetro por inkluzivi kaj ekskludi la ceterajn punktojn. La rezulto estis nekredeble rapida rezulto - li povis taksi milionojn da punktoj en mikrosekundoj.

        Mia aliro supre estas sendube 'kruda' sed kapabla. Redankon!

        • 23

          Doug,

          Mi provis uzi mysql kaj php por taksi ĉu lat longa punkto estas ene de plurangulo. Ĉu vi scias, ĉu via programisto-amiko publikigis iujn ekzemplojn pri kiel plenumi ĉi tiun taskon. Aŭ ĉu vi konas iujn bonajn ekzemplojn. Antaŭdankon.

  16. 24

    Saluton al ĉiuj, jen mia prova SQL-deklaro:

    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

    kaj Mysql diras al mi, ke distanco, ne ekzistas kiel kolumno, mi povas uzi ordon per, mi povas fari ĝin sen KIE, kaj ĝi funkcias, sed ne kun ĝi...

  17. 26

    Ĉi tio estas bonega, tamen ĝi estas same kiel la birdoj flugas. Estus bonege provi kaj korpigi la google maps API al ĉi tio iel (eble uzante vojojn ktp.) Nur por doni ideon uzante malsaman transportformon. Mi ankoraŭ devas fari ŝajnigan annealing-funkcion en PHP, kiu kapablus oferti efikan solvon al la problemo de vojaĝa vendisto. Sed mi pensas, ke mi eble povos reuzi iom da via kodo por fari tion.

  18. 27
  19. 28

    Bona artikolo! Mi trovis multajn artikolojn priskribantajn kiel kalkuli distancon inter du punktoj sed mi vere serĉis la SQL-fragmenton.

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

    2 tagoj da esploro por finfine trovi ĉi tiun paĝon, kiu solvas mian problemon. Ŝajnas, ke mi pli bone elprenu mian WolframAlpha kaj pliprofundigu mian matematikon. La ŝanĝo de KIE al HAVING havas mian skripton en funkciado. DANKON

  25. 37
    • 38

      Dankon Georgi. Mi daŭre ricevis kolumnon 'distancon' ne trovitan. Unufoje mi ŝanĝas la KIE al HAVO ĝi funkciis kiel ĉarmo!

  26. 39

    Mi deziras, ke ĉi tio estu la unua paĝo, kiun mi trovus pri ĉi tio. Post provi multajn malsamajn komandojn ĉi tiu estis la sola kiu funkciis ĝuste, kaj kun minimumaj ŝanĝoj necesaj por konveni mian propran datumbazon.
    Multaj dankoj!

  27. 40

    Mi deziras, ke ĉi tio estu la unua paĝo, kiun mi trovus pri ĉi tio. Post provi multajn malsamajn komandojn ĉi tiu estis la sola kiu funkciis ĝuste, kaj kun minimumaj ŝanĝoj necesaj por konveni mian propran datumbazon.
    Multaj dankoj!

  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

    dankon pro afiŝado de ĉi tiu helpema artikolo,  
    sed ial mi ŝatus demandi
    kiel akiri la distancon inter coords en mysql db kaj coords enmetitaj al php de uzanto?
    por pli klare priskribi:
    1.uzanto devas enmeti [id] por elekti specifitajn datumojn el db kaj la koordoj de la uzanto mem
    2.la php-dosiero ricevas la celajn datumojn (koordojn) uzante [id] kaj poste kalkulu distancon inter uzanto kaj celpunkto

    aŭ ĉu simple povas atingi distancon de la suba kodo?

    $qry = “SELECT *,(((acos(sin((“.$latitudo.”*pi()/180)) * sin((`Latitudo`*pi()/180))+cos((“. $latitudo.”*pi()/180)) * cos((`Latitudo`*pi()/180)) * cos((((“.$longitudo.”- `Longitudo`)*pi()/180) )))*180/pi())*60*1.1515*1.609344) kiel distanco DE `MyTable` WHERE distanco >= “.$distance.” >>>>ĉu mi povas "elpreni" la distancon de ĉi tie?
    Redankon,
    Timmy S

  41. 60

    bone, ĉio, kion mi provis, ne funkcias. Mi volas diri, tio, kion mi havas, funkcias, sed la distancoj estas tre malproksimaj.

    Ĉu iu povus vidi kio estas malĝusta kun ĉi tiu kodo?

    if(isset($_POST['submetita'])){ $z = $_POST['kodo']; $r = $_POST['radiuso']; echo “Rezultoj por “.$z; $sql = mysql_query(“SELECT DISTINCT m.zipkodo, m.MktName,m.LocAddSt,m.LocAddCity,m.LocAddState,m.x1,m.y1,m.verified,z1.lat,z2.lon,z1. urbo,z1.state DE mrk m, zip z1, zip z2 KIE m.zipcode = z1.zipcode KAJ z2.zipcode = $z KAJ (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 ) ) ) aŭ <= $e ") (mysql_eraro()); while($vico = mysql_fetch_array( $sql)) { $vendejo1 = $vico['MktName']."”; $vendejo = $row['LocAddSt'].””; $vendejo .= $row['LocAddCity'].”, “.$row['LocAddState'].” “.$vico['kodo']; $latitudo1 = $vico['lat']; $longitudo1 = $vico['lon']; $latitudo2 = $vico['y1']; $longitudo2 = $vico['x1']; $urbo = $vico['urbo']; $stato = $vico['stato']; $dis = getnew($latitudo1, $longitudo1, $latitudo2, $longitudo2, $unuo = 'Mi'); // $dis = distanco($lat1, $lon1, $lat2, $lon2); $kontrolita = $vico['kontrolita']; if($kontrolita == '1'){ eĥo “”; echo “”.$vendejo.””; echo $dis . ”mejlo(j) for”; eĥo “”; } else { echo “”.$vendejo.””; echo $dis . ”mejlo(j) for”; eĥo “”; } }}

    miaj funkcioj.php-kodo
    function getnew($latitudo1, $longitudo1, $latitudo2, $longitudo2, $unuo = 'Mi') { $theta = $longitudo1 – $longitudo2; $distanco = (sin(deg2rad($latitudo1)) * sin(deg2rad($latitudo2))) + (cos(deg2rad($latitudo1)) * cos(deg2rad($latitudo2)) * cos(deg2rad($theta)) ); $distance = acos($distance); $distanco = rad2deg($distanco); $distanco = $distanco * 60 * 1.1515; switch($unuo) { case 'Mi': break; kazo 'Km' : $distanco = $distanco * 1.609344; } reveno (ronda($distanco,2)); }

    Antaŭdankon

  42. 61
  43. 62

    Hej Douglas, bonega artikolo. Mi trovis vian klarigon pri la geografiaj konceptoj kaj la kodo vere interesa. Mia nura sugesto estus spacigi kaj indentigi la kodon por montriĝo (kiel Stackoverflow, ekzemple). Mi komprenas, ke vi volas konservi spacon, sed konvencia kodinterspacigo/indentaĵo multe plifaciligus al mi, kiel programisto, legi kaj dissekci. Ĉiuokaze, tio estas malgranda afero. Daŭrigu la bonegan laboron.

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

    ŝajnas pli rapide (mysql 5.9) uzi dufoje la formulon en la elekto kaj kie:
    $formulo = “(((acos(sin((“.$latitudo.”*pi()/180)) * sin((`Latitudo`*pi()/180))+cos(((“.$latitudo. ”*pi()/180)) * cos((`Latitudo`*pi()/180)) * cos(((“.$longitudo.”- `Longitudo`)*pi()/180)))) *180/pi())*60*1.1515*1.609344)”;
    $sql = 'SELECT *, '.$formulo.' kiel distanco DE tablo WHERE '..$formulo.' <= '.$distanco;

  51. 71
  52. 72

    Multan dankon pro tondi ĉi tiun artikolon. Ĝi estas tre helpema.
    PHP komence estis kreita kiel simpla skriptplatformo nomita "Persona Hejmpaĝo". Nuntempe PHP (la mallongigo de Hypertext Preprocessor) estas alternativo de la teknologio de Active Server Pages (ASP) de Mikrosofto.

    PHP estas malfermfonta servilflanka lingvo, kiu estas uzata por krei dinamikajn retpaĝojn. Ĝi povas esti enigita en HTML. PHP estas kutime uzata kune kun MySQL-datumbazo sur Linukso/UNIKsaj retserviloj. Ĝi estas verŝajne la plej populara skriptlingvo.

  53. 73

    Mi trovis, ke ĉi-supra solvo ne funkcias ĝuste.
    Mi devas ŝanĝi al:

    $qqq = “SELECT *,(((acos(sin((“.$latitudo.”*pi()/180)) * sin((`latt`*pi()/180))+cos((” . $latitudo . “*pi()/180)) * cos((`latt`*pi()/180)) * cos(((” . $longitudo . “- `longt`)*pi()/180) )))*180/pi())*60*1.1515) kiel distanco DE `registro` “;

  54. 75
  55. 76

    Saluton, bonvolu, mi vere bezonos vian helpon pri tio.

    Mi faris ricevpeton al mia retservilo http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $latitudo
    —2.23389 = $longitudo
    kaj 20 = la distanco, kiun mi volas preni

    Tamen uzante vian formulon, ĝi retrovas ĉiujn vicojn en mia db

    $rezultoj = DB::select( DB::raw(“SELECT *, (((acos(sin((“.$latitudo.”*pi()/180)) * sin((lat*pi()/180 ))+cos((“.$latitudo.”*pi()/180)) * cos((lat*pi()/180)) * cos(((“.$longitudo.”- lng)*pi( )/180))))*180/pi())*60*1.1515*1.609344) kiel distanco DE markiloj HAVING distanco >= “.$distance ));

    [{“id”:1,”name”:”Frankie Johnnie & Luigo Too”,”adreso”:”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”,”adreso”:”790 Castro St, Mountain View, CA”,”lat”:37.387138366699,”lng”: -122.08323669434,”distance”:16079.175940152},{“id”:3,”name”:”Kapp's Pizza Bar & Grill”,”adreso”:”191 Castro St, Mountain View, CA”,”lat”:37.393886566162, ”lng”:-122.07891845703,”distance”:16078.381373826},{“id”:4,”name”:”Ronda Tablo Pico: Mountain View”,”adreso”:”570 N Shoreline Blvd, Mountain View, CA”, ”lat”:37.402652740479,”lng”:-122.07935333252,”distance”:16077.420540582},{“id”:5,”name”:”Tony & Alba's Pizza & Pasta”,”adreso”:”619 Escuela Ave, Mountain” View, CA”,”lat”:37.394012451172,”lng”:-122.09552764893,”distance”:16078.563225154},{“id”:6,”name”:”Oregano's Wood-Fired Pico”,”adreso4546”:”37.401725769043” El Camino Real, Los Altos, CA”,”lat”:122.11464691162,”lng”:-16077.937560795,”distance”:7},{“ id”:24,”name”:”La trinkejoj kaj kradoj”,”adreso”:”53.485118865967 Whiteley Street, Manĉestro”,”lat”:2.1828699111938,”lng”:-8038.7620112314,”distance”:XNUMX}]

    Mi volas preni nur vicojn kun 20 mejloj sed ĝi alportas ĉiujn vicojn. Bonvolu, kion mi malbone faras

  56. 77

    Mi serĉas similan demandon sed iom pliiĝis - mallonge ĉi tio estas grupigi ĉiujn koordinatojn ene de 2 mejloj de ĉiu koordinato kaj poste kalkuli kiom da koordinatoj en ĉiu grupo kaj eligi nur unu grupon kiu havas la plej multajn koordinatojn - eĉ se vi havas pli ol unu grupon inter grupoj kiuj havas la plej grandan nombron da koordinatoj - simple eligu la hazardan grupon el la grupoj kun la sama plej granda nombro -

Kion vi pensas?

Ĉi tiu retejo uzas Akismeton por redukti spamon. Lernu, kiel via komento datiĝas.