Nagyköri távolság kiszámítása vagy lekérdezése a szélességi és hosszúsági pontok között a Haversine képlet segítségével (PHP, Python, MySQL, MSSQL példák)

Haversine képlet – Nagy körtávolság – PHP, Python, MySQL

Ebben a hónapban elég sokat programoztam PHP-ben és MySQL-ben a térinformatika tekintetében. A háló körül szaglászva valójában nehezen találtam meg néhányat Földrajzi számítások hogy megtalálja a távolságot két helyszín között, ezért itt szerettem volna megosztani őket.

Repülőtér Európa nagy körtávolsággal

A két pont közötti távolság kiszámításának egyszerű módja a Pitagorasz-képlet segítségével egy háromszög hipotenuszának kiszámítása (A² + B² = C²). Ez az úgynevezett Euklideszi távolság.

Ez egy érdekes kezdet, de nem vonatkozik a földrajzra, mivel a szélességi és hosszúsági vonalak közötti távolság igen nem egyenlő távolságok egymástól. Ahogy közelebb kerülsz az Egyenlítőhöz, a szélességi vonalak egyre távolabb kerülnek egymástól. Ha valamilyen egyszerű háromszögelési egyenletet használ, akkor a Föld görbülete miatt az egyik helyen pontosan mérheti a távolságot, a másikban pedig rettenetesen rosszul.

Nagy körtávolság

A Föld körül nagy távolságokat megtett útvonalak ún Nagy körtávolság. Azaz… egy gömb két pontja közötti legrövidebb távolság különbözik a sík térkép pontjaitól. Ha ezt kombinálja azzal a ténnyel, hogy a szélességi és hosszúsági vonalak nem egyenlő távolságra vannak… és nehéz számítást kell végezni.

Itt van egy fantasztikus videó magyarázat a Nagy Körök működéséről.

A Haversine Formula

A Föld görbületét használó távolság beépül a Haversine képlet, amely trigonometria segítségével teszi lehetővé a föld görbületét. Ha megtalálja a távolságot a föld két helye között (légvonalban), akkor az egyenes valóban ív.

Ez a légi repülésnél alkalmazható - megnézte már a tényleges repülési térképet, és észrevette, hogy azok boltívesek? Ez azért van, mert rövidebb egy boltívben repülni két pont között, mint közvetlenül a helyszínre.

PHP: Számítsa ki a távolságot 2 szélességi és hosszúsági pont között

Íme a PHP képlet két pont közötti távolság kiszámításához (a Mérföld és Kilométer közötti átszámítással együtt), két tizedesjegyre kerekítve.

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

A változók a következők:

  • $Latitude1 – az első hely szélességi fokának változója.
  • $hosszúság1 – az első hely hosszúsági fokának változója
  • $Latitude2 – a második hely szélességi fokának változója.
  • $hosszúság2 – a második hely hosszúsági fokának változója.
  • $egység – az alapértelmezett lény mérföld. Ez frissíthető vagy átadható kilométerre.

Python: Számítsa ki a távolságot 2 szélességi és hosszúsági pont között

Mindenesetre itt van a Python képlet a két pont közötti távolság kiszámításához (a Mérföld vs. Kilométer átszámítással együtt), két tizedesjegyre kerekítve. Köszönet a fiamnak, Bill Karrnak, aki adatkutató OpenINSIGHTS, a kódért.

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)

A változók a következők:

  • szélesség1 – az első hely változója szélesség.
  • hosszúság1 – az első hely változója hosszúság
  • szélesség2 – a második hely változója szélesség.
  • hosszúság2 – a második hely változója hosszúság.
  • egység – az alapértelmezett lény mérföld. Ez frissíthető vagy átadható kilométerre.

MySQL: Egy tartományon belüli összes rekord lekérése a távolság mérföldben történő kiszámításával a szélesség és hosszúság segítségével

Az SQL segítségével számításokat is végezhet az összes rekord meghatározott távolságon belüli megtalálásához. Ebben a példában megkérdezem a MyTable szolgáltatást a MySQL-ben, hogy megtaláljam az összes olyan rekordot, amely kisebb vagy egyenlő, mint $ változó $ távolság (mérföldben) a helyemig $ latitude és $ longitude között:

A lekérdezés egy adott rekord összes rekordjának lekérésére távolság a két szélességi és hosszúsági pont mérföldes távolságának kiszámításával:

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

Ezt személyre kell szabnia:

  • $ hosszúság - ez egy PHP változó, ahol átmegyek a pont hosszúságán.
  • $ szélesség - ez egy PHP változó, ahol átmegyek a pont hosszúságán.
  • $ távolság - ez az a távolság, amellyel az összes rekordot kisebbnek vagy egyenlőnek szeretné megtalálni.
  • táblázat - ez a táblázat ... ezt le kell cserélnie a táblázat nevére.
  • szélesség - ez a szélességi köröd.
  • hosszúság - ez a hosszúságod területe.

MySQL: Az összes rekord lekérése egy tartományon belül a távolság kiszámításával kilométerben a szélesség és hosszúság segítségével

És íme az SQL lekérdezés a MySQL-ben kilométereket használva:

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

Ezt személyre kell szabnia:

  • $ hosszúság - ez egy PHP változó, ahol átmegyek a pont hosszúságán.
  • $ szélesség - ez egy PHP változó, ahol átmegyek a pont hosszúságán.
  • $ távolság - ez az a távolság, amellyel az összes rekordot kisebbnek vagy egyenlőnek szeretné megtalálni.
  • táblázat - ez a táblázat ... ezt le kell cserélnie a táblázat nevére.
  • szélesség - ez a szélességi köröd.
  • hosszúság - ez a hosszúságod területe.

Ezt a kódot egy vállalati térképészeti platformon használtam fel, amelyet Észak-Amerikában több mint 1,000 telephellyel rendelkező kiskereskedelmi üzlet számára használtunk, és gyönyörűen működött.

Microsoft SQL Server földrajzi távolság: STDistance

Ha a Microsoft SQL Servert használja, ezek saját funkciót kínálnak, STDistance két pont közötti távolság kiszámításához a Földrajz adattípus használatával.

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

Kalaptipp Manash Sahoo-nak, a cég alelnökének és építészének Highbridge.

77 Comments

  1. 1

    Nagyon köszönöm a megosztásokat. Ez egy egyszerű másolási és beillesztési feladat volt, és remekül működik. Sok időt megspóroltál nekem.
    Tájékoztatásul mindenkinek, aki C-re portol:
    double deg2rad(double deg) { return deg*(3.14159265358979323846/180.0); }

  2. 2

    Nagyon szép bejegyzés – nagyon jól sikerült – csak a lat-longot tartó asztal nevét kellett megváltoztatnom. Elég gyorsan működik. Szép oldal is – nemrég adtam hozzá a del.icio.us fiókomhoz, és rendszeresen vissza fogok nézni.

  3. 4
  4. 5
  5. 8

    Azt hiszem, az SQL-nek szüksége van egy birtoklási utasításra.
    a WHERE távolság <= $távolság helyett, amire szüksége lehet
    használja a HAVING distance <= $távolságot

    különben köszönöm, hogy egy csomó időt és energiát megspóroltál nekem.

  6. 10
  7. 11
  8. 12

    Nagyon köszönöm, hogy megosztottad ezt a kódot. Rengeteg fejlesztési időt spóroltam meg vele. Köszönet továbbá olvasóinak, hogy rámutattak, hogy a HAVING utasítás szükséges a MySQL 5.x-hez. Nagyon hasznos.

  9. 14
  10. 15

    Helló,

    Másik kérdés. Létezik az alábbihoz hasonló képlet az NMEA karakterláncokhoz?

    1342.7500,N,10052.2287,E

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

    Köszönöm,
    Harry

  11. 16

    Azt is tapasztaltam, hogy a WHERE nekem nem működött. Lecseréltem HAVING-re és minden tökéletesen működik. Először nem olvastam el a megjegyzéseket, és átírtam egy beágyazott kiválasztással. Mindkettő jól fog működni.

  12. 17
  13. 18

    Hihetetlenül segítőkész, köszönöm szépen! Az új „HAVING”-el volt némi gondom, nem pedig „HOL”, de miután elolvastam az itteni kommenteket (kb. fél óra csalódott fogcsikorgatás után =P), szépen beindult. Köszönöm ^_^

  14. 19
  15. 20

    Ne feledje, hogy egy ilyen kiválasztási utasítás nagyon számításigényes, ezért lassú. Ha sok ilyen lekérdezés van, az elég gyorsan megzavarhatja a dolgokat.

    Sokkal kevésbé intenzív megközelítés az első (nyers) kiválasztás futtatása egy kiszámított távolsággal meghatározott SQUARE terület használatával, azaz „select * from tablename, ahol a szélesség szélesség 1 és szélesség között, hosszúság pedig lon2 és lon1 között van”. lat2 = célszélesség – szélességi fok, lat1 = célszélesség + szélességi fok, hasonló a lon-hoz. latdiff ~= távolság / 2 (km-re), vagy távolság/111 mérföldre, mivel 69 szélességi fok ~ 1 km (kis eltérés, mivel a föld kissé ovális, de elegendő erre a célra). londiff = távolság / (abs(cos(deg111rad(szélesség))*2)) — vagy 111 mérföldre (valójában vehet egy kicsit nagyobb négyzetet is, hogy figyelembe vegye az eltéréseket). Ezután vegye ennek eredményét, és táplálja be a radiális kiválasztóba. Csak ne felejtse el figyelembe venni a határon kívüli koordinátákat – azaz az elfogadható hosszúsági tartomány -69 és +180, az elfogadható szélesség pedig -180 és +90 között van – arra az esetre, ha a latdiff vagy londiff ezen a tartományon kívül esik. . Megjegyzendő, hogy a legtöbb esetben ez nem alkalmazható, mivel csak a Csendes-óceánon pólustól pólusig húzódó vonalon keresztül végzett számításokat érinti, bár metszi a Chukotka egy részét és Alaszka egy részét.

    Ezzel jelentősen csökkentjük azon pontok számát, amelyek alapján Ön ezt a számítást elvégzi. Ha az adatbázisban egymillió globális pont van nagyjából egyenletesen elosztva, és 100 km-en belül szeretne keresni, akkor az első (gyors) keresése 10000 négyzetkilométeres területre vonatkozik, és valószínűleg körülbelül 20 eredményt ad (egyenletes eloszlás alapján). körülbelül 500 millió négyzetkilométer), ami azt jelenti, hogy a komplex távolságszámítást ehhez a lekérdezéshez millió helyett 20-szor kell lefuttatni.

    • 21

      Kisebb hiba a példában… ez 50 km-en belülre vonatkozik (nem 100), mivel a … négyzetünk „sugarát” nézzük.

      • 22

        Fantasztikus tanács! Valójában egy fejlesztővel dolgoztam, aki írt egy függvényt, amely kihúzta a belső négyzetet, majd egy rekurzív függvényt, amely "négyzeteket" készített a kerület körül, hogy belefoglalja és kizárja a fennmaradó pontokat. Az eredmény hihetetlenül gyors volt – több millió pontot tudott értékelni mikroszekundumban.

        A fenti megközelítésem határozottan „durva”, de alkalmas. Köszönöm mégegyszer!

        • 23

          Doug,

          Próbáltam mysql-t és php-t használni annak kiértékelésére, hogy egy lat hosszú pont egy poligonon belül van-e. Tudja, hogy a fejlesztő barátja közzétett-e példákat a feladat végrehajtására? Vagy tudsz valami jó példát. Előre is köszönöm.

  16. 24

    Üdv mindenkinek, ez az én teszt SQL utasításom:

    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

    és a Mysql azt mondja, hogy a távolság nem létezik oszlopként, használhatom a sorrendet, meg tudom csinálni WHERE nélkül, és működik, de nem vele…

    • 25
  17. 26

    Ez nagyszerű, de olyan, mint a madarak repülnek. Jó lenne, ha megpróbálnánk valahogyan beépíteni a google maps API-t ebbe (talán utakon stb.) Csak hogy ötletet adjunk egy másik közlekedési módról. Még nem készítettem egy szimulált lágyító függvényt PHP-ben, amely hatékony megoldást tudna kínálni az utazó eladó problémájára. De úgy gondolom, hogy a kód egy részét újra fel tudom használni ehhez.

  18. 27
  19. 28

    Jó cikk! Sok cikket találtam, amelyek leírják, hogyan kell kiszámítani a két pont közötti távolságot, de nagyon az SQL-kódrészletet kerestem.

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

    2 nap kutatás, hogy végre megtaláljam ezt az oldalt, ami megoldja a problémámat. Úgy tűnik, jobb, ha kidobom a WolframAlpha-mat, és felfrissítem a matematikámat. A WHERE-ről HAVING-re való váltás eredményeként a szkriptem működőképes. KÖSZÖNÖM

  25. 37
    • 38

      Köszi Georgi. Folyamatosan azt kaptam, hogy a „távolság” oszlop nem található. Miután megváltoztattam a WHERE-t HAVING-re, úgy működött, mint egy varázslat!

  26. 39

    Bárcsak ez lenne az első oldal, amit erről találtam. Sok különböző parancs kipróbálása után ez volt az egyetlen, amely megfelelően működött, és minimális változtatásokkal, hogy illeszkedjen a saját adatbázisomhoz.
    Nagyon köszönöm!

  27. 40

    Bárcsak ez lenne az első oldal, amit erről találtam. Sok különböző parancs kipróbálása után ez volt az egyetlen, amely megfelelően működött, és minimális változtatásokkal, hogy illeszkedjen a saját adatbázisomhoz.
    Nagyon köszönöm!

  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

    köszönöm, hogy közzétetted ezt a hasznos cikket,  
    de valamiért szeretném megkérdezni
    hogyan lehet lekérni a távolságot a mysql db-on belüli és a felhasználó által a php-ba beszúrt koordinák között?
    érthetőbben írd le:
    1.usernek be kell illesztenie az [id]-et a megadott adatok kiválasztásához a db-ból és magának a felhasználónak a koordinátáiból
    2. a php fájl megkapja a céladatokat (koordákat) az [id] segítségével, majd kiszámítja a távolságot a felhasználó és a célpont között

    vagy egyszerűen csak távolodhat el az alábbi kódtól?

    $qry = "SELECT *,(((acos(sin((.$szélesség."*pi()/180)) * sin((`Szélesség`*pi()/180))+cos((". $szélesség.”*pi()/180)) * cos((`Szélesség`*pi()/180)) * cos(((.$hosszúság.”- `Hosszúság`)*pi()/180) )))*180/pi())*60*1.1515*1.609344) mint távolság FROM `MyTable` WHERE távolság >= ".$távolság." >>>>ki tudom innen "kivenni" a távolságot?
    köszönöm mégegyszer,
    Timmy S

  41. 60

    rendben, minden, amit próbáltam, nem működik. Úgy értem, amim van, az működik, de a távolságok messze vannak.

    Valaki esetleg látja, hogy mi a baj ezzel a kóddal?

    if(isset($_POST['elküldve'])){ $z = $_POST['irányítószám']; $r = $_POST['sugár']; echo “Eredmények a következőre: “.$z; $sql = mysql_query("SELECT DISTINCT m.ipcode, m.MktName,m.LocAddSt,m.LocAddCity,m.LocAddState,m.x1,m.y1,m.verified,z1.lat,z2.lon,z1. város,z1.állam FROM mrk m, irányítószám z1, irányítószám z2 WHERE m.irányítószám = z1.irányítószám ÉS z2.irányítószám = $z ÉS (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'].""; $store = $sor['LocAddSt'].””; $store .= $row['LocAddCity'].”, ".$row['LocAddState']." “.$row['irányítószám']; $szélesség1 = $sor['szélesség']; $hosszúság1 = $sor['hossz']; $szélesség2 = $sor['y1']; $hosszúság2 = $sor['x1']; $város = $sor['város']; $állapot = $sor['állapot']; $dis = getnew($szélesség1, $hosszúság1, $szélesség2, $hosszúság2, $egység = 'Mi'); // $dis = távolság($lat1, $lon1, $lat2, $lon2); $ellenőrzött = $sor['ellenőrzött']; if($verified == '1'){ echo ""; echo „”.$store.””; echo $dis . " mérföldekkel odébb"; visszhang „”; } else { echo „”.$store.””; echo $dis . " mérföldekkel odébb"; visszhang „”; } }}

    függvényeim.php kód
    függvény getnew($szélesség1, $hosszúság1, $szélesség2, $hosszúság2, $egység = 'Mi') { $theta = $hosszúság1 – $hosszúság2; $távolság = (sin(deg2rad($szélesség1)) * sin(deg2rad($szélesség2))) + (cos(deg2rad($szélesség1)) * cos(deg2rad($szélesség2)) * cos(deg2rad($theta)) ); $távolság = acos($távolság); $távolság = rad2deg($távolság); $távolság = $távolság * 60 * 1.1515; switch($egység) { case 'Mi': break; eset 'Km' : $távolság = $távolság * 1.609344; } return (round($távolság,2)); }

    Előre is köszönöm

  42. 61
  43. 62

    Szia Douglas, remek cikk. Nagyon érdekesnek találtam a földrajzi fogalmak és a kód magyarázatát. Az egyetlen javaslatom az lenne, hogy szóközzel és behúzással helyezze el a kódot a megjelenítéshez (mint például a Stackoverflow). Megértem, hogy helyet szeretne spórolni, de a hagyományos kódközök/behúzások sokkal könnyebbé tennék nekem, mint programozónak az olvasást és a boncolgatást. Mindegy, ez apróság. Folytasd a nagyszerű munkát.

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

    gyorsabbnak tűnik (mysql 5.9), ha kétszer annyi képletet használunk a select-ben, és ahol:
    $formula = “(((acos(sin((.$szélesség.”*pi()/180)) * sin((`Szélesség`*pi()/180))+cos((.$szélesség. ”*pi()/180)) * cos((`Szélesség`*pi()/180)) * cos(((.$hosszúság.”- `Hosszúság`)*pi()/180)))) *180/pi())*60*1.1515*1.609344)”;
    $sql = 'SELECT *, '.$formula.' mint távolság FROM tábla WHERE '..$formula.' <= '.$távolság;

  51. 71
  52. 72

    Nagyon köszönöm, hogy megírtad ezt a cikket, nagyon hasznos.
    A PHP-t eleinte egy egyszerű szkriptplatformként hozták létre, amelyet „Személyes kezdőlapnak” hívtak. Napjainkban a PHP (a Hypertext Preprocessor rövidítése) a Microsoft Active Server Pages (ASP) technológiájának alternatívája.

    A PHP egy nyílt forráskódú szerveroldali nyelv, amelyet dinamikus weboldalak létrehozására használnak. HTML-be ágyazható. A PHP-t általában MySQL adatbázissal együtt használják Linux/UNIX webszervereken. Valószínűleg ez a legnépszerűbb szkriptnyelv.

  53. 73

    Azt tapasztaltam, hogy a fenti megoldás nem működik megfelelően.
    Át kell váltanom erre:

    $qqq = "SELECT *,(((acos(sin((.$szélesség."*pi()/180)) * sin((`latt`*pi()/180))+cos((" . $szélesség . “*pi()/180)) * cos((`latt`*pi()/180)) * cos(((” . $hosszúság . “- `hosszúság`)*pi()/180) )))*180/pi())*60*1.1515) a "regisztertől" való távolságként;

  54. 75
  55. 76

    Sziasztok, nagyon szükségem lenne a segítségedre ebben.

    Kértem a webszerveremtől http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $szélesség
    -2.23389 = $hosszúság
    és 20 = az a távolság, amelyet le akarok venni

    A képlet használatával azonban lekéri a adatbázisom összes sorát

    $results = DB::select( DB::raw("SELECT *, (((acos(sin(().$szélesség."*pi())/180)) * sin((lat*pi()/180 ))+cos((.$szélesség.”*pi()/180)) * cos((szélesség*pi()/180)) * cos(((.$hosszúság.”- lng)*pi( )/180))))*180/pi())*60*1.1515*1.609344) távolságként a jelölőktől HAVING distance >= “.$távolság ));

    [{"id":1,"name":"Frankie Johnnie & Luigo Too","cím":"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”,”cím”:”790 Castro St, Mountain View, CA”,”lat”:37.387138366699,”lng”: -122.08323669434,”távolság”:16079.175940152},{“azonosító”:3,”név”:”Kapp's Pizza Bar & Grill”,”cím”:”191 Castro St, Mountain View, CA”,”lat”:37.393886566162, "lng":-122.07891845703,"távolság":16078.381373826},{"id":4,"name":"Round Table Pizza: Mountain View","cím":"570 N Shoreline Blvd, Mountain View, CA", ”lat”:37.402652740479,”lng”:-122.07935333252,”távolság”:16077.420540582},{„id”:5,”name”:”Tony & Alba's Pizza & Pasta”,”cím”:”619 Mountaincuela Nézet, CA”,”lat”:37.394012451172,”lng”:-122.09552764893,”távolság”:16078.563225154},{“id”:6,”name”:”Oregánó fatüzelésű pizza”,”cím”:”4546 El Camino Real, Los Altos, CA”,”lat”:37.401725769043,”lng”:-122.11464691162,”távolság”:16077.937560795},{“ id":7"name":"Bárok és grillek","cím":"24 Whiteley Street, Manchester","lat":53.485118865967,"lng":-2.1828699111938,"távolság":8038.7620112314}]

    Csak a 20 mérföldes sorokat szeretném lekérni, de az összes sort hozza. Kérem, mit csinálok rosszul

  56. 77

    Hasonló lekérdezést keresek, de egy kicsit feljebb léptem – röviden ez az, hogy az összes koordinátát az egyes koordinátáktól 2 mérföldön belülre csoportosítom, majd megszámolom, hány koordináta van az egyes csoportokban, és csak egy olyan csoportot írok ki, amelyiknek a legtöbb koordinátája van – még akkor is, ha egynél több csoportja van a legtöbb koordinátával rendelkező csoportok között – egyszerűen adja ki a véletlenszerű csoportot az azonos számú csoportból –

Mit gondolsz?

Ez az oldal Akismet-et használ a levélszemét csökkentése érdekében. Ismerje meg, hogyan dolgozik a megjegyzésed.