PHP і SQL: вылічыце альбо запытайце вялікую адлегласць круга паміж пунктамі шыраты і даўгаты з дапамогай формулы Хаверсіна

Формула Haversine - вылічыце адлегласць вялікага круга з дапамогай PHP або MySQL

У гэтым месяцы я даволі шмат праграмаваў на PHP і MySQL адносна ГІС. Праглядаючы сетку, мне было цяжка знайсці некаторыя з Геаграфічныя разлікі каб знайсці адлегласць паміж двума месцамі, таму я хацеў падзяліцца імі тут.

Карта палётаў Еўропа з вялікай кругавой адлегласцю

Просты спосаб вылічэння адлегласці паміж двума кропкамі - выкарыстанне формулы Піфагора для вылічэння гіпатэнузы трохвугольніка (A² + B² = C²). Гэта вядома як Эўклідавая адлегласць.

Гэта цікавы пачатак, але гэта не тычыцца геаграфіі, бо адлегласць паміж лініямі шыраты і даўгаты складае не роўная адлегласць асобна. Калі вы набліжаецеся да экватара, шырацельныя лініі ўсё далей разыходзяцца. Калі вы выкарыстоўваеце нейкае простае ўраўненне трыангуляцыі, яно можа дакладна вымераць адлегласць у адным месцы і жудасна няправільна ў другім з-за крывізны Зямлі.

Вялікая дыстанцыя круга

Маршруты, якія перамяшчаюцца на вялікія адлегласці вакол Зямлі, вядомыя як Вялікая дыстанцыя круга. Гэта значыць ... самая кароткая адлегласць паміж двума кропкамі на сферы адрозніваецца ад кропак на плоскай карце. Сумясціце гэта з тым, што лініі шыраты і даўгаты не аднолькава аддаленыя ... і ў вас складаны разлік.

Вось фантастычнае відэа-тлумачэнне таго, як працуюць Вялікія кругі.

Формула Гаверсіна

Адлегласць з выкарыстаннем крывізны Зямлі ўключана ў Формула гаверзина, які выкарыстоўвае трыганаметрыю, каб улічваць крывізну зямлі. Калі вы знаходзіце адлегласць паміж двума месцамі на зямлі (у палёце вароны), прамая лінія - гэта сапраўды дуга.

Гэта датычыцца паветраных палётаў - вы калі-небудзь разглядалі сапраўдную карту палётаў і заўважалі, што яны выгінаюцца? Гэта таму, што ляцець у арцы паміж двума кропкамі карацей, чым непасрэдна да месца.

PHP: Разлічыце адлегласць паміж двума пунктамі шыраты і даўгаты

У любым выпадку, вось формула 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)); 
}

SQL: Атрыманне ўсіх запісаў у дыяпазоне шляхам вылічэння адлегласці ў мілі, выкарыстоўваючы шырату і даўгату

Таксама можна выкарыстоўваць SQL для разліку, каб знайсці ўсе запісы на пэўнай адлегласці. У гэтым прыкладзе я збіраюся запытаць MyTable у MySQL, каб знайсці ўсе запісы, меншыя або роўныя зменнай $ distance (у мілі) да майго месцазнаходжання на $ шыраце і $ даўгаце:

Запыт на атрыманне ўсіх запісаў у межах пэўнага адлегласць шляхам разліку адлегласці ў міль паміж двума кропкамі шыраты і даўгаты атрымліваюцца:

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

Вам трэба будзе наладзіць гэта:

  • $ даўгаты - гэта пераменная PHP, дзе я праходжу даўгату пункту.
  • Шырата $ - гэта пераменная PHP, дзе я праходжу даўгату пункту.
  • $ адлегласць - гэта адлегласць, на якую вы хацелі б знайсці ўсе запісы, меншыя альбо роўныя.
  • стол - гэта табліца ... вы захочаце замяніць яе на імя вашай табліцы.
  • шырата - гэта поле вашай шыраты.
  • даўгата - гэта поле вашай даўгаты.

SQL: Атрыманне ўсіх запісаў у дыяпазоне шляхам вылічэння адлегласці ў кіламетрах з выкарыстаннем шыраты і даўгаты

І вось запыт SQL з выкарыстаннем кіламетраў у 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."

Вам трэба будзе наладзіць гэта:

  • $ даўгаты - гэта пераменная PHP, дзе я праходжу даўгату пункту.
  • Шырата $ - гэта пераменная PHP, дзе я праходжу даўгату пункту.
  • $ адлегласць - гэта адлегласць, на якую вы хацелі б знайсці ўсе запісы, меншыя альбо роўныя.
  • стол - гэта табліца ... вы захочаце замяніць яе на імя вашай табліцы.
  • шырата - гэта поле вашай шыраты.
  • даўгата - гэта поле вашай даўгаты.

Я выкарыстаў гэты код у карпаратыўнай картаграфічнай платформе, якую мы выкарыстоўвалі для рознічнага крамы з больш чым 1,000 месцаў па Паўночнай Амерыцы, і ён выдатна працаваў.

77 Каментары

  1. 1

    Вялікі дзякуй, што падзяліліся. Гэта была простая копія і ўстаўка, і яна выдатна працуе. Вы зэканомілі мне шмат часу.
    FYI для тых, хто пераносіць на C:
    double deg2rad (double deg) {return deg * (3.14159265358979323846 / 180.0); }

  2. 2

    Вельмі добры фрагмент праводкі - атрымаўся вельмі прыемна - мне засталося толькі змяніць назву стала, на якім была даўжыня. Гэта працуе даволі хутка. У мяне дастаткова малая працягласць (<400), але я думаю, што гэта маштабна. Прыемны сайт таксама - я толькі што дадаў яго ў свой уліковы запіс del.icio.us і буду рэгулярна правяраць.

  3. 4
  4. 5
  5. 8

    я думаю, што ваш SQL мае патрэбу ў заяве.
    замест WHERE адлегласць <= $ адлегласць вам можа спатрэбіцца
    выкарыстоўваць HAVING адлегласць <= $ адлегласць

    у адваротным выпадку дзякуй, што зэканомілі кучу часу і энергіі.

  6. 10
  7. 11
  8. 12

    Вялікі дзякуй, што падзяліліся гэтым кодам. Гэта значна зэканоміла час на распрацоўцы. Акрамя таго, дзякуй вашым чытачам за тое, што яны заявілі, што HAVING неабходны для MySQL 5.x. Вельмі карысна.

  9. 14

    Прыведзеная вышэй формула эканоміць мне шмат часу. Вялікі табе дзякуй.
    Я таксама павінен пераключацца паміж фарматам NMEA і градусамі. Я знайшоў формулу па гэтым URL унізе старонкі. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    Хто-небудзь ведае, як гэта праверыць?

    Дзякуй!
    Гары

  10. 15
  11. 16

    Я таксама выявіў, што WHERE для мяне не працуе. Змяніў яго на HAVING, і ўсё працуе ідэальна. Спачатку я не чытаў каментарыі і перапісваў іх з дапамогай укладзенага выбару. Абодва будуць працаваць выдатна.

  12. 17
  13. 18

    Неверагодна карысна, вялікі дзякуй! У мяне былі некаторыя праблемы з новым "HAVING", а не "ДЗЕ", але як толькі я прачытаў тут каментарыі (прыблізна праз паўгадзіны расчаравання зубоў = P), я добра папрацаваў. Дзякуй ^ _ ^

  14. 19
  15. 20

    Майце на ўвазе, што абранае сцвярджэнне будзе вельмі вылічальным і, такім чынам, павольным. Калі ў вас шмат гэтых запытаў, гэта можа даволі хутка замяць.

    Значна менш інтэнсіўны падыход заключаецца ў запуску першага (сырога) выбару, выкарыстоўваючы плошчу SQUARE, вызначаную разліковай адлегласцю, г.зн. "select * from table name where latitude between lat1 and lat2 and longitude between lon1 and lon2". lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, падобна з lon. latdiff ~ = адлегласць / 111 (для км), альбо адлегласць / 69 за мілі, бо 1 ступень шыраты складае ~ 111 км (нязначнае змяненне, бо зямля злёгку авальная, але дастатковая для гэтай мэты). londiff = адлегласць / (abs (cos (deg2rad (шырата)) * 111)) - альбо 69 міль (вы можаце ўзяць крыху большы квадрат, каб улічыць варыяцыі). Затым вазьміце вынік гэтага і ўнясіце яго ў радыяльны адбор. Толькі не забудзьцеся ўлічыць па-за межамі каардынат - гэта значыць дыяпазон прымальнай даўгаты складае ад -180 да +180 і дыяпазон прымальнай шыраты ад -90 да +90 - у выпадку, калі ваш латдыф або лондаф выходзіць за межы гэтага дыяпазону . Звярніце ўвагу, што ў большасці выпадкаў гэта можа быць непрыдатна, паколькі ўплывае толькі на разлікі па лініі, якая праходзіць праз Ціхі акіян ад полюса да полюса, хаця перасякае частку Чукоткі і частку Аляскі.

    Мы дабіваемся гэтым значнага скарачэння колькасці балаў, па якіх вы робіце гэты разлік. Калі ў вас мільён глабальных кропак у базе дадзеных размеркаваны прыблізна раўнамерна і вы хочаце шукаць у межах 100 км, ваш першы (хуткі) пошук займае плошчу 10000 кв. Км і, верагодна, дасць каля 20 вынікаў (на аснове раўнамернага размеркавання па плошча паверхні каля 500 млн. км20), гэта азначае, што вы выконваеце складаны разлік адлегласці для гэтага запыту XNUMX разоў, а не мільён.

    • 21

      Нязначная памылка ў прыкладзе ... гэта можа быць у межах 50 км (а не 100), паколькі мы разглядаем "радыус" нашага ... квадрата.

      • 22

        Фантастычная парада! Я на самой справе працаваў з распрацоўшчыкам, які напісаў функцыю, якая выцягнула ўнутраны квадрат, а потым рэкурсіўную функцыю, якая зрабіла "квадраты" па перыметры, каб уключыць і выключыць астатнія кропкі. У выніку атрымаўся неверагодна хуткі вынік - ён мог ацаніць мільёны балаў за мікрасекунды.

        Мой падыход вышэй, безумоўна, "грубы", але здольны. Дзякуй зноў!

        • 23

          Дуг,

          Я спрабаваў выкарыстоўваць mysql і php, каб ацаніць, ці знаходзіцца доўгая кропка лата ў палігоне. Ці ведаеце вы, калі ваш сябар-распрацоўшчык апублікаваў прыклады таго, як выканаць гэтую задачу. Ці вы ведаеце якія-небудзь добрыя прыклады. Загадзя дзякую.

  16. 24

    Прывітанне ўсім, гэта мая тэставая заява 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 кажа мне, што адлегласць не існуе як слупок, я магу выкарыстоўваць парадак па, я магу зрабіць гэта без ДЗЕ, і гэта працуе, але не з ім ...

  17. 26

    Гэта выдатна, аднак так, як птушкі лётаюць. Было б выдатна паспрабаваць неяк уключыць у гэта API Google Maps (магчыма, з выкарыстаннем дарог і г.д.), каб даць ідэю, выкарыстоўваючы іншы від транспарту. Мне яшчэ трэба зрабіць мадэляваную функцыю адпалу ў PHP, якая магла б прапанаваць эфектыўнае рашэнне праблемы прадаўца. Але я думаю, што, магчыма, я змагу паўторна выкарыстаць для гэтага некаторыя вашы коды.

  18. 27
  19. 28

    Добры артыкул! Я знайшоў шмат артыкулаў, якія апісваюць, як вылічыць адлегласць паміж двума кропкамі, але я сапраўды шукаў фрагмент SQL.

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

    2 дні даследаванняў, каб нарэшце знайсці гэтую старонку, якая вырашае маю праблему. Падобна на тое, што мне лепш выбухнуць WolframAlpha і папрацаваць па матэматыцы. Пераход ад WHERE да HAVING мае сцэнар у працоўным стане. ДЗЯКУЙ

  25. 37
    • 38

      Дзякуй Георгі. Я працягваў атрымліваць слупок "адлегласць" не знойдзены. Пасля таго, як я змяняю WHERE на HAVING, гэта спрацавала як шарм!

  26. 39

    Я хацеў бы, каб гэта была першая старонка, якую я знайшоў на гэтым. Пасля спробы мноства розных каманд гэта адзіная працавала належным чынам і з мінімальнымі зменамі, неабходнымі для ўласнай базы дадзеных.
    Дзякуй вялікі!

  27. 40

    Я хацеў бы, каб гэта была першая старонка, якую я знайшоў на гэтым. Пасля спробы мноства розных каманд гэта адзіная працавала належным чынам і з мінімальнымі зменамі, неабходнымі для ўласнай базы дадзеных.
    Дзякуй вялікі!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47

    Я ведаю, што гэтая формула працуе, але я не бачу, дзе ўлічваецца радыус зямлі. Хто-небудзь можа мяне прасвятліць, калі ласка?

  34. 49
  35. 50

    Выдатны матэрыял Дуглас. Вы спрабавалі атрымаць кропку перасячэння, улічваючы доўгі / шырыня / падшыпнік двух кропак?

  36. 52

    Дзякуй, Дуглас, SQL-запыт - гэта менавіта тое, што мне спатрэбілася, і я думаў, што давядзецца напісаць яго самому. Вы пазбавілі мяне ад магчымай гадзіны навучання шыраты даўгаты!

  37. 53
  38. 55
  39. 56
  40. 58

    дзякуй за размяшчэнне гэтага карыснага артыкула,  
    але чамусьці я хацеў бы спытаць
    як атрымаць адлегласць паміж каардынатамі ўнутры mysql db і каардамі, устаўленымі карыстальнікам у php?
    для больш выразнага апісання:
    1. карыстальнік павінен уставіць [ідэнтыфікатар] для выбару дадзеных з db і каардынатаў самога карыстальніка
    2. php-файл атрымлівае мэтавыя дадзеныя (каарды) з дапамогай [id], а затым вылічае адлегласць паміж карыстальнікам і мэтавай кропкай

    ці проста можаце атрымаць адлегласць ад кода ніжэй?

    $ qry = "ВЫБАРЫ *, (((acos (sin ((". $ latitude. * * pi () / 180)) * sin ((`Latitude` * pi () / 180)) + cos ((". $ шыраты. "* pi () / 180)) * cos ((` Latitude` * pi () / 180)) * cos (((". $ longitude." - "Longitude`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) як адлегласць АД `MyTable` WHERE адлегласць> =". $ Адлегласць. " >>>> Ці магу я "дастаць" адлегласць адсюль?
    Дзякуй зноў,
    Цімі С.

  41. 60

    ок, усё, што я паспрабаваў, не працуе. Я маю на ўвазе тое, што ў мяне працуе, але адлегласць далёкая.

    Хто-небудзь мог зразумець, што не так з гэтым кодам?

    if (isset ($ _ POST ['submit'])) {$ z = $ _POST ['паштовы індэкс']; $ r = $ _POST ['радыус']; рэха "Вынікі для". $ z; $ sql = mysql_query (“АБРАБІЦЬ ДАЛІЧНЫ m.zipcode, m.MktName, m.LocAddSt, m.LocAddCity, m.LocAddState, m.x1, m.y1, m.verified, z1.lat, z2.lon, z1. горад, z1.state АД mrk m, zip z1, zip z2 ДЗЕ m.zipcode = z1.zipcode І z2.zipcode = $ z AND (3963 * acos (усекаць (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 ") або памерці (mysql_error ()); у той час як ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ row ['MktName']. ""; $ store = $ row ['LocAddSt']. ""; $ store. = $ row ['LocAddCity']. ",". $ row ['LocAddState']. " ". $ Row ['zipcode']; $ latitude1 = $ row ['lat']; $ longitude1 = $ row ['lon']; $ latitude2 = $ row ['y1']; $ longitude2 = $ row ['x1']; $ city = $ row ['city']; $ state = $ row ['state']; $ dis = getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = адлегласць ($ lat1, $ lon1, $ lat2, $ lon2); $ праверана = $ радок ['праверана']; калі ($ пацверджана == '1') {рэха ""; рэха "". $ крама. ""; рэха $ дыс. ”Міля (і)”; рэха «»; } else {рэха "". $ крама. ""; рэха $ дыс. ”Міля (і)”; рэха «»; }}}

    мой код functions.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)) ); $ адлегласць = acos ($ адлегласць); $ адлегласць = rad2deg ($ адлегласць); $ адлегласць = $ адлегласць * 60 * 1.1515; перамыкач ($ адзінка) {выпадак 'Mi': перапынак; выпадак 'Km': $ адлегласць = $ адлегласць * 1.609344; } вяртанне (круглая ($ адлегласць, 2)); }

    Загадзя дзякуй

  42. 61
  43. 62

    Гэй, Дуглас, выдатны артыкул. Мне падалося ваша тлумачэнне геаграфічных паняццяў і кода сапраўды цікавым. Маёй адзінай прапановай было б размясціць і зрабіць водступ для адлюстравання кода (напрыклад, Stackoverflow). Я разумею, што вы хочаце зэканоміць прастору, але звычайны інтэрвал / водступ кода значна палегчыць мне, праграмісту, чытанне і разбор. У любым выпадку, гэта дробязь. Працягвайце вялікую працу.

  44. 64
  45. 65

    тут пры выкарыстанні з функцыяй мы атрымліваем адзін тып адлегласці .. пры выкарыстанні запыту надыходзіць іншы тып адлегласці

  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    здаецца хутчэй (mysql 5.9) выкарыстоўваць удвая больш формулу ў select і дзе:
    $ формула = "(((acos (sin ((". $ latitude. "* pi () / 180)) * sin ((` Latitude` * pi () / 180)) + cos ((". $ latitude. "* Pi () / 180)) * cos ((` Latitude` * pi () / 180)) * cos ((((". $ Longitude." - "Longitude`) * pi () / 180))))) * 180 / пі ()) * 60 * 1.1515 * 1.609344) ";
    $ sql = 'ВЫБАРЫ *,'. $ формула. ' як адлегласць АД табліцы ДЗЕ '.. $ формула.' <= '. $ адлегласць;

  51. 71
  52. 72

    Вялікі дзякуй за зрух гэтага артыкула. ​​Гэта вельмі карысна.
    Спачатку PHP быў створаны як простая сцэнарная платформа пад назвай "Асабістая хатняя старонка". У наш час PHP (скарачэнне ад Hypertext Preprocessor) - гэта альтэрнатыва тэхналогіі Active Server Pages (ASP) Microsoft.

    PHP - гэта мова з адкрытым зыходным кодам на серверы, якая выкарыстоўваецца для стварэння дынамічных вэб-старонак. Яго можна ўбудаваць у HTML. PHP звычайна выкарыстоўваецца разам з базай дадзеных MySQL на вэб-серверах Linux / UNIX. Гэта, напэўна, самая папулярная мова сцэнарыяў.

  53. 73

    Я знайшоў вышэй рашэнне не працуе належным чынам.
    Мне трэба перайсці на:

    $ qqq = "ВЫБАРЫ *, (((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) як адлегласць АД `зарэгістраваць`";

  54. 75
  55. 76

    Добры дзень, калі ласка, мне сапраўды спатрэбіцца ваша дапамога ў гэтым.

    Я зрабіў запыт на свой вэб-сервер http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = шырата $
    -2.23389 = Даўгата $
    і 20 = адлегласць, якую я хачу атрымаць

    Аднак, выкарыстоўваючы формулу, ён атрымлівае ўсе радкі ў маёй базе дадзеных

    $ вынікі = 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) як адлегласць АД маркераў, ЯКІЯ маюць адлегласць> = ". $ Адлегласць));

    [{"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": "Піцэрыя на ўсходнім узбярэжжы Амічы", "address": "790 Castro St, Mountain View, CA", "lat": 37.387138366699, "lng": -122.08323669434, "адлегласць": 16079.175940152}, {"ідэнтыфікатар": 3, "імя": "Піца-бар і грыль Kapp's", "адрас": "Кастра 191, Маунцін-В'ю, Каліфорнія", "лат": 37.393886566162 "Lng": - 122.07891845703, "адлегласць": 16078.381373826}, {"id": 4, "name": "Піца круглага стала: Маунцін-В'ю", "address": "570 N Shoreline Blvd, Mountain View, CA", "Lat": 37.402652740479, "lng": - 122.07935333252, "distance": 16077.420540582}, {"id": 5, "name": "Піца і паста Тоні і Альбы", "address": "Ave Escuela Ave, Mountain Выгляд, Каліфорнія "," lat ": 619," lng ": - 37.394012451172," адлегласць ": 122.09552764893}, {" id ": 16078.563225154," name ":" Піца з драўнянай арэганай "," address ":" 6 El Camino Real, Лос-Альтас, Каліфорнія ”,” lat ”: 4546,“ lng ”: - 37.401725769043,“ distance ”: 122.11464691162}, {“ ідэнтыфікатар:: 16077.937560795, "імя": "Бары і грылі", "адрас": "7 Уайтлі-стрыт, Манчэстэр", "лат": 24, "lng": - 53.485118865967, "адлегласць": 2.1828699111938}]

    Я хачу атрымаць толькі радкі з 20 міль, але гэта прыносіць усе радкі. Калі ласка, што я раблю не так

  56. 77

    Я шукаю падобны запыт, але крыху актывізаваўся - карацей кажучы, гэта для таго, каб згрупаваць усе каардынаты ў межах 2 міляў ад кожнай каардынаты, а потым падлічыць, колькі каардынатаў у кожнай групе і вывесці толькі адну групу, якая мае найбольш каардынатаў - нават калі у вас ёсць больш чым адна група сярод груп, якія маюць найбольшую колькасць каардынатаў - проста выведзіце выпадковую групу з груп з такім жа самым вялікім лікам -

Што вы думаеце?

Гэты сайт выкарыстоўвае Akismet для барацьбы са спамам. Даведайцеся, як дадзеныя апрацоўваюцца каментар.