PHP ва SQL: Масофаи бузурги давраро байни нуқтаҳои арзи ва дарозӣ бо формулаи Гаверсин ҳисоб кунед ё пурсед.

Формулаи Гаверсин - Масофаи бузурги давраро бо PHP ё MySQL ҳисоб кунед

Дар ин моҳ ман каме дар PHP ва MySQL нисбати GIS барномарезӣ кардам. Гирду атрофро пинҳон карда, дарвоқеъ ёфтани баъзе аз он ба ман душвор буд Ҳисобҳои ҷуғрофӣ барои ёфтани масофаи байни ду маҳал, ман мехостам онҳоро дар ин ҷо нақл кунам.

Харитаи парвозҳо бо Аврупо бо масофаи калон

Усули оддии ҳисоб кардани масофа байни ду нуқта истифодаи формулаи Пифагор барои ҳисоб кардани гипотенузаи секунҷа (A² + B² = C²) мебошад. Ин бо номи Масофаи Евклид.

Ин оғози ҷолиб аст, аммо он бо ҷуғрофия дахл надорад, зеро масофаи байни хатҳои арзи ва тӯлонӣ масофаи баробар нест ҷудо. Ҳангоми наздик шудан ба экватор хатҳои арзи ҷудогона дуртар мешаванд. Агар шумо як муодилаи оддии триангулатсияро истифода баред, он метавонад масофаро дар як ҷой дақиқ чен кунад ва дар ҷои дигар хеле хато, бинобар каҷравии Замин.

Масофаи даврашакл

Роҳҳое, ки ба масофаи дур дар атрофи Замин тай карда мешаванд, бо номи маъруфанд Масофаи даврашакл. Яъне ... масофаи кӯтоҳтарин байни ду нуқтаи кура аз нуқтаҳои харитаи ҳамвор фарқ мекунад. Онро бо он муттаҳид кунед, ки хатҳои арзи ва тӯлӣ баробар нестанд ... ва шумо ҳисобкунии душворе доред.

Ин аст шарҳи видеоии афсонавӣ дар бораи чӣ гуна кор кардани Circles Great.

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

Масофа бо истифода аз каҷравии Замин ба Формулаи гаверсин, ки тригонометрияро истифода бурда, барои каҷравии замин имкон медиҳад. Вақте ки шумо масофаи байни 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)); 
}

SQL: Барқарор кардани ҳама сабтҳо дар доираи диапазон тавассути ҳисоб кардани масофа дар мил бо истифода аз паҳнои тӯлонӣ ва тӯлонӣ

Инчунин истифодаи SQL барои ҳисобкунӣ барои ёфтани ҳама сабтҳо дар масофаи муайян имконпазир аст. Дар ин мисол, ман мехоҳам MyTable-ро дар 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) 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 интиқол медиҳад:
    deg2rad дукарата (дараҷаи дукарата) {deg deg * (3.14159265358979323846 / 180.0); }

  2. 2

    Пардохти хеле хуб - хеле хуб кор кард - Ман бояд танҳо номи ҷадвалро, ки лати дароз дошт, иваз кунам. Он хеле зуд кор мекунад .. Ман шумораи оқилонаи лотонро (<400) дорам, аммо ман фикр мекунам, ки ин хуб хоҳад буд. Сайти хуб ҳам - ман онро танҳо ба ҳисоби del.icio.us илова кардам ва мунтазам тафтиш мекунам.

  3. 4
  4. 5

    Ман тамоми рӯз ҳисобҳои масофаро кофтам ва алгоритми harversine -ро ёфтам, ба шарофати шумо барои мисол овардан дар бораи чӣ гуна дар изҳороти sql овардан. Ташаккур ва салом, Дониёл

  5. 8

    Ман фикр мекунам, ки SQL-и шумо ба изҳороти дошта ниёз дорад.
    ба ҷои WHERE масофа <= $ масофа, ки шояд ба шумо лозим ояд
    масофаи HAVING <= $ масофаро истифода баред

    вагарна ташаккур барои сарфаи ман як тӯл вақт ва қувва.

    • 9

      Салом Довуд,

      Агар шумо ягон намуди изҳороти GROUP BY -ро иҷро кунед, ба шумо HAVING лозим мешавад. Ман инро дар мисоли боло карда истодаам.

      Doug

  6. 10
  7. 11
  8. 12

    Ташаккури зиёд барои мубодилаи ин рамз. Ин ба ман вақти зиёди рушдро сарфа кард. Инчунин, ба хонандагони худ ташаккур, ки қайд карданд, ки изҳороти HAVING барои MySQL 5.x зарур аст. Хеле муфид.

  9. 14

    Формулаи дар боло овардашуда вақтамро сарфа мекунад. Ташаккури зиёд.
    Ман инчунин бояд байни формати NMEA ва Degrees гузарам. Ман формуларо дар ин URL дар поёни саҳифа ёфтам. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    Оё касе медонад, ки чӣ гуна инро тасдиқ кунад?

    Сипос!
    Гарри

  10. 15

    Салом,

    Саволи дигар. Оё формулаи сатрҳои NMEA ба монанди сатри зерин вуҷуд дорад?

    1342.7500, N, 10052.2287, Е.

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

    Ташаккур,
    Гарри

  11. 16

    Ман инчунин фаҳмидам, ки КУҶО барои ман кор намекунад. Онро ба HAVING иваз кард ва ҳама чиз комилан кор мекунад. Дар аввал ман шарҳҳоро нахондам ва онро бо интихоби селлюлоза дубора навиштам. Ҳардуи онҳо хуб кор хоҳанд кард.

  12. 17

    Ташаккури зиёд барои скрипти дар mysql навишташуда, танҳо каме тасҳеҳи хурд ворид кардан лозим буд (HAVING) 🙂
    Ҷои кор

  13. 18

    Бениҳоят муфид, ташаккури зиёд! Ман на бо "КУҶО", балки бо "HAVING" -и нав мушкилот мекардам, аммо боре шарҳҳоро дар инҷо хондам (пас аз тақрибан ним соат дандонҳоям бо ғамгинӣ = P), онро хуб кор кардам. Ташаккур ^ _ ^

  14. 19
  15. 20

    Дар хотир доред, ки чунин изҳороти интихобшуда хеле пурқувват ва аз ин рӯ суст хоҳад буд. Агар шумо саволҳои зиёде дошта бошед, он метавонад зуд зуд чизҳоро ғарқ кунад.

    Усули хеле шадидтар аз он иборат аст, ки интихоби якум (хом) -ро бо истифода аз майдони Майдони бо масофаи ҳисобшуда муайяншуда, яъне "интихоб кунед * аз ҷадвале, ки паҳнои байни lat1 ва lat2 ва дарозии байни lon1 ва lon2". lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, монанд бо лон. latdiff ~ = масофа / 111 (барои км), ё масофа / 69 барои мил, зеро 1 дараҷаи арзи ҷуғрофӣ ~ 111 км аст (диапазони ночизе, ки замин каме байзавӣ аст, аммо барои ин мақсад кофист). Лондон = масофа / (abs (cos (deg2rad (арзи ҷуғрофӣ)) * 111)) - ё 69 мил (шумо дарвоқеъ як квадратро каме калонтар гирифта метавонед, то вариантҳоро ба назар гиред). Пас натиҷаи онро гиред ва онро ба интихоби радиалӣ ғизо диҳед. Танҳо ҳисоб кардани координатҳои берун аз ҳудудро фаромӯш накунед, яъне масофаи дарозии қобили қабул аз -180 то +180 ва паҳнои паҳнои қабулшаванда аз -90 то +90 - дар ҳолате ки латдифф ё лондиффи шумо берун аз ин диапазон бошад. . Дар хотир доред, ки дар аксари ҳолатҳо ин метавонад татбиқ карда шавад, зеро он танҳо ба ҳисобу китоби уқёнуси Ором аз қутб ба қутб таъсир мерасонад, гарчанде ки он як қисми чукотка ва як қисми аляскаро бурида мегузарад.

    Он чизе ки мо бо ин анҷом медиҳем, коҳиш ёфтани миқдори нуқтаҳои бар зидди он ҳисобкардаатон мебошад. Агар шумо як миллион нуқтаи ҷаҳонӣ дар пойгоҳи додаҳо тақрибан баробар тақсим шуда бошед ва шумо мехоҳед дар масофаи 100 км ҷустуҷӯ кунед, пас ҷустуҷӯи аввалини шумо (зуд) масоҳати 10000 кв км аст ва эҳтимолан тақрибан 20 натиҷа хоҳад дод (дар асоси тақсимоти баробар аз болои масоҳати сатҳаш тақрибан 500M кв км), ин маънои онро дорад, ки шумо барои пурсиш ба ҷои миллион маротиба ҳисобкунии мураккаби масофаро 20 маротиба иҷро мекунед.

    • 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

    Ин хеле олӣ аст, аммо ҳамон тавре ки парандагон парвоз мекунанд. Хеле хуб мебуд, ки Google maps API-ро ба ин ё он шакл дароварем (шояд бо истифода аз роҳҳо ва ғ.) Танҳо барои тасаввурот дар бораи шакли дигари нақлиёт. Ман то ҳол вазифаи PHP-и тавлидшудаи моделиронӣ накардаам, ки тавонад ҳалли муассири мушкилоти фурӯшандаи сайёрро пешниҳод кунад. Аммо ман фикр мекунам, ки ман метавонам баъзе аз коди шуморо барои ин дубора истифода барам.

  18. 27

    Салом Дуглас,
    ташаккури зиёд барои ин мақола - шумо танҳо вақтҳои зиёд маро сарфа кардед.
    парвояшро кун,
    нимрод @ Исроил

  19. 28

    Мақолаи хуб! Ман бисёр мақолаҳоеро ёфтам, ки чӣ гуна ҳисоб кардани масофаи байни ду нуқтаро тавсиф мекарданд, аммо ман дарвоқеъ порчаи SQL-ро меҷустам.

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

    2 рӯзи таҳқиқот дар ниҳоят ин саҳифаро пайдо кунед, ки мушкилоти маро ҳал кунад. Чунин ба назар мерасад, ки ман беҳтарам WolframAlpha-ро канда, математикаи худро тоза кунам. Тағир аз КУҶО ба HAVING скрипти маро дар ҳолати корӣ дорад. СИПОС

  25. 37
    • 38

      Ташаккур Георги. Ман нигоҳ доштам, ки сутуни 'масофа' ёфт нашуд. Пас аз он ки ман КУҶО-ро ба ДИГАР иваз кардам, он мисли ҷаззоб кор кард!

  26. 39

    Эй кош, ин аввалин сафҳае буд, ки ман дар ин бора ёфта будам. Пас аз кӯшиши фармонҳои гуногун, ин ягона ягона буд, ки дуруст кор кунад ва бо тағироти ҳадди аққал ба базаи шахсии ман мувофиқат кунад.
    Ташаккури зиёд!

  27. 40

    Эй кош, ин аввалин сафҳае буд, ки ман дар ин бора ёфта будам. Пас аз кӯшиши фармонҳои гуногун, ин ягона ягона буд, ки дуруст кор кунад ва бо тағироти ҳадди аққал ба базаи шахсии ман мувофиқат кунад.
    Ташаккури зиёд!

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

    Ман медонам, ки ин формула кор мекунад, аммо ман намебинам, ки радиуси замин дар куҷо ба назар гирифта мешавад. Лутфан касе маро равшан кунад?

  34. 49
  35. 50
  36. 52
  37. 53
  38. 55
  39. 56

    Дуглас, барои ин рамзи аҷиб ташаккур. Ман сари худро мекафтам, ки чӣ гуна инро дар портали ҷомеаи GPS-и худ иҷро кунам. Шумо маро соатҳо сарфа кардед.

  40. 58

    ташаккур барои интишори ин мақолаи муфид,  
    аммо барои баъзе сабабҳо ман мехоҳам бипурсам
    чӣ гуна масофаи байни координаҳои дохили mysql DB ва координаҳои ба php гузоштаи корбарро ба даст овардан мумкин аст?
    барои равшантар тасвир:
    1. истифодабаранда бояд [id] -ро барои интихоби маълумоти муайян аз db ва координаҳои худи корбар ворид кунад
    2. файли php бо истифода аз [id] маълумоти мақсаднок (координаҳо) мегирад ва сипас масофаи байни корбар ва нуқтаи ҳадафро ҳисоб мекунад

    ё танҳо танҳо метавонад аз рамзи зер фосила гирад?

    $ qry = “SELECT *, (((acos (sin ((". $ Enlem. "* 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` КУҶО масофа> = “. $ Масофа.” >>>> Оё ман метавонам масофаро аз ин ҷо "барорам"?
    бори дигар ташакур,
    Тимми С.

    • 59

      ҳеҷ гоҳ фикр накунед, ман фаҳмидам, ки чӣ гуна "функсия" дар php кор мекунад
      $ dis = getDistanceBetweenPointsNew ($ userLati, $ userLongi, $ lati, $ longi, $ unit = 'Km')
      ташаккур!! 

  41. 60

    хуб, ҳама чизи кӯшиш кардаам кор намекунад. Манзурам он чизе, ки ман дорам, кор мекунам, аммо масофаҳо хеле дуранд.

    Оё касе метавонад бубинад, ки ин рамз чӣ хатост?

    if (isset ($ _ POST ['пешниҳоди'])) {$ z = $ _POST ['индекс']; $ r = $ _POST ['радиус']; echo "Натиҷаҳо барои". $ 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 АЗ mrk m, zip z1, zip z2 КУҶО 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 ") ё бимирад (mysql_error ()); while ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ row ['MktName']. ""; $ store = $ row ['LocAddSt']. ””; $ store. = $ row ['LocAddCity']. ”,“. $ row ['LocAddState']. ” “. $ Row ['индекс']; $ Enlem1 = $ row ['lat']; $ longitude1 = $ row ['lon']; $itude2 = $ row ['y1']; $ longitude2 = $ row ['x1']; $ city = $ row ['city']; $ state = $ row ['state']; $ dis = getnew ($ width1, $ longitude1, $ width2, $ longitude2, $ unit = 'Mi'); // $ dis = масофа ($ lat1, $ lon1, $ lat2, $ lon2); $ verified = $ row ['verified']; агар ($ verified == '1') {echo “”; echo "". $ store. ""; ҳамовоз $ dis. ”Мил (с) дуртар”; ҳамовоз ""; } else {echo "". $ store. ""; ҳамовоз $ dis. ”Мил (с) дуртар”; ҳамовоз ""; }}}

    рамзи функсияҳои ман.php
    Функсияи getnew ($ width1, $ longitude1, $ width2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ масофа = (sin (deg2rad ($ Enlem1)) * sin (deg2rad ($ Enlem2)))) + (cos (deg2rad ($ Enlem1)) * * cos (deg2rad ($ Enlem2)) * * cos (deg2rad ($ theta)) ); $ масофа = acos ($ масофа); $ масофа = rad2deg ($ масофа); $ масофа = $ масофа * 60 * 1.1515; switch ($ unit) {case 'Mi': break; парвандаи 'Km': $ масофа = $ масофа * 1.609344; } return (мудаввар ($ масофа, 2)); }

    пешакӣ ташаккур

  42. 61
  43. 62

    Ҳей Дуглас, мақолаи олӣ. Ман тавзеҳи шуморо дар бораи мафҳумҳои ҷуғрофӣ ва рамз воқеан ҷолиб ҳис кардам. Ягона пешниҳоди ман ҷойивазкунӣ ва рамзро барои нишон додан (масалан, Stackoverflow) хоҳад буд. Ман мефаҳмам, ки шумо мехоҳед фазоро ҳифз кунед, аммо фосилаи / рамзи анъанавии кода барои ман, ҳамчун барномасоз, хондан ва ҷудо кардани онро хеле осон мекунад. Ба ҳар ҳол, ин як чизи хурд аст. Кори бузургро идома диҳед.

    • 63

      Ташаккур! Ман ин навиштаҷотро каме тағир додаам… аммо муодилаҳо ин қадар ҷойро ишғол мекунанд ва хеле дарозанд, ки ман боварӣ надорам, ки ин аз ҳад зиёд кӯмак мекунад.

  44. 64
  45. 65

    дар ин ҷо ҳангоми истифодаи функсия мо як намуди масофаро мегирем ... ҳангоми истифодаи пурсиши дигар намуди масофа

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

    ду маротиба истифода бурдани формула дар интихоб тезтар ба назар мерасад (mysql 5.9) ва дар куҷо:
    $ формула = “(((acos (sin ((.. $ Enlem.” * pi () / 180)) * sin ((`Latitude` * pi () / 180)) + cos ((". $ Enlem. ”* Pi () / 180)) * cos ((" Latitude` * pi () / 180)) * cos (((". $ Longitude." - "Longitude`) * pi () / 180))))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) ”;
    $ sql = 'ИНТИХОБ *,'. $ формула. ' ҳамчун масофа АЗ ҷадвали КУҶО '.. формула.' масофа <= '. $;

  51. 71
  52. 72

    Ташаккури зиёд барои тарошидани ин мақола.ин хеле муфид аст.
    PHP дар аввал ҳамчун платформаи оддии скриптсозӣ бо номи "Сафҳаи хонагии шахсӣ" сохта шуда буд. Имрӯзҳо PHP (кӯтоҳ барои Hypertext Preprocessor) алтернативаи технологияи Microsoft Active Server Pages (ASP) мебошад.

    PHP забони кушодаасоси сервер буда, барои сохтани веб-саҳифаҳои динамикӣ истифода мешавад. Он метавонад ба HTML дохил карда шавад. PHP одатан дар якҷоягӣ бо пойгоҳи додаҳои MySQL дар серверҳои Linux / UNIX истифода мешавад. Ин шояд маъмултарин забони скриптӣ бошад.

  53. 73

    Ман ҳалли дар боло овардашударо ёфтам, ки дуруст кор намекунад.
    Ба ман тағир додан лозим аст:

    $ qqq = "SELECT *, (((acos (sin ((". $ Enlem. "* pi () / 180)) * sin ((` latt` * pi () / 180)) + cos (("). $ арзи ҷадид. “* pi () / 180)) * cos ((` latt` * pi () / 180)) * cos (((”. $ longitude.“ - `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) ҳамчун масофа АЗ `regist`“;

  54. 75

    ташаккур ҷаноби олӣ комилан менигаред .. аммо ман як савол дорам, агар ман мехоҳам бидуни нуқтаи даҳӣ баромад кунам, пас чӣ кор карда метавонам ..?

    Ташаккури пешакӣ.

  55. 76

    Салом, лутфан ман дар ҳақиқат ба кӯмаки шумо ниёз дорам.

    Ман ба веб-серверам дархост гирифтам http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ арзи ҷуғрофӣ
    -2.23389 = дарозии $
    ва 20 = масофае, ки ман мехоҳам ҷустуҷӯ кунам

    Аммо бо истифода аз формулаи шумо, он ҳамаи сатрҳоро дар db-и ман сабт мекунад

    $ натиҷаҳо = DB :: ро интихоб кунед (DB :: raw (“SELECT *, (((acos (sin ((.. $ Enlem.” * pi () / 180)) * sin ((lat * pi () / 180) )) + cos ((“. $ Enlem.” * pi () / 180)) * cos ((lat * pi () / 180)) * cos (((“. $ longitude.” - lng) * pi ( ) / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) ҳамчун масофа АЗ нишонгузорҳо 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, "Масофа": 16079.294719663}, {"id": 2, "name": "Pizzeria Coast Coast East Amici", "address": "790 Castro St, Mountain View, CA", "lat": 37.387138366699, "lng": -122.08323669434, "масофа": 16079.175940152}, {"id": 3, "name": "Pizza Bar & Grill Kapp's", "address": "191 Castro St, Mountain View, CA", "lat": 37.393886566162, "Lng": - 122.07891845703, "distance": 16078.381373826}, {"id": 4, "name": "Pizza Table Round: 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 ":" Pizza Pizza-ҳезуми Oregano "," суроға ":" 4546 El Camino Real, Los Altos, CA "," lat ": 37.401725769043," lng ": - 122.11464691162," distance ": 16077.937560795}, {" id ": 7," name ":" Панҷараҳо ва панҷараҳо "," суроға ":" Кӯчаи 24 Уайтли, Манчестер "," лат ": 53.485118865967," lng ": - 2.1828699111938," масофа ": 8038.7620112314}]

    Ман мехоҳам танҳо сатрҳоро бо масофаи 20 мил барорам, аммо он ҳамаи сатрҳоро меорад. Лутфан ман чӣ кор мекунам

  56. 77

    Ман як дархости шабеҳро меҷӯям, аммо каме боло рафтам - хулоса, ин ҳама координатаҳоро дар масофаи 2 мил аз ҳар як координат гурӯҳбандӣ кардан ва сипас ҳисоб кардани чанд координатаи ҳар як гурӯҳ ва танҳо як гурӯҳеро медиҳад, ки координатаҳои бештар доранд - ҳатто агар шумо дар байни гурӯҳҳое, ки шумораи бештари координат доранд, зиёда аз як гурӯҳ доред - танҳо гурӯҳи тасодуфиро аз гурӯҳҳое бо ҳамон шумораи калонтарин бароред -

Ту чӣ фикр мекунӣ?

Ин сомона ба воситаи Akismet барои кам кардани спам истифода мешавад. Омӯзед, ки чӣ тавр маълумотҳои худро тафтиш кунед.