CRM i plataformes de dadesAnàlisi i provesEines de màrqueting

Calculeu o consulteu una gran distància de cercle entre punts de latitud i longitud mitjançant la fórmula Havesine (exemples PHP, JavaScript, Java, Python, MySQL, MSSQL)

Aquest mes he estat programant una mica en PHP i MySQL respecte a GIS. Mirant per la xarxa, em va costar trobar-ne alguns Càlculs geogràfics per trobar la distància entre dues ubicacions, així que volia compartir-les aquí.

Mapa de vol Europa amb gran distància de cercle

La forma senzilla de calcular la distància entre dos punts és utilitzar la fórmula pitagòrica per calcular la hipotenusa d’un triangle (A² + B² = C²). Això es coneix com el Distància euclidiana.

Aquest és un començament interessant, però no s'aplica a la geografia, ja que la distància entre les línies de latitud i longitud no són distàncies iguals entre si. A mesura que t'acostes a l'equador, les línies de latitud s'allunyen més. Si utilitzeu una equació de triangulació senzilla, pot mesurar la distància amb precisió en una ubicació i incorrecta en l'altra, a causa de la curvatura de la Terra.

Distància Gran Cercle

Les rutes recorregudes llargues distàncies al voltant de la Terra es coneixen com la Distància del Gran Cercle. És a dir... la distància més curta entre dos punts d'una esfera difereix dels punts d'un mapa pla. Combineu-ho amb el fet que les línies de latitud i longitud no són equidistants... i teniu un càlcul difícil.

Aquí teniu una fantàstica explicació en vídeo de com funcionen els grans cercles.

La Fórmula Haversine

La distància utilitzant la curvatura de la Terra s'incorpora a la fórmula Havesine, que utilitza la trigonometria per permetre la curvatura de la Terra. Quan trobeu la distància entre 2 llocs de la terra (en línia recta), una línia recta és en realitat un arc.

Això és aplicable al vol aeri. Alguna vegada has mirat el mapa real dels vols i has notat que estan arquejats? Això és perquè volar en un arc entre dos punts és més curt que directament a la ubicació.

PHP: Calculeu la distància entre 2 punts de latitud i longitud

Aquí teniu la fórmula PHP per calcular la distància entre dos punts (juntament amb la conversió de milla en quilòmetre) arrodonida a dos decimals.

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

Les variables són:

  • $Latitude1 – una variable per a la latitud de la vostra primera ubicació.
  • $Longitud1 – una variable per a la longitud de la vostra primera ubicació
  • $Latitude2 – una variable per a la latitud de la vostra segona ubicació.
  • $Longitud2 – una variable per a la longitud de la vostra segona ubicació.
  • $unitat - el ser per defecte milles. Això es pot actualitzar o passar com a quilòmetres.

Java: calcula la distància entre 2 punts de latitud i longitud

public static double getDistanceBetweenPointsNew(double latitude1, double longitude1, double latitude2, double longitude2, String unit) {
    double theta = longitude1 - longitude2;
    double distance = 60 * 1.1515 * (180/Math.PI) * Math.acos(
        Math.sin(latitude1 * (Math.PI/180)) * Math.sin(latitude2 * (Math.PI/180)) + 
        Math.cos(latitude1 * (Math.PI/180)) * Math.cos(latitude2 * (Math.PI/180)) * Math.cos(theta * (Math.PI/180))
    );
    if (unit.equals("miles")) {
        return Math.round(distance, 2);
    } else if (unit.equals("kilometers")) {
        return Math.round(distance * 1.609344, 2);
    } else {
        return 0;
    }
}

Les variables són:

  • latitud 1 – una variable per a la latitud de la vostra primera ubicació.
  • longitud 1 – una variable per a la longitud de la vostra primera ubicació
  • latitud 2 – una variable per a la latitud de la vostra segona ubicació.
  • longitud 2 – una variable per a la longitud de la vostra segona ubicació.
  • unitat - el ser per defecte milles. Això es pot actualitzar o passar com a quilòmetres.

Javascript: calcula la distància entre 2 punts de latitud i longitud

function getDistanceBetweenPoints(latitude1, longitude1, latitude2, longitude2, unit = 'miles') {
    let theta = longitude1 - longitude2;
    let distance = 60 * 1.1515 * (180/Math.PI) * Math.acos(
        Math.sin(latitude1 * (Math.PI/180)) * Math.sin(latitude2 * (Math.PI/180)) + 
        Math.cos(latitude1 * (Math.PI/180)) * Math.cos(latitude2 * (Math.PI/180)) * Math.cos(theta * (Math.PI/180))
    );
    if (unit == 'miles') {
        return Math.round(distance, 2);
    } else if (unit == 'kilometers') {
        return Math.round(distance * 1.609344, 2);
    }
}

Les variables són:

  • latitud 1 – una variable per a la latitud de la vostra primera ubicació.
  • longitud 1 – una variable per a la longitud de la vostra primera ubicació
  • latitud 2 – una variable per a la latitud de la vostra segona ubicació.
  • longitud 2 – una variable per a la longitud de la vostra segona ubicació.
  • unitat - el ser per defecte milles. Això es pot actualitzar o passar com a quilòmetres.

Python: calcula la distància entre 2 punts de latitud i longitud

De totes maneres, aquí teniu la fórmula de Python per calcular la distància entre dos punts (juntament amb la conversió de milla a quilòmetre) arrodonida a dos decimals. Crèdit al meu fill, Bill Karr, que és un científic de dades OpenINSIGHTS, pel codi.

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)

Les variables són:

  • latitud 1 – una variable per a la vostra primera ubicació latitud.
  • longitud 1 – una variable per a la vostra primera ubicació longitud
  • latitud 2 – una variable per a la vostra segona ubicació latitud.
  • longitud 2 – una variable per a la vostra segona ubicació longitud.
  • unitat - el ser per defecte milles. Això es pot actualitzar o passar com a quilòmetres.

MySQL: recuperant tots els registres dins d'un rang calculant la distància en milles amb latitud i longitud

També és possible utilitzar SQL per calcular tots els registres dins d'una distància específica. En aquest exemple, vaig a consultar MyTable a MySQL per trobar tots els registres que siguin menors o iguals a la variable $distancia (en milles) a la meva ubicació a $latitud i $longitud:

La consulta per recuperar tots els registres d'un determinat document distància calculant la distància en milles entre dos punts de latitud i longitud són:

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

Haureu de personalitzar això:

  • $ longitud - Aquesta és una variable PHP on estic passant la longitud del punt.
  • $ latitud - Aquesta és una variable PHP on estic passant la longitud del punt.
  • $ distància - aquesta és la distància a la qual voldríeu trobar tots els registres menys o iguals.
  • taula - aquesta és la taula ... voldreu substituir-la pel nom de la vostra taula.
  • latitud - aquest és el camp de la vostra latitud.
  • longitud - aquest és el camp de la vostra longitud.

MySQL: recuperant tots els registres dins d'un rang calculant la distància en quilòmetres utilitzant latitud i longitud

I aquí teniu la consulta SQL que utilitza quilòmetres a 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."

Haureu de personalitzar això:

  • $ longitud - Aquesta és una variable PHP on estic passant la longitud del punt.
  • $ latitud - Aquesta és una variable PHP on estic passant la longitud del punt.
  • $ distància - aquesta és la distància a la qual voldríeu trobar tots els registres menys o iguals.
  • taula - aquesta és la taula ... voldreu substituir-la pel nom de la vostra taula.
  • latitud - aquest és el camp de la vostra latitud.
  • longitud - aquest és el camp de la vostra longitud.

He utilitzat aquest codi en una plataforma de mapes empresarials que hem utilitzat per a una botiga minorista amb més de 1,000 ubicacions a tota Amèrica del Nord i ha funcionat molt bé.

Distància geogràfica de Microsoft SQL Server: STDistance

Si utilitzeu Microsoft SQL Server, ofereixen la seva pròpia funció, STDistance per calcular la distància entre dos punts mitjançant el tipus de dades 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);  

Punta de barret a Manash Sahoo, vicepresident i arquitecte de Highbridge.

Douglas Karr

Douglas Karr és el fundador del Martech Zone i un reconegut expert en transformació digital. Douglas ha ajudat a iniciar diverses startups d'èxit de MarTech, ha ajudat en la diligència deguda de més de 5 mil milions de dòlars en adquisicions i inversions de Martech i continua llançant les seves pròpies plataformes i serveis. És cofundador de Highbridge, una consultora de transformació digital. Douglas també és autor publicat d'una guia de Dummie i d'un llibre sobre lideratge empresarial.

Articles Relacionats

78 Comentaris

  1. Moltes gràcies per compartir. Aquesta va ser una tasca fàcil de copiar i enganxar i funciona molt bé. M'has estalviat molt de temps.
    Per a qualsevol persona que porti a C:
    double deg2rad (doble grau) { retorn deg* (3.14159265358979323846/180.0); }

  2. Una publicació molt bonica - va funcionar molt bé - només vaig haver de canviar el nom de la taula que sostenia el lat-long. Funciona bastant ràpid per... Tinc un nombre raonablement petit de lat-longs (< 400), però crec que això s'escalaria bé. Un lloc agradable també: l'acabo d'afegir al meu compte del.icio.us i tornaré a comprovar-ho regularment.

  3. Crec que el vostre SQL necessita una declaració havent.
    en lloc de WHERE distància <= $distància que potser necessiteu
    utilitzeu HAVING distance <= $distance

    en cas contrari gràcies per estalviar-me un munt de temps i energia.

  4. Moltes gràcies per compartir aquest codi. Em va estalviar molt temps de desenvolupament. A més, gràcies als vostres lectors per assenyalar que una instrucció HAVING és necessària per a MySQL 5.x. Molt util.

  5. També vaig trobar que WHERE no em funcionava. Ho hem canviat a HAVING i tot funciona perfectament. Al principi no vaig llegir els comentaris i els vaig reescriure amb una selecció imbricada. Tots dos funcionaran bé.

  6. Increïblement útil, moltes gràcies! Estava tenint alguns problemes amb el nou "TENIR", en lloc de "ON", però un cop vaig llegir els comentaris aquí (després d'aproximadament mitja hora d'esquerre les dents de frustració =P), ho vaig fer funcionar bé. Gràcies ^_^

  7. Tingueu en compte que una declaració seleccionada com aquesta serà molt computacionalment intensa i, per tant, lenta. Si teniu moltes d'aquestes consultes, les coses poden empantanar-se amb força rapidesa.

    Un enfocament molt menys intens és executar una primera selecció (crua) utilitzant una àrea QUADRADA definida per una distància calculada, és a dir, "seleccionar * del nom de la taula on la latitud entre lat1 i lat2 i la longitud entre lon1 i lon2". lat1 = targetlatitude – latdiff, lat2 = targetlatitude + latdiff, semblant amb lon. latdiff ~= distància / 111 (per km), o distància / 69 per milles, ja que 1 grau de latitud és ~ 111 km (lleu variació ja que la terra és lleugerament ovalada, però suficient per a aquest propòsit). londiff = distància / (abs (cos (deg2rad (latitud)) * 111)) — o 69 per milles (en realitat podeu agafar un quadrat una mica més gran per tenir en compte les variacions). A continuació, agafeu el resultat i introduïu-lo a la selecció radial. No oblideu tenir en compte les coordenades fora dels límits, és a dir, el rang de longitud acceptable és de -180 a +180 i el rang de latitud acceptable és de -90 a +90, en cas que el vostre latdiff o londiff estigui fora d'aquest rang. . Tingueu en compte que en la majoria dels casos això pot no ser aplicable, ja que només afecta els càlculs sobre una línia a través de l'oceà Pacífic de pol a pol, tot i que talla part de Chukotka i part d'Alaska.

    El que aconseguim amb això és una reducció significativa del nombre de punts contra els quals feu aquest càlcul. Si teniu un milió de punts globals a la base de dades distribuïts aproximadament de manera uniforme i voleu cercar en un termini de 100 km, la vostra primera cerca (ràpida) és d'una àrea de 10000 km quadrats i probablement donarà uns 20 resultats (basats en una distribució uniforme en un superfície d'uns 500 milions de km²), el que significa que s'executa el complex càlcul de la distància 20 vegades per a aquesta consulta en lloc d'un milió de vegades.

      1. Un consell fantàstic! De fet, vaig treballar amb un desenvolupador que va escriure una funció que estirava el quadrat interior i després una funció recursiva que feia "quadrats" al voltant del perímetre per incloure i excloure els punts restants. El resultat va ser un resultat increïblement ràpid: podia avaluar milions de punts en microsegons.

        El meu enfocament anterior és definitivament "cru", però capaç. Gràcies de nou!

        1. Doug,

          He estat intentant utilitzar mysql i php per avaluar si un punt llarg lat es troba dins d'un polígon. Saps si el teu amic desenvolupador va publicar algun exemple sobre com realitzar aquesta tasca. O coneixeu algun bon exemple. Gràcies per endavant.

  8. Hola a tots, aquesta és la meva declaració SQL de prova:

    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 em diu que la distància, no existeix com a columna, puc utilitzar l'ordre per, ho puc fer sense ON, i funciona, però no amb ella...

  9. Això és fantàstic, però és igual que els ocells volen. Seria fantàstic provar d'incorporar l'API de Google Maps a això d'alguna manera (potser utilitzant carreteres, etc.) Només per donar-nos una idea amb una forma de transport diferent. Encara he de fer una funció de recuit simulada en PHP que pugui oferir una solució eficient al problema del venedor ambulant. Però crec que potser podré reutilitzar part del vostre codi per fer-ho.

  10. 2 dies d'investigació per trobar finalment aquesta pàgina que resol el meu problema. Sembla que és millor que tregui el meu WolframAlpha i repassi les meves matemàtiques. El canvi de ON a HAVING té el meu script en ordre de funcionament. GRÀCIES

  11. M'agradaria que aquesta fos la primera pàgina que trobés sobre això. Després d'haver provat moltes ordres diferents, aquesta va ser l'única que va funcionar correctament i amb canvis mínims necessaris per adaptar-se a la meva pròpia base de dades.
    Moltes gràcies!

  12. M'agradaria que aquesta fos la primera pàgina que trobés sobre això. Després d'haver provat moltes ordres diferents, aquesta va ser l'única que va funcionar correctament i amb canvis mínims necessaris per adaptar-se a la meva pròpia base de dades.
    Moltes gràcies!

  13. gràcies per publicar aquest article útil,  
    però per alguna raó m'agradaria preguntar
    Com obtenir la distància entre les coordenades dins de mysql db i les coordenades inserides a php per l'usuari?
    per descriure amb més claredat:
    1.l'usuari ha d'inserir [id] per seleccionar les dades especificades de la base de dades i les coordenades del propi usuari
    2. El fitxer php obté les dades de destinació (coords) mitjançant [id] i després calcula la distància entre l'usuari i el punt de destinació

    o simplement podeu obtenir distància del codi següent?

    $qry = “SELECT *,(((acos(sin((“.$latitud.”*pi()/180)) * sin((`Latitud`*pi()/180))+cos((“. $latitud.”*pi()/180)) * cos((`Latitud`*pi()/180)) * cos(((“.$longitud.”- `Longitud`)*pi()/180) )))*180/pi())*60*1.1515*1.609344) com a distància FROM `MyTable` WHERE distància >= ".$distance". >>>>Puc "treure" la distància des d'aquí?
    gràcies de nou,
    Timmy S

  14. d'acord, tot el que he provat no funciona. Vull dir, el que tinc funciona, però les distàncies són molt allunyades.

    Algú podria veure què passa amb aquest codi?

    if(isset($_POST['enviat'])){ $z = $_POST['codi postal']; $r = $_POST['radi']; echo “Resultats per a “.$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 ON 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 ) ) ) o <= $e ") (mysql_error()); while($fila = mysql_fetch_array($sql)) { $store1 = $fila['MktName']."”; $store = $row['LocAddSt'].””; $store .= $row['LocAddCity'].”, “.$row['LocAddState']”. “.$fila['codi postal']; $latitud1 = $fila['lat']; $longitud1 = $fila['lon']; $latitud2 = $fila['y1']; $longitud2 = $fila['x1']; $ciutat = $fila['ciutat']; $estat = $fila['estat']; $dis = getnew($latitud1, $longitud1, $latitud2, $longitud2, $unitat = 'Mi'); // $dis = distància($lat1, $lon1, $lat2, $lon2); $verificat = $fila['verificat']; if($verificat == '1'){ echo “”; echo “”.$botiga.””; echo $dis . " molt lluny"; eco ""; } else { echo “”.$magatzem.””; echo $dis . " molt lluny"; eco ""; } }}

    el meu codi functions.php
    funció getnew($latitud1, $longitud1, $latitud2, $longitud2, $unitat = 'Mi') { $theta = $longitud1 – $longitud2; $distància = (sin(deg2rad($latitud1)) * sin(deg2rad($latitud2))) + (cos(deg2rad($latitud1)) * cos(deg2rad($latitud2)) * cos(deg2rad($theta)) ); $distància = acos($distància); $distància = rad2deg($distància); $distància = $distància * 60 * 1.1515; switch($unitat) { cas 'Mi': break; cas 'Km' : $distància = $distància * 1.609344; } retorn (rodona($distància,2)); }

    Gràcies per endavant

  15. Hola Douglas, gran article. He trobat molt interessant la teva explicació dels conceptes geogràfics i del codi. El meu únic suggeriment seria espaiar i sagnar el codi per mostrar-lo (com Stackoverflow, per exemple). Entenc que voleu estalviar espai, però l'espaiat / sagnat de codi convencional em faria molt més fàcil, com a programador, llegir i disseccionar. De totes maneres, això és poca cosa. Continua amb la gran feina.

  16. sembla més ràpid (mysql 5.9) utilitzar el doble de la fórmula a la selecció i on:
    $fórmula = “(((acos(sin((“.$latitud.”*pi()/180)) * sin((`Latitud`*pi()/180))+cos(((“.$latitud. ”*pi()/180)) * cos((`Latitud`*pi()/180)) * cos(((“.$longitud.”- `Longitud`)*pi()/180)))) *180/pi())*60*1.1515*1.609344)”;
    $sql = 'SELECT *, '.$formula.' com a distància de la taula WHERE '..$formula.' <= '.$distància;

  17. Moltes gràcies per escoltar aquest article. És molt útil.
    PHP es va crear al principi com una plataforma de scripts senzilla anomenada "Pàgina d'inici personal". Avui en dia, PHP (abreviatura de Hypertext Preprocessor) és una alternativa a la tecnologia Active Server Pages (ASP) de Microsoft.

    PHP és un llenguatge de codi obert del costat del servidor que s'utilitza per crear pàgines web dinàmiques. Es pot incrustar en HTML. PHP s'utilitza normalment juntament amb una base de dades MySQL en servidors web Linux/UNIX. És probablement el llenguatge de script més popular.

  18. Vaig trobar que la solució anterior no funcionava correctament.
    He de canviar a:

    $qqq = “SELECT *,(((acos(sin((“.$latitud.”*pi()/180)) * sin((`latt`*pi()/180))+cos((” . $latitud . “*pi()/180)) * cos((`latt`*pi()/180)) * cos(((” . $longitud . “- `longt`)*pi()/180) )))*180/pi())*60*1.1515) com a distància FROM `registre` “;

  19. Hola, si us plau, necessitaré la vostra ajuda en això.

    Vaig fer una sol·licitud d'obtenció al meu servidor web http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $latitud
    -2.23389 = $longitud
    i 20 = la distància que vull recuperar

    Tanmateix, utilitzant la vostra fórmula, recupera totes les files del meu DB

    $resultats = DB::select( DB::raw(“SELECT *, (((acos(sin((“.$latitude.”*pi()/180)) * sin((lat*pi()/180) ))+cos((“.$latitud.”*pi()/180)) * cos((lat*pi()/180)) * cos(((“.$longitud.”- lng)*pi( )/180))))*180/pi())*60*1.1515*1.609344) com a distància DES dels marcadors HAVING distance >= “.$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”,”address”:”619 Escuela Ave, Mountain View, CA”,”lat”:37.394012451172,”lng”:-122.09552764893,”distance”:16078.563225154},{“id”:6,”name”:”Oregano's Wood-Fired Pizza”,”address”:”4546” El Camino Real, Los Altos, CA”,”lat”:37.401725769043,”lng”:-122.11464691162,”distància”:16077.937560795},{“ id”:7,”name”:”Els bars i graelles”,”adreça”:”24 Whiteley Street, Manchester”,”lat”:53.485118865967,”lng”:-2.1828699111938,”distància”:8038.7620112314}]

    Vull recuperar només files amb 20 milles, però aporta totes les files. Si us plau, què estic fent malament

  20. Estic buscant una consulta similar, però he augmentat una mica: en resum, es tracta d'agrupar totes les coordenades a 2 milles de cada coordenada i després comptar quantes coordenades a cada grup i sortir només un grup que tingui més coordenades, fins i tot si tens més d'un grup entre els grups que tenen el major nombre de coordenades; simplement emet el grup aleatori dels grups amb el mateix nombre més gran;

Què et sembla?

Aquest lloc utilitza Akismet per reduir el correu no desitjat. Esbrineu com es processa el vostre comentari.