Аналитика и тестирањеCRM и платформи за податоциАлатки за маркетинг

Пресметајте или побарајте големо растојание на кругот помеѓу точките на географска ширина и должина користејќи ја формулата Haversine (PHP, JavaScript, Java, Python, MySQL, MSSQL примери)

Овој месец доста програмирав PHP MySQL, за ГИС. Додека ја истражував темата, тешко ми беше да најдам некои од нив Географски пресметки да го најдам растојанието помеѓу две локации, па сакав да ги споделам овде.

Мапа на летови Европа со голема далечина на кругови

Едноставен начин за пресметување на растојание помеѓу две точки е користење на Питагоровата формула за пресметување на хипотенузата на триаголник (A² + B² = C²). Ова е познато како Евклидовска оддалеченост.

Тоа е интересен почеток, но не се однесува на географијата бидејќи растојанието помеѓу линиите на географска ширина и должина се не еднакви растојанија. Како што се приближувате до екваторот, линиите на географска широчина се повеќе се одвојуваат. Ако користите едноставна равенка за триаголник, таа може точно да го мери растојанието на една локација, а погрешно на другото поради заобленоста на Земјата.

Големо растојание на кругот

Патеките поминати на долги растојанија околу Земјата се познати како растојание на Големиот круг. Тоа е… најкраткото растојание помеѓу две точки на сфера се разликува од точките на рамна карта. Комбинирајте го тоа со фактот дека линиите на географска ширина и должина не се еднакво оддалечени… и имате тешка пресметка.

Еве фантастично видео објаснување за тоа како функционираат Големите кругови.

Формулата Хаверсин

Растојанието користејќи ја закривеноста на Земјата е вградено во формулата Хаверсин, која користи тригонометрија за да овозможи закривеност на Земјата. Кога го наоѓате растојанието помеѓу 2 места на Земјата (како што лета врана), права линија е всушност лак.

Ова е применливо при воздушни летови - дали некогаш сте ја погледнале вистинската карта на летови и сте забележале дека се заоблени? Тоа е затоа што летањето во лак помеѓу две точки е пократко отколку директно до локацијата.

PHP: Пресметајте го растојанието помеѓу 2 точки на географска ширина и должина

Еве ја PHP формулата за пресметување на растојанието помеѓу две точки (заедно со конверзија Миле наспроти Километар) заокружена на две децимални места.

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

Променливите се:

  • $Latitude1 – променлива за географската ширина на вашата прва локација.
  • $ Географска должина1 – променлива за должината на вашата прва локација
  • $Latitude2 – променлива за географската ширина на вашата втора локација.
  • $ Географска должина2 – променлива за географската должина на вашата втора локација.
  • $ единица – стандардното битие милји. Ова може да се ажурира или пренесе како километри.

Јава: Пресметајте го растојанието помеѓу 2 точки на географска ширина и должина

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

Променливите се:

  • географска ширина 1 – променлива за географската ширина на вашата прва локација.
  • географска должина 1 – променлива за должината на вашата прва локација
  • географска ширина 2 – променлива за географската ширина на вашата втора локација.
  • географска должина 2 – променлива за географската должина на вашата втора локација.
  • единица – стандардното битие милји. Ова може да се ажурира или пренесе како километри.

Javascript: Пресметајте го растојанието помеѓу 2 точки на географска ширина и должина

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

Променливите се:

  • географска ширина 1 – променлива за географската ширина на вашата прва локација.
  • географска должина 1 – променлива за должината на вашата прва локација
  • географска ширина 2 – променлива за географската ширина на вашата втора локација.
  • географска должина 2 – променлива за географската должина на вашата втора локација.
  • единица – стандардното битие милји. Ова може да се ажурира или пренесе како километри.

Python: Пресметајте растојание помеѓу 2 точки на географска ширина и должина

Еве ја Python формулата за пресметување на растојанието помеѓу две точки (заедно со конверзија Миле наспроти Километар) заокружено на две децимални места. Заслуга за мојот син, Бил Кар, научник за податоци за OpenINSIGHTS, за кодот.

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)

Променливите се:

  • географска ширина 1 – променлива за вашата прва локација географска ширина.
  • географска должина 1 – променлива за вашата прва локација должина
  • географска ширина 2 – променлива за вашата втора локација географска ширина.
  • географска должина 2 – променлива за вашата втора локација должина.
  • единица – стандардното битие милји. Ова може да се ажурира или пренесе како километри.

MySQL: Враќање на сите записи во опсег со пресметување на растојание во милји користејќи географска ширина и должина

Користењето на типови на просторни податоци во MySQL е поефикасен и поудобен начин за работа со географски податоци, вклучително и пресметување на растојанија помеѓу точките. MySQL поддржува Типови на просторни податоци како што се POINT, LINESTRING, и POLYGON, заедно со просторните функции како ST_Distance.

Кога го користите ST_Distance функција во MySQL со географски податоци претставени како POINT координати, ја зема предвид искривувањето на површината на Земјата. Сферичниот модел користен од ST_Distance ја користи формулата Haversine. Ова приближување е погодно за повеќето практични цели, но може да внесе мали неточности за многу долги растојанија.

Еве како можете да пресметате растојанија помеѓу две точки користејќи Типови на просторни податоци:

  1. Направете табела со тип на просторни податоци: Прво, креирајте табела со a POINT колона за складирање на географски точки. На пример:
CREATE TABLE locations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    coordinates POINT
);

Вметнете ги вашите географски точки во оваа табела користејќи го POINT конструктор:

INSERT INTO locations (name, coordinates)
VALUES
    ('Point A', POINT(40.7128, -74.0060)), -- New York City
    ('Point B', POINT(34.0522, -118.2437)); -- Los Angeles
  1. Пресметајте го растојанието користејќи ST_Distance: Можете да го пресметате растојанието помеѓу две точки користејќи го ST_Distance функција. Еве пример за пребарување за пресметување на растојанието помеѓу две точки:
SELECT
    id1,
    id2,
    (ST_Distance(coordinates1, coordinates2) / 1609.344) AS distance_in_miles
FROM (
    SELECT
        l1.id AS id1,
        l2.id AS id2,
        l1.coordinates AS coordinates1,
        l2.coordinates AS coordinates2
    FROM
        locations l1,
        locations l2
    WHERE
        l1.id = 1 AND l2.id = 2
) AS distances;

Заменете 1 2 со ID на двете точки што сакате да го пресметате растојанието помеѓу.

  1. Резултат: Барањето ќе го врати растојанието помеѓу двете точки во милји.

Користење на типови на просторни податоци и на ST_Distance функцијата обезбедува поефикасен и попрецизен начин за работа со географски податоци во MySQL. Исто така, го поедноставува пресметувањето на растојанијата помеѓу точките, што го олеснува управувањето и барањето на вашите податоци.

MySQL: Враќање на сите записи во опсег со пресметување на растојание во километри користејќи географска ширина и географска должина

Стандардно ST_Distance го враќа растојанието во метри, така што едноставно треба да го ажурирате барањето за километри:

SELECT
    id1,
    id2,
    (ST_Distance(coordinates1, coordinates2) / 1000) AS distance_in_kilometers
FROM (
    SELECT
        l1.id AS id1,
        l2.id AS id2,
        l1.coordinates AS coordinates1,
        l2.coordinates AS coordinates2
    FROM
        locations l1,
        locations l2
    WHERE
        l1.id = 1 AND l2.id = 2
) AS distances;

Географско растојание на Microsoft SQL Server: STDDistance

Ако користите Microsoft SQL Server, тие нудат своја сопствена функција, STD растојание за пресметување на растојанието помеѓу две точки со помош на типот на податоци Географија.

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

Совет за капа до Манаш Саху, потпретседател и архитект на Highbridge.

Douglas Karr

Douglas Karr е основач на Martech Zone и признат експерт за дигитална трансформација. Даглас помогна во започнувањето на неколку успешни стартапи на MarTech, помогна во длабинската анализа на над 5 милијарди американски долари за аквизиции и инвестиции на Martech и продолжува да лансира свои платформи и услуги. Тој е ко-основач на Highbridge, консултантска фирма за дигитална трансформација. Даглас е исто така објавен автор на водич за Dummie и книга за бизнис лидерство.

поврзани написи

78 Коментари

  1. Ви благодариме многу за споделувањето. Ова беше лесна работа за копирање и залепување и одлично функционира. Ти ми заштеди многу време.
    FYI за секој што пренесува во C:
    double deg2rad(double deg) { return deg*(3.14159265358979323846/180.0); }

  2. Многу убаво парче објава - работеше многу убаво - морав само да го сменам името на масата на која се наоѓа lat-long. Работи прилично брзо до.. Имам разумно мал број на lat-longs (< 400), но мислам дека ова би се размери убаво. Прекрасна страница исто така - штотуку ја додадов на мојата сметка на del.icio.us и редовно ќе проверувам.

    1. Мило ми е да помогнам, шини пријателе!

      Сега сум во потрага по „in Polygon“ PHP функција која ќе земе низа од секвенционирани координати на географска должина и ширина и ќе открие дали друга точка е во или надвор од полигонот.

  3. Ви благодариме многу што го споделивте овој код. Тоа ми заштеди многу време за развој. Исто така, благодарност до вашите читатели што посочија дека изјавата HAVING е неопходна за MySQL 5.x. Многу помага.

  4. Горенаведената формула ми заштедува многу време. Ти благодарам многу.
    Исто така, треба да се префрлам помеѓу форматот NMEA и Степени. Најдов формула на оваа URL на дното на страницата. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    Дали некој знае како да го потврди ова?

    Ви благодариме!
    Хари

  5. Неверојатно корисно, ви благодарам многу! Имав некои проблеми со новото „HAVING“, наместо „WHERE“, но штом ги прочитав коментарите овде (по околу половина час чкртање заби од фрустрација =P), сфатив дека функционира добро. Ви благодариме ^_^

  6. Имајте на ум дека избраната изјава како таа ќе биде многу пресметковна интензивна и затоа бавна. Ако имате многу од тие прашања, може многу брзо да ги заглави работите.

    Многу помалку интензивен пристап е да се изврши првиот (суров) избор со користење на КВАДРАТНА област дефинирана со пресметано растојание т.е. „избери * од името на табелата каде географската ширина помеѓу lat1 и lat2 и должината помеѓу lon1 и lon2“. lat1 = целна ширина – latdiff, lat2 = целна ширина + latdiff, слично со лон. latdiff ~= растојание / 111 (за km), или растојание/69 за милји бидејќи 1 степен на географска широчина е ~ 111 km (мала варијација бидејќи земјата е малку овална, но доволна за оваа намена). londiff = растојание / (abs(cos(deg2rad(географска ширина))*111)) - или 69 за милји (всушност можете да земете малку поголем квадрат за да ги земете предвид варијациите). Потоа земете го резултатот од тоа и внесете го во радијалниот избор. Само не заборавајте да ги земете предвид координатите надвор од границите - т.е. опсегот на прифатлива географска должина е -180 до +180 и опсегот на прифатлива географска ширина е -90 до +90 - во случај вашиот latdiff или londiff да тече надвор од овој опсег . Забележете дека во повеќето случаи ова можеби не е применливо бидејќи влијае само на пресметките преку линијата низ Тихиот океан од пол до пол, иако пресекува дел од чукотка и дел од Алјаска.

    Она што го постигнуваме со ова е значително намалување на бројот на поени според кои ја правите оваа пресметка. Ако имате милион глобални точки во базата распределени приближно рамномерно и сакате да пребарувате во рок од 100 km, тогаш вашето прво (брзо) пребарување е на површина од 10000 квадратни километри и веројатно ќе даде околу 20 резултати (врз основа на рамномерна распределба на површина од околу 500 милиони квадратни километри), што значи дека ја извршувате сложената пресметка на растојанието 20 пати за ова барање наместо милион пати.

      1. Фантастичен совет! Јас всушност работев со програмер кој напиша функција која го повлекува внатрешниот квадрат, а потоа рекурзивна функција која прави „квадрати“ околу периметарот за да ги вклучи и исклучи преостанатите точки. Резултатот беше неверојатно брз резултат - тој можеше да оцени милиони поени во микросекунди.

        Мојот пристап погоре е дефинитивно „груб“, но способен. Благодарам уште еднаш!

        1. Даг,

          Се обидував да користам mysql и php за да проценам дали долгата лат точка е во полигон. Дали знаете дали вашиот пријател програмер објави примери за тоа како да ја постигнете оваа задача. Или знаете некои добри примери. Благодарам однапред.

  7. Здраво на сите, ова е мојата тест SQL изјава:

    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

    и Mysql ми кажува дека растојанието, не постои како колона, можам да користам редослед според, можам да го направам тоа без WHERE, и работи, но не со него…

  8. Ова е одлично, но е исто како што летаат птиците. Би било одлично да се обидете да го вклучите API-то на google maps на ова некако (можеби користејќи патишта итн.) Само за да дадете идеја користејќи различна форма на транспорт. Сè уште треба да направам симулирана функција за жарење во PHP која би можела да понуди ефикасно решение за проблемот со патувачкиот продавач. Но, мислам дека можеби ќе можам повторно да користам дел од вашиот код за да го сторам тоа.

  9. 2 дена истражување за конечно да ја најдам оваа страница што ми го решава проблемот. Изгледа дека е подобро да го отфрлам мојот WolframAlpha и да се осврнам на мојата математика. Промената од WHERE во HAVING го има моето сценарио во работна состојба. ВИ БЛАГОДАРАМ

  10. Посакувам ова да беше првата страница што ја најдов на ова. Откако пробав многу различни команди, оваа беше единствената што функционираше правилно, и со минимални промени потребни за да се вклопи во мојата сопствена база на податоци.
    Фала многу!

  11. Посакувам ова да беше првата страница што ја најдов на ова. Откако пробав многу различни команди, оваа беше единствената што функционираше правилно, и со минимални промени потребни за да се вклопи во мојата сопствена база на податоци.
    Фала многу!

  12. благодариме што ја објавивте оваа корисна статија,  
    но поради некоја причина би сакал да прашам
    како да се добие растојанието помеѓу координите во mysql db и координите вметнати во php од корисникот?
    за појасно опишете:
    1.корисникот треба да вметне [id] за избирање на одредени податоци од db и координатите на самиот корисник
    2. php-датотеката ги добива целните податоци (коорди) користејќи [id] и потоа пресметајте го растојанието помеѓу корисникот и целната точка

    или едноставно може да се оддалечи од кодот подолу?

    $qry = „SELECT *,(((acos(sin((“.$latitude."*pi()/180)) * sin((`Latitude`*pi()/180))+cos((“. $широчина."*pi()/180)) * cos((`Широчина`*pi()/180)) * cos(((".$лонгитуда."- `Гоградина`)*pi()/180) )))*180/pi())*60*1.1515*1.609344) како растојание ОД „Моја табела“ WHERE растојание >= „.$distance“. >>>>можам ли да го „извадам“ растојанието од овде?
    благодарам уште еднаш,
    Тими С

  13. ок, се што пробав не работи. Мислам, тоа што го имам функционира, но далечините се далеку.

    Дали некој може да види што не е во ред со овој код?

    if(isset($_POST['поднесено'])){ $z = $_POST['поштенски код']; $r = $_POST['радиус']; ехо „Резултати за „.$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. град,z1.state FROM mrk m, zip z1, zip z2 WHERE m.zipcode = z1.zipcode И 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 ) $r) или die (mysql_error()); while($row = mysql_fetch_array($sql)) {$store1 = $row['MktName'].""; $store = $row['LocAddSt'].””; $store .= $row['LocAddCity'].", ".$row['LocAddState']." „.$row['zipcode']; $latitude1 = $ред['lat']; $longitude1 = $ред['лон']; $latitude2 = $ред['y1']; $longitude2 = $ред['x1']; $city = $ред['град']; $state = $ред['состојба']; $dis = getnew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi'); // $dis = растојание ($lat1, $lon1, $lat2, $lon2); $verified = $ред['потврдено']; if($verified == '1'){ ехо „“; ехо “”.$store.””; ехо $dis . „милја(и) подалеку“; ехо „“; } else { echo „“.$store.““; ехо $dis . „милја(и) подалеку“; ехо „“; } }}

    моите функции.php код
    функцијата getnew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { $theta = $longitude1 – $longitude2; $растојание = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)) ); $distance = acos($distance); $растојание = rad2deg($растојание); $distance = $distance * 60 * 1.1515; switch($unit) { case 'Mi': break; случај 'Km' : $distance = $distance * 1.609344; } враќање (круг ($растојание,2)); }

    Благодарам однапред

  14. Здраво Даглас, одлична статија. Навистина ми беше интересно твоето објаснување за географските поими и кодот. Мојот единствен предлог би бил да се стави празно место и да се вовлече кодот за прикажување (како Stackoverflow, на пример). Разбирам дека сакате да заштедите простор, но конвенционалното растојание / вовлекување на кодот многу би ми олеснило, како програмер, да читам и сецирам. Како и да е, тоа е мала работа. Продолжете со одличната работа.

    1. Благодарам! Малку го изменив постот... но равенките заземаат толку многу простор и се толку долги што не сум сигурен дека премногу помага.

  15. се чини побрзо (mysql 5.9) да се користи двапати формула при изборот и каде:
    $формула = „(((acos(sin((“.$ ширина.“*pi()/180)) * sin((`Широчина`*pi()/180))+cos((“.$ ширина. ”*pi()/180)) * cos((`Широчина`*pi()/180) *180/pi())*180*60*1.1515)”;
    $sql = 'SELECT *, '.$формула.' како растојание од табелата КАДЕ „..$формула.“ <= '.$distance;

  16. Ви благодариме многу за стрижењето на овој напис. многу е корисен.
    PHP најпрво беше создаден како едноставна платформа за скриптирање наречена „Лична почетна страница“. Во денешно време PHP (кратенката за Hypertext Preprocessor) е алтернатива на технологијата на Microsoft Active Server Pages (ASP) технологија.

    PHP е јазик со отворен код од страна на серверот кој се користи за креирање динамични веб-страници. Може да се вметне во HTML. PHP обично се користи заедно со базата на податоци MySQL на веб-серверите на Linux/UNIX. Тоа е веројатно најпопуларниот јазик за скриптирање.

  17. Сфатив дека решението погоре не работи правилно.
    Треба да се сменам на:

    $qqq = „SELECT *,(((acos(sin((“.$latitude.”*pi()/180)) * sin((`latt`*pi()/180))+cos((“ . $ географска ширина . „*pi()/180)) * cos((`latt`*pi()/180)) * cos(((“ . $longitude . „- `longt`)*pi()/180) )))*180/pi())*60*1.1515) како растојание ОД `регистар`“;

  18. Здраво, ве молам, навистина ќе ми треба вашата помош за ова.

    Направив барање за добивање до мојот веб-сервер
    53.47792 = $ ширина
    -2.23389 = $ должина
    и 20 = растојанието што сакам да го повлечам

    Како и да е, користејќи ја формулата, ги враќа сите редови во мојата db

    $results = DB::select( DB::raw(“SELECT *, ((acos(sin((“.$latitude.”pi()/180)) * sin((латpi()/180))+cos((„.$ ширина“.pi()/180)) * cos((латpi()/180)) * cos(((“.$лонгитуда.”- lng)пи ()/180))))180/pi ())601.1515*1.609344) како растојание ОД маркери HAVING растојание >= „.$distance ));

    [{“id”:1,”име”:”Frankie Johnnie & Luigo Too”,”адреса”:”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", "адреса": "790 Castro Street, Mountain View, CA","lat":37.387138366699,"lng": -122.08323669434,”distance”:16079.175940152},{“id”:3,”name”:”Kapp's Pizza Bar & Grill”,”адреса”:”191 Castro Street, Mountain View, CA”,”lat”:37.393886566162, “lng”:-122.07891845703,”distance”:16078.381373826},{“id”:4,”name”:”Пица на тркалезна маса: Mountain View”,”адреса”:”570 N Shoreline Blvd, Mountain View, CA”, "lat":37.402652740479,"lng":-122.07935333252,"distance":16077.420540582},{"id":5,"име":"Tony & Alba's Pizza & Pasta","адреса на планината A619": View, CA","lat":37.394012451172,"lng":-122.09552764893,"distance":16078.563225154},{"id":6,"name":"Oregano's Wood-reed Pizza"4546",37.401725769043" Ел Камино Реал, Лос Алтос, Калифорнија","лат":122.11464691162,"lng":-16077.937560795," distance":7},{" id”:24,”име”:”Бала и скари”,”адреса”:”Улица Вајтли 53.485118865967, Манчестер”,”лат”:2.1828699111938,”lng”:-8038.7620112314,”дистанца”:XNUMX]]

    Сакам да повратам само редови со 20 милји, но ги носи сите редови. Ве молам, што правам погрешно

  19. Барам слично барање, но малку се засилив - накратко, ова е да се групираат сите координати во рок од 2 милји од секоја координата, а потоа да се брои колку координати во секоја група и да се излезе само една група која има најмногу координати - дури и ако имате повеќе од една група меѓу групите кои имаат најголем број на координати - едноставно извадете ја случајната група од групите со ист најголем број -

Што мислите?

Оваа страница користи Akismet за намалување на спам. Научете како се обработува вашиот коментар.

Затвори

Откриен е блок за рекламирање

Martech Zone може да ви ја обезбеди оваа содржина без трошоци бидејќи ја монетизираме нашата страница преку приходи од реклами, врски со партнери и спонзорства. Ќе ни биде благодарно ако го отстраните вашиот блокатор на реклами додека ја гледате нашата страница.