Izračunajte ili postavite upit za udaljenost velikog kruga između točaka zemljopisne širine i dužine koristeći Haversinu formulu (primjeri PHP, Python, MySQL, MSSQL)

Haversine formula - Velika kružna udaljenost - PHP, Python, MySQL

Ovog sam mjeseca prilično programirao na PHP-u i MySQL-u s obzirom na GIS. Pregledavajući mrežu, zapravo sam teško pronašao neke od njih Geografski izračuni kako bih pronašao udaljenost između dva mjesta pa sam ih želio podijeliti ovdje.

Karta leta Europa s velikom kružnom udaljenostom

Jednostavan način izračuna udaljenosti između dviju točaka je pomoću pitagorejske formule za izračunavanje hipotenuze trokuta (A² + B² = C²). Ovo je poznato kao Euklidska udaljenost.

To je zanimljiv početak, ali se ne odnosi na Geografiju jer je udaljenost između crta zemljopisne širine i dužine nisu jednake udaljenosti odvojeno. Kako se približavate ekvatoru, zemljopisne širine se sve više razdvajaju. Ako koristite neku jednostavnu jednadžbu triangulacije, ona može točno izmjeriti udaljenost na jednom mjestu, a na drugom strašno pogrešno, zbog zakrivljenosti Zemlje.

Udaljenost velikog kruga

Rute koje se prelaze velike udaljenosti oko Zemlje poznate su kao Udaljenost velikog kruga. Odnosno... najkraća udaljenost između dviju točaka na kugli razlikuje se od točaka na ravnoj karti. Kombinirajte to s činjenicom da linije zemljopisne širine i dužine nisu jednako udaljene... i dobit ćete težak izračun.

Evo fantastičnog video objašnjenja kako funkcioniraju Veliki krugovi.

Formula Haversine

Udaljenost koja koristi zakrivljenost Zemlje uključena je u Formula haversina, koji koristi trigonometriju kako bi omogućio zakrivljenost zemlje. Kada nalazite udaljenost između dva mjesta na zemlji (zračnom linijom), ravna crta je doista luk.

To je primjenjivo u zračnom letu - jeste li ikada pogledali stvarnu kartu letova i primijetili da su zaobljeni? To je zato što je kraće letjeti u luku između dvije točke nego izravno do mjesta.

PHP: Izračunajte udaljenost između 2 zemljopisne širine i dužine

Evo PHP formule za izračun udaljenosti između dvije točke (zajedno s pretvorbom milja i kilometra) zaokružene na dvije decimale.

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

Varijable su:

  • $Latitude1 – varijabla za geografsku širinu vaše prve lokacije.
  • $Longitude1 – varijabla za geografsku dužinu vaše prve lokacije
  • $Latitude2 – varijabla za geografsku širinu vaše druge lokacije.
  • $Longitude2 – varijabla za geografsku dužinu vaše druge lokacije.
  • $jedinica – zadano biće milja. Ovo se može ažurirati ili proslijediti kao kilometara.

Python: Izračunajte udaljenost između 2 točke zemljopisne širine i dužine

U svakom slučaju, ovdje je Pythonova formula za izračun udaljenosti između dvije točke (zajedno s pretvorbom milja i kilometra) zaokružene na dvije decimale. Svaka čast mom sinu, Billu Karru koji je Data Scientist OpenINSIGHTS, za kod.

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)

Varijable su:

  • zemljopisna širina1 – varijabla za vašu prvu lokaciju širina.
  • zemljopisna dužina1 – varijabla za vašu prvu lokaciju dužina
  • zemljopisna širina2 – varijabla za vašu drugu lokaciju širina.
  • zemljopisna dužina2 – varijabla za vašu drugu lokaciju dužina.
  • jedinica – zadano biće milja. Ovo se može ažurirati ili proslijediti kao kilometara.

MySQL: dohvaćanje svih zapisa unutar raspona izračunavanjem udaljenosti u miljama pomoću zemljopisne širine i dužine

Također je moguće koristiti SQL za izračun kako biste pronašli sve zapise na određenoj udaljenosti. U ovom primjeru postavit ću upit MyTable u MySQL kako bih pronašao sve zapise koji su manji ili jednaki promjenljivoj $ distance (u miljama) do moje lokacije na $ latitude i $ longitude:

Upit za dohvaćanje svih zapisa unutar određenog udaljenost izračunavanjem udaljenosti u miljama između dvije točke geografske širine i dužine su:

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

Morat ćete prilagoditi ovo:

  • $ zemljopisne dužine - ovo je PHP varijabla gdje prolazim dužinu točke.
  • $ zemljopisne širine - ovo je PHP varijabla gdje prolazim dužinu točke.
  • $ udaljenost - ovo je udaljenost na kojoj biste željeli pronaći sve zapise manje ili jednake.
  • stol - ovo je tablica ... morat ćete je zamijeniti imenom svoje tablice.
  • širina - ovo je polje vaše geografske širine.
  • dužina - ovo je polje vaše zemljopisne dužine.

MySQL: dohvaćanje svih zapisa unutar raspona izračunavanjem udaljenosti u kilometrima pomoću zemljopisne širine i dužine

Evo i SQL upita pomoću kilometara u MySQL-u:

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

Morat ćete prilagoditi ovo:

  • $ zemljopisne dužine - ovo je PHP varijabla gdje prolazim dužinu točke.
  • $ zemljopisne širine - ovo je PHP varijabla gdje prolazim dužinu točke.
  • $ udaljenost - ovo je udaljenost na kojoj biste željeli pronaći sve zapise manje ili jednake.
  • stol - ovo je tablica ... morat ćete je zamijeniti imenom svoje tablice.
  • širina - ovo je polje vaše geografske širine.
  • dužina - ovo je polje vaše zemljopisne dužine.

Koristila sam ovaj kod u platformi za mapiranje poduzeća koju smo koristili za maloprodajnu trgovinu s više od 1,000 lokacija širom Sjeverne Amerike i djelovala je lijepo.

Microsoft SQL Server Geografska udaljenost: STDistance

Ako koristite Microsoft SQL Server, oni nude vlastitu funkciju, STDistance za izračun udaljenosti između dviju točaka pomoću tipa podataka Geografija.

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

Savjet za šešir Manash Sahoo, potpredsjednik i arhitekt Highbridge.

77 Komentari

  1. 1

    Hvala vam puno na dijeljenju. Ovo je bio jednostavan posao kopiranja i lijepljenja i odlično funkcionira. Uštedio si mi puno vremena.
    FYI za sve koji portiraju na C:
    double deg2rad(double deg) { return deg*(3.14159265358979323846/180.0); }

  2. 2

    Vrlo lijepa objava – jako je dobro funkcionirala – morao sam samo promijeniti naziv stola koji drži lat-long. Radi prilično brzo da.. Imam relativno mali broj lat-longs (< 400), ali mislim da bi ovo bilo lijepo. I dobra stranica – upravo sam je dodao na svoj račun del.icio.us i redovito ću provjeravati.

  3. 4
  4. 5
  5. 8

    mislim da je vašem SQL-u potrebna izjava.
    umjesto WHERE udaljenost <= $distance možda ćete trebati
    koristite HAVING udaljenost <= $distance

    inače hvala što si mi uštedio hrpu vremena i energije.

  6. 10
  7. 11
  8. 12

    Hvala vam puno što ste podijelili ovaj kod. Uštedio mi je puno vremena za razvoj. Također, hvala vašim čitateljima što su istaknuli da je izjava HAVING neophodna za MySQL 5.x. Vrlo korisno.

  9. 14
  10. 15
  11. 16

    Također sam otkrio da WHERE ne radi za mene. Promijenio u HAVING i sve radi savršeno. Isprva nisam čitao komentare i prepisao sam ih koristeći ugniježđeni odabir. Obje će raditi sasvim dobro.

  12. 17
  13. 18

    Nevjerojatno korisno, hvala puno! Imao sam problema s novim “IMATI”, a ne “GDJE”, ali nakon što sam pročitao komentare ovdje (nakon otprilike pola sata frustriranja zubima =P), dobro sam uspio. Hvala ^_^

  14. 19
  15. 20

    Imajte na umu da će takva odabrana izjava biti računski vrlo intenzivna i stoga spora. Ako imate puno tih upita, stvari se mogu brzo zaustaviti.

    Mnogo manje intenzivan pristup je pokretanje prvog (grubog) odabira koristeći KVADRATNO područje definirano izračunatom udaljenosti, tj. “odaberite * iz naziva tablice gdje je zemljopisna širina između lat1 i lat2 i zemljopisna dužina između lon1 i lon2”. lat1 = targetlatitude – latdiff, lat2 = targetlatitude + latdiff, slično sa lon. latdiff ~= udaljenost / 111 (za km), ili udaljenost/69 za milje jer je 1 stupanj geografske širine ~ 111 km (mala varijacija jer je zemlja blago ovalna, ali dovoljna za tu svrhu). londiff = udaljenost / (abs(cos(deg2rad(latitude))*111)) — ili 69 za milje (zapravo možete uzeti malo veći kvadrat kako biste uzeli u obzir varijacije). Zatim uzmite rezultat toga i unesite ga u radijalni odabir. Samo nemojte zaboraviti uzeti u obzir koordinate izvan granica – npr. raspon prihvatljive zemljopisne dužine je -180 do +180, a raspon prihvatljive zemljopisne širine je -90 do +90 — u slučaju da vaš latdiff ili londiff ide izvan tog raspona . Imajte na umu da u većini slučajeva to možda nije primjenjivo jer utječe samo na izračune preko linije kroz Tihi ocean od pola do pola, iako siječe dio Čukotke i dio Aljaske.

    Time postižemo značajno smanjenje broja bodova na temelju kojih vršite ovaj izračun. Ako imate milijun globalnih točaka u bazi podataka raspoređenih otprilike ravnomjerno i želite pretraživati ​​unutar 100 km, tada je vaša prva (brza) pretraga površine 10000 km20 i vjerojatno će dati oko 500 rezultata (na temelju ravnomjerne distribucije na površine od oko 20M četvornih km), što znači da složeni izračun udaljenosti izvodite XNUMX puta za ovaj upit umjesto milijun puta.

    • 21
      • 22

        Fantastičan savjet! Zapravo sam radio s programerom koji je napisao funkciju koja je povukla unutarnji kvadrat, a zatim rekurzivnu funkciju koja je napravila 'kvadrate' oko perimetra kako bi uključila i isključila preostale točke. Rezultat je bio nevjerojatno brz rezultat - mogao je procijeniti milijune bodova u mikrosekundama.

        Moj gornji pristup je definitivno 'grub', ali sposoban. Hvala još jednom!

        • 23

          Dag,

          Pokušavao sam koristiti mysql i php da procijenim je li lat long točka unutar poligona. Znate li je li vaš prijatelj programer objavio ikakve primjere kako izvršiti ovaj zadatak. Ili znate neki dobar primjer. Hvala unaprijed.

  16. 24

    Pozdrav svima ovo je moja testna SQL izjava:

    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

    a Mysql mi govori da udaljenost, ne postoji kao stupac, mogu koristiti poredak po, mogu to učiniti bez WHERE, i radi, ali ne s njim...

  17. 26

    Ovo je sjajno, ali to je baš kao što ptice lete. Bilo bi sjajno pokušati u ovo nekako uključiti API google maps (možda korištenjem cesta itd.) Samo da dam ideju koristeći drugačiji oblik prijevoza. Još uvijek moram napraviti simuliranu funkciju žarenja u PHP-u koja bi mogla ponuditi učinkovito rješenje za problem trgovačkog putnika. Ali mislim da bih mogao ponovno upotrijebiti dio vašeg koda za to.

  18. 27
  19. 28

    Dobar članak! Pronašao sam puno članaka koji opisuju kako izračunati udaljenost između dvije točke, ali stvarno sam tražio SQL isječak.

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

    2 dana istraživanja da konačno pronađem ovu stranicu koja rješava moj problem. Čini se da je bolje da izbacim svoju WolframAlpha i nadopunim matematiku. Promjena iz WHERE u HAVING ima moju skriptu u ispravnom stanju. HVALA VAM

  25. 37
    • 38

      Hvala Georgi. Stalno sam dobivao stupac 'udaljenost' nije pronađen. Nakon što sam promijenio WHERE u HAVING, radio je kao šarm!

  26. 39

    Volio bih da je ovo prva stranica koju sam pronašao na ovome. Nakon što je isprobao mnogo različitih naredbi, ovo je jedina koja je ispravno radila i s minimalnim promjenama potrebnim kako bi se uklopila u moju vlastitu bazu podataka.
    Puno hvala!

  27. 40

    Volio bih da je ovo prva stranica koju sam pronašao na ovome. Nakon što je isprobao mnogo različitih naredbi, ovo je jedina koja je ispravno radila i s minimalnim promjenama potrebnim kako bi se uklopila u moju vlastitu bazu podataka.
    Puno hvala!

  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

    hvala na objavi ovog korisnog članka,  
    ali iz nekog razloga želim pitati
    kako dobiti udaljenost između coords unutar mysql db i coords umetnutih u php od strane korisnika?
    za jasnije opisati:
    1.korisnik mora umetnuti [id] za odabir specificiranih podataka iz db-a i samih korisnika
    2. php datoteka dobiva ciljne podatke (koorde) koristeći [id], a zatim izračunava udaljenost između korisnika i ciljne točke

    ili jednostavno možete dobiti udaljenost od koda u nastavku?

    $qry = “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) kao udaljenost FROM `MyTable` WHERE udaljenost >= ".$distance." >>>>mogu li odavde "izvući" udaljenost?
    hvala još jednom,
    Timmy S

  41. 60

    ok, sve što sam probao ne radi. Mislim, ono što imam radi, ali udaljenosti su velike.

    Može li netko vidjeti što nije u redu s ovim kodom?

    if(isset($_POST['submitted'])){ $z = $_POST['poštanski broj']; $r = $_POST['radijus']; echo “Rezultati za “.$z; $sql = mysql_query(“ODABIR DISTINCT m.zipcode, m.MktName,m.LocAddSt,m.LocAddCity,m.LocAddState,m.x1,m.y1,m.verified,z1.lat,z2.lon,z1. grad,z1.state IZ mrk m, zip z1, zip z2 GDJE m.poštanski broj = z1.poštanski broj I z2.zipcode = $z I (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 ) ili <= ) $ ) ") (mysql_error()); while($row = mysql_fetch_array($sql)) { $store1 = $row['MktName']."”; $store = $row['LocAddSt'].””; $store .= $row['LocAddCity'].", ".$row['LocAddState']." “.$row['zipcode']; $latitude1 = $red ['lat']; $longitude1 = $red ['duž']; $latitude2 = $red ['y1']; $longitude2 = $red ['x1']; $grad = $red['grad']; $state = $red ['stanje']; $dis = getnew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi'); // $dis = udaljenost ($lat1, $lon1, $lat2, $lon2); $provjereno = $red ['provjereno']; if($verified == '1'){ echo “”; echo “”.$store.””; odjek $dis . " kilometrima daleko"; jeka ""; } else { echo “.$store.””; odjek $dis . " kilometrima daleko"; jeka ""; } }}

    moje funkcije.php kod
    funkcija getnew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { $theta = $longitude1 – $longitude2; $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)) ); $udaljenost = akos($udaljenost); $udaljenost = rad2deg($udaljenost); $ udaljenost = $ udaljenost * 60 * 1.1515; switch($unit) { case 'Mi': break; slučaj 'Km' : $udaljenost = $udaljenost * 1.609344; } povratak (okrugli($distanca,2)); }

    Hvala unaprijed

  42. 61
  43. 62

    Hej Douglase, odličan članak. Vaše objašnjenje geografskih pojmova i šifre bilo mi je jako zanimljivo. Moj jedini prijedlog bi bio razmak i uvlačenje koda za prikaz (kao što je Stackoverflow, na primjer). Razumijem da želite uštedjeti prostor, ali konvencionalni razmak/uvlačenje koda bi mi, kao programeru, puno olakšalo čitanje i seciranje. U svakom slučaju, to je mala stvar. Nastavite s odličnim radom.

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

    čini se bržim (mysql 5.9) koristiti dvostruku formulu u odabiru i gdje:
    $formula = “(((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)”;
    $sql = 'ODABIR *, '.$formula.' kao udaljenost OD tablice WHERE '..$formula.' <= '.$distance;

  51. 71
  52. 72

    Hvala vam puno što ste pročitali ovaj članak, vrlo je koristan.
    PHP je isprva kreiran kao jednostavna platforma za skriptiranje pod nazivom “Osobna početna stranica”. Danas je PHP (kratica od Hypertext Preprocessor) alternativa Microsoftovoj tehnologiji Active Server Pages (ASP).

    PHP je jezik otvorenog koda na strani poslužitelja koji se koristi za kreiranje dinamičkih web stranica. Može se ugraditi u HTML. PHP se obično koristi u sprezi s MySQL bazom podataka na Linux/UNIX web poslužiteljima. To je vjerojatno najpopularniji skriptni jezik.

  53. 73

    Otkrio sam da gore navedeno rješenje ne radi ispravno.
    Moram promijeniti u:

    $qqq = “ODABIR *,(((acos(sin((“.$latitude.”*pi()/180)) * sin((`latt`*pi()/180))+cos((” . $latitude . “*pi()/180)) * cos((`latt`*pi()/180)) * cos(((” . $longitude . “- `longt`)*pi()/180) )))*180/pi())*60*1.1515) kao udaljenost OD `registra` “;

  54. 75
  55. 76

    Pozdrav, stvarno će mi trebati vaša pomoć oko ovoga.

    Napravio sam zahtjev za dobivanje na svom web-poslužitelju http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $latitude
    -2.23389 = $dužina
    i 20 = udaljenost koju želim dohvatiti

    Međutim, koristeći vašu formulu, dohvaća sve retke u mojoj db

    $results = DB::select( DB::raw(“SELECT *, (((acos(sin((“.$latitude.”*pi()/180)) * sin((lat*pi()/180 ))+cos((“.$latitude.”*pi()/180)) * cos((lat*pi()/180)) * cos(((“.$longitude.”- lng)*pi( )/180))))*180/pi())*60*1.1515*1.609344) kao udaljenost OD markera IMAJU udaljenost >= “.$distance ));

    [{“id”:1,”name”:”Frankie Johnnie & Luigo Too”,”address”:”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”,”address”:”790 Castro St, Mountain View, CA”,”lat”:37.387138366699,”lng”: -122.08323669434,”distance”:16079.175940152},{“id”:3,”name”:”Kapp's Pizza Bar & Grill”,”address”:”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,”distance”:16077.420540582},{“id”:5,”name”:”Tony & Alba's Pizza & Pasta”,”adresa”:”619”:”Escuela View, CA”,”lat”:37.394012451172,”lng”:-122.09552764893,”distance”:16078.563225154},{“id”:6,”name”:”Origano's Wood-Fired Pizza:”4546”37.401725769043 El Camino Real, Los Altos, CA”,”lat”:122.11464691162,”lng”:-16077.937560795,”distance”:7},{“ id”:24,”name”:”The bars and grills”,”address”:”53.485118865967 Whiteley Street, Manchester”,”lat”:2.1828699111938,”lng”:-8038.7620112314,”distance”:XNUMX}]]]

    Želim dohvatiti samo redove s 20 milja, ali to donosi sve redove. Molim vas što radim krivo

  56. 77

    Tražim sličan upit, ali sam se malo pojačao – ukratko, ovo je grupirati sve koordinate unutar 2 milje od svake koordinate, a zatim prebrojati koliko koordinata u svakoj grupi i ispisati samo jednu grupu koja ima najviše koordinata – čak i ako imate više od jedne grupe među grupama koje imaju najveći broj koordinata – jednostavno ispišite slučajnu grupu iz grupa s istim najvećim brojem –

Što vi mislite?

Ova web stranica koristi Akismet za smanjenje neželjene pošte. Saznajte kako se podaci vašeg komentara obrađuju.