PHP နှင့် SQL: Haversine ဖော်မြူလာနှင့်လတ္တီတွဒ်နှင့်လောင်ဂျီတွဒ်အကြားရှိကြီးမားသောစက်ဝိုင်းအကွာအဝေးကိုတွက်ချက်ခြင်းသို့မဟုတ်ရှာဖွေခြင်း

Haversine Formula - PHP သို့မဟုတ် MySQL ဖြင့် Great Circle Distance ကိုတွက်ချက်ပါ

ယခုလတွင်ငါ GIS နှင့် ပတ်သက်၍ PHP နှင့် MySQL တွင်အတော်လေးပရိုဂရမ်ရေးသားခဲ့သည်။ ပိုက်ကွန်ကိုလှည့်ပတ်ကြည့်ရှုခြင်းအားဖြင့်၊ ပထဝီဝင်တွက်ချက်မှုများ နေရာနှစ်ခုအကြားအကွာအဝေးကိုရှာဖို့ဒီတော့ငါသူတို့ကိုဒီမှာမျှဝေချင်တယ်။

ဥရောပကိုကြီးသောစက်ဝိုင်းအဝေးသင်ဖြင့်မြေပုံဆွဲပါ

အချက်နှစ်ချက်အကြားအကွာအဝေးကိုတွက်ချက်ရန်ရိုးရှင်းသောနည်းလမ်းမှာ Pythagorean formula ကို သုံး၍ တြိဂံ၏ hypotenuse ကိုတွက်ချက်ရန် (A² + B² = C²) ဖြစ်သည်။ ၎င်းကိုလူသိများသည် ယူကလစ်အကွာအဝေး.

၎င်းသည်စိတ် ၀ င်စားစရာကောင်းသောအရာဖြစ်သော်လည်းလတ္တီတွဒ်နှင့်လောင်ဂျီတွဒ်မျဉ်းများအကြားရှိအကွာအဝေးဖြစ်သောကြောင့်ပထဝီဝင်နှင့်မသက်ဆိုင်ပါ မတန်းတူအကွာအဝေး ဆိတ်ကွယ်ရာ။ အီကွေတာနှင့်သင်နီးကပ်လာသည်နှင့်အမျှလတ္တီတွဒ်လိုင်းများသည်လည်းထပ်မံကွဲထွက်လာသည်။ အကယ်၍ သင်သည်ရိုးရှင်းသောတြိဂံပုံညီမျှခြင်းတစ်မျိုးမျိုးကိုအသုံးပြုပါကကမ္ဘာ၏အဖြစ်အပျက်များကြောင့်၎င်းသည်တစ်နေရာတည်းတွင်အကွာအဝေးကိုတိကျစွာတိုင်းတာနိုင်ပြီးအခြားတစ်ခုတွင်လွန်စွာမှားယွင်းနိုင်သည်။

မဟာစက်ဝိုင်းအကွာအဝေး

ကမ္ဘာပတ်ပတ်လည်တွင်ရှည်လျားသောအကွာအဝေးများကိုဖြတ်သန်းသွားသောလမ်းကြောင်းများကိုထိုလမ်းကြောင်းဟုလူသိများသည် မဟာစက်ဝိုင်းအကွာအဝေး။ ဆိုလိုသည်မှာ…နယ်ပယ်တစ်ခုတွင်အချက် (၂) ခုအကြားအတိုဆုံးအကွာအဝေးသည်မြေပုံပေါ်တွင်ရှိသောအချက်များနှင့်ကွဲပြားသည်။ ၎င်းကိုလတ္တီတွဒ်နှင့်လောင်ဂျီတွဒ်မျဉ်းများသည်ညီမျှမှုမရှိသောကြောင့်ပေါင်းစပ်။ ခက်ခဲသောတွက်ချက်မှုရရှိသည်။

ဤတွင် Great Circles ၏အလုပ်လုပ်ပုံနှင့် ပတ်သက်၍ စိတ်ကူးကောင်းသည့်ဗီဒီယိုရှင်းလင်းချက်ဖြစ်သည်။

အဆိုပါ Haversine ဖော်မြူလာ

ကမ္ဘာ၏အဖြစ်များတတ်သည်ကို အသုံးပြု၍ အကွာအဝေးကိုထည့်သွင်းထားသည် Haversine ပုံသေနည်း, ကမ္ဘာ၏အဖြစ်များတတ်သည်အဘို့အခွင့်ပြုရန် trigonometry ကိုအသုံးပြုသည်။ သင်သည်ကမ္ဘာပေါ်ရှိနေရာ ၂ ခု (ကျီးကန်းပျံသန်းစဉ်) အကြားအကွာအဝေးကိုရှာတွေ့သောအခါ၊ ဖြောင့်မတ်သောမျဉ်းသည်အမှန်တကယ်ပင် arc ဖြစ်သည်။

၎င်းသည်လေယာဉ်ပျံသန်းရာတွင်အသုံးပြုနိုင်သည် - သင်သည်အမှန်တကယ်ပျံသန်းမှုမြေပုံကိုကြည့်ပြီး၎င်းတို့သည် arched ဖြစ်နေသည်ကိုသတိပြုမိပါသလား။ ဘာဖြစ်လို့လဲဆိုတော့နှစ်ခုလုံးကြားမှာတည်နေရာကိုတိုက်ရိုက်မဟုတ်ဘဲနှစ်ခေါက်ကြားထဲပျံသန်းတာကတိုတယ်။

PHP: 2 လတ္တီတွဒ်နှင့်လောင်ဂျီတွဒ်အကြားအကွာအဝေးကိုတွက်ချက်ပါ

မည်သို့ပင်ဖြစ်စေ၊ ဤနေရာတွင်အမှတ် ၂ ခုကြားရှိအကွာအဝေးကိုတွက်ချက်ရန် PHP ပုံသေနည်း (Mile vs. Kilometer ပြောင်းလဲခြင်းနှင့်အတူ) ဒdecimalမနေရာနှစ်ခုသို့ဝိုင်းထားသည်။

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 ကိုသုံးနိုင်သည်။ ဒီဥပမာမှာ MySQL မှာ MyTable ကိုရှာမယ်၊ variable ကို $ Distance (Miles မှာ) ထက်နည်းဒါမှမဟုတ်ညီမျှတဲ့မှတ်တမ်းအားလုံးကို $ latitude နဲ့ $ longitude မှာရှာမယ်။

သတ်သတ်မှတ်မှတ်တစ်ခုအတွင်းရှိမှတ်တမ်းများအားလုံးကိုပြန်လည်ရယူခြင်းအတွက်ရှာဖွေမှု အကွာအဝေး လတ္တီတွဒ်နှင့်လောင်ဂျီတွဒ်နှစ်ခုကြားရှိမိုင်အကွာအဝေးကိုတွက်ချက်ခြင်းအားဖြင့် -

$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 variable တစ်ခုပါ။
  • $ လတ္တီတွဒ် - ဒါက PHP variable တစ်ခုပါ။
  • $ အကွာအဝေး - ဒီအကွာအဝေးဟာသင်အကုန်လုံးကိုနည်းနည်းနဲ့တန်းတူဖြစ်ချင်တဲ့အကွာအဝေးဖြစ်တယ်။
  • စားပှဲ - ဒါကဒီစားပွဲပါ။ သင်စားပွဲနာမည်နဲ့အစားထိုးချင်တယ်။
  • လတီ္တတွဒ် - ဒါကမင်းရဲ့လတ္တီတွဒ်ရဲ့ကွက်လပ်ပါ။
  • လောင်ဂျီတွဒ် ဒါကခင်ဗျားရဲ့လောင်ဂျီတွဒ်နယ်ပယ်ပဲ။

SQL: လတ္တီတွဒ်နှင့်လောင်ဂျီတွဒ်ကို အသုံးပြု၍ ကီလိုမီတာအကွာအဝေးကိုတွက်ချက်ခြင်းဖြင့်မှတ်တမ်းအားလုံးကိုအကွာအဝေးအတွင်းပြန်လည်ရယူခြင်း

ဒီမှာ MySQL မှာကီလိုမီတာသုံးပြီး SQL query:

$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 variable တစ်ခုပါ။
  • $ လတ္တီတွဒ် - ဒါက PHP variable တစ်ခုပါ။
  • $ အကွာအဝေး - ဒီအကွာအဝေးဟာသင်အကုန်လုံးကိုနည်းနည်းနဲ့တန်းတူဖြစ်ချင်တဲ့အကွာအဝေးဖြစ်တယ်။
  • စားပှဲ - ဒါကဒီစားပွဲပါ။ သင်စားပွဲနာမည်နဲ့အစားထိုးချင်တယ်။
  • လတီ္တတွဒ် - ဒါကမင်းရဲ့လတ္တီတွဒ်ရဲ့ကွက်လပ်ပါ။
  • လောင်ဂျီတွဒ် ဒါကခင်ဗျားရဲ့လောင်ဂျီတွဒ်နယ်ပယ်ပဲ။

ငါဒီကုဒ်ကိုမြောက်အမေရိကတလွှားတည်နေရာ ၁၀၀၀ ကျော်ရှိသည့်လက်လီအရောင်းဆိုင်တစ်ခုအတွက်အသုံးချပြီးစီးပွားရေးမြေပုံတစ်ခုမှာသုံးခဲ့သည်။

77 မှတ်ချက်

  1. 1

    မျှဝေမှုအတွက်ကျေးဇူးတင်ပါတယ်။ ၎င်းသည်ကူးယူရန်လွယ်ကူသောအလုပ်ဖြစ်ပြီးကူးယူခြင်းဖြစ်သည်။ သငျသညျအကြှနျုပျကိုအချိန်အများကြီးကယ်တင်ခြင်းသို့ရောက်ရ၏။
    C သို့ပို့သူမည်သူမဆိုအတွက် FYI:
    နှစ်ဆ deg2rad (နှစ်ဆ deg) {ပြန်လာ deg * (3.14159265358979323846 / 180.0); }

  2. 2

    အလွန်ကောင်းတဲ့တင်ပို့ချက် - အရမ်းအလုပ်လုပ်တယ် - ငါ lat-long ကိုင်ထားတဲ့စားပွဲရဲ့နာမည်ကိုပြောင်းရတယ်။ ၎င်းသည်တော်တော်မြန်ဆန်စွာအလုပ်လုပ်သည်။ ကျွန်ုပ်တွင်ကျိုးကြောင်းဆီလျော်လွန်းသောအရေအတွက် (<400) ရှိသော်လည်းဤအရာသည်အတိုင်းအတာတစ်ခုအထိသာရှိသည်ဟုကျွန်ုပ်ထင်သည်။ အရမ်းကောင်းတဲ့ site လည်းရှိတယ်။ ငါ del.icio.us အကောင့်ထဲကိုထည့်လိုက်ပြီးမှန်မှန်ပြန်စစ်ဆေးပါလိမ့်မယ်။

  3. 4
  4. 5

    အကွာအဝေးတွက်ချက်မှုများကိုတစ်နေ့လုံးကျွန်တော်ရှာဖွေခဲ့ပြီး Harversine algorithm ကိုတွေ့ရှိခဲ့ပါတယ်။ sql ကြေငြာချက်ထဲမှာဘယ်လိုပုံသွင်းရမယ်ဆိုတာဥပမာပေးခဲ့တဲ့အတွက်ကျေးဇူးတင်ပါတယ်။ ဒံယေလကျေးဇူးတင်ပါတယ်

  5. 8

    ငါသည်သင်တို့၏ SQL ရှိခြင်းကြေညာချက်လိုအပ်ပါတယ်ထင်ပါတယ်။
    ဘယ်မှာအကွာအဝေး <= $ အကွာအဝေး၏အစားသင်လိုအပ်ပေလိမ့်မည်
    HAVING အကွာအဝေး <= $ အကွာအဝေးကိုအသုံးပြုပါ

    မဟုတ်ရင်ငါ့ကိုအချိန်နှင့်ခွန်အားများစွာချွေတာခြင်းအတွက်ကျေးဇူးတင်ပါတယ်။

  6. 10
  7. 11
  8. 12

    ဒီကုဒ်ကိုမျှဝေတဲ့အတွက်ကျေးဇူးတင်ပါတယ်။ ဒါဟာငါ့ကိုဖွံ့ဖြိုးမှုအချိန်အများကြီးကယ်တင်ခြင်းသို့ရောက်ရ၏။ MySQL 5.x အတွက် HAVING ကြေငြာချက်တစ်ခုလိုအပ်ကြောင်းထောက်ပြသောကြောင့်စာဖတ်သူများကိုလည်းကျေးဇူးတင်ပါသည်။ အလွန်အထောက်အကူဖြစ်စေ။

  9. 14

    အထက်ပါဖော်မြူလာသည်ကျွန်ုပ်ကိုအချိန်များစွာချွေတာသည်။ ကျေးဇူးအများကြီးတင်ပါတယ်။
    ငါသည်လည်း NMEA format နဲ့ဒီဂရီအကြားပြောင်းဖို့ရှိသည်။ စာမျက်နှာရဲ့အောက်ခြေမှာဒီ 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

    ငါဘယ်မှာငါ့အဘို့အလုပ်မလုပ်ဘူးကြောင်းတွေ့ရှိခဲ့ပါတယ်။ ၎င်းကိုရှိပြီးသားအဖြစ်ပြောင်းလဲပြီးအရာရာတိုင်းဟာပြီးပြည့်စုံပါတယ်။ ပထမတော့မှတ်ချက်များကိုဖတ်ပြီး nested select ကိုသုံးပြီး rewrote လုပ်ခဲ့သည်။ နှစ် ဦး စလုံးရုံဒဏ်ငွေအလုပ်လုပ်ပါလိမ့်မယ်။

  12. 17
  13. 18

    မယုံနိုင်လောက်အောင်အထောက်အကူဖြစ်စေကျေးဇူးတင်ပါတယ်။ ကျွန်ုပ်တွင်“ ရှိခြင်း” ထက်“ ရှိခြင်း” အသစ်နှင့် ပတ်သက်၍ ပြproblemsနာအချို့ရှိခဲ့သည်။ သို့သော်ဤမှတ်ချက်များကိုကျွန်ုပ်ဖတ်ပြီးသည်နှင့် (နာရီဝက်ခန့်အကြာတွင်သွားများစိတ်ပျက်ခြင်း = P ၌သွားပြီးနောက်) ၎င်းသည်ကောင်းမွန်စွာအလုပ်လုပ်နိုင်ခဲ့သည်။ ^ _ ^ ကျေးဇူးတင်ပါတယ်

  14. 19
  15. 20

    ဤကဲ့သို့သောရွေးချယ်ထားသောဖော်ပြချက်သည်အလွန်တွက်ချက်မှုပြင်းထန်ပြီးနှေးကွေးလိမ့်မည်ကိုသတိရပါ။ သင့်တွင်ထိုမေးမြန်းချက်များစွာရှိပါက၎င်းသည်အရာရာကိုလျင်မြန်စွာရှုပ်ထွေးစေနိုင်သည်။

    သိပ်မပြင်းထန်သောချဉ်းကပ်နည်းသည်တွက်ချက်ထားသည့်အကွာအဝေးအားဖြင့်သတ်မှတ်ထားသော SQUARE usingရိယာကို အသုံးပြု၍ ပထမဆုံး (crude) ရွေးချယ်မှုကိုလုပ်ဆောင်ရန်ဖြစ်သည်။ ဆိုလိုသည်မှာ“ tablename from lat1 နှင့် lat2 နှင့် laton နှင့် lon1 အကြားလောင်ဂျီတွဒ်အကြားလောင်ဂျီတွဒ်မှရွေးချယ်ပါ” ။ lat2 = targetlatitude - latdiff, lat1 = targetlatitude + latdiff, lon နဲ့ဆင်တူတယ်။ latdiff ~ = အကွာအဝေး / ၁၁၁ (ကီလိုမီတာအတွက်), ဒါမှမဟုတ်လတ္တီတွဒ် ၁ ဒီဂရီ ~ ၁၁၁ ကီလိုမီတာရှိတဲ့အတွက်မိုင်အဝေးမှာ / ၆၉ ကီလိုမီတာ (ကမ္ဘာမြေကြီးသည်အနည်းငယ်ဘဲဥပုံရှိသော်လည်းအနည်းငယ်ကွဲပြားသော်လည်းဒီရည်ရွယ်ချက်အတွက်လုံလောက်သည်) ။ londiff = distance / (abs (cos (deg2rad (လတ္တီတွဒ်)) * 111))) - သို့မဟုတ် 69 မိုင် (သင်မူကွဲကွဲပြားမှုကိုတွက်ချက်ရန်အနည်းငယ်ပိုကြီးသောစတုရန်းကိုယူနိုင်သည်) ။ ထို့နောက်၎င်း၏ရလဒ်ကိုယူပြီးလျှင် radial select သို့ထည့်ပါ။ Out-of-bounds coordinates များကိုမှတ်သားရန်မမေ့ပါနှင့်။ ဆိုလိုသည်မှာလက်ခံနိုင်သောလောင်ဂျီတွဒ်၏အကွာအဝေးသည် -1 မှ +111 နှင့်လက်ခံနိုင်သောလတ္တီတွဒ်၏အကွာအဝေးသည် -2 to +111 - အကယ်၍ သင်၏ latdiff သို့မဟုတ် londiff သည်ဤအကွာအဝေးအပြင်ဘက်သို့ရောက်လျှင် ။ သတိပြုရမည်မှာ၎င်းသည် chukotka ၏အစိတ်အပိုင်းနှင့် alaska ၏အစိတ်အပိုင်းတစ်ခုဖြတ်သန်းသော်လည်း၎င်းသည် pole မှ pole သို့ပစိဖိတ်သမုဒ္ဒရာမှတစ်ဆင့်တွက်ချက်မှုကိုသာသက်ရောက်သောကြောင့်၎င်းသည်အသုံးမပြုနိုင်ပါ။

    ဤအရာကိုကျွန်ုပ်တို့ပြီးမြောက်စေသည့်အရာမှာသင်ဤတွက်ချက်မှုကိုတွက်ချက်သည့်အမှတ်အရေအတွက်သိသိသာသာလျော့နည်းစေသည်။ သင့်တွင်ဒေတာဘေ့စ်တွင်ကမ္ဘာလုံးဆိုင်ရာအချက်ပေါင်းသန်းတစ်ရာခန့်အကြမ်းအားဖြင့်ညီမျှစွာဖြန့်ဝေပြီး ၁၀၀ ကီလိုမီတာအတွင်းသင်ရှာဖွေလိုပါကသင်၏ပထမဆုံး (အလျင်အမြန်) ရှာဖွေမှုသည်100ရိယာ ၁၀၀၀၀ စတုရန်းကီလိုမီတာရှိနိုင်သည်။ မျက်နှာပြင်အကျယ် ၅၀၀ မီတာစတုရန်းကီလိုမီတာ) ။ ဆိုလိုသည်မှာသင်သည်ရှုပ်ထွေးသောအကွာအဝေးတွက်ချက်မှုကိုအကြိမ်တစ်သန်းထက် ၂၀ ကြိမ်ပြုလုပ်သည်။

    • 21

      ဥပမာအားဖြင့်ကျွန်ုပ်တို့၏ ... စတုရန်း၏ "အချင်းဝက်" ကိုကြည့်နေသောကြောင့်၎င်းသည်ကီလိုမီတာ ၅၀ (၁၀၀ မဟုတ်) အတွင်းဖြစ်လိမ့်မည်။

      • 22

        စိတ်ကူးအကြံဥာဏ်! ငါတကယ်တော့အတွင်းပိုင်းစတုရန်းဆွဲဆွဲသော function ကိုရေးသားခဲ့သည်သူတစ် ဦး developer နှင့်အတူအလုပ်လုပ်ခဲ့ပြီးတော့တစ်ကမ္ဘာလုံးပတ်လည် 'squares' လုပ်သောကျန်ရှိသောအချက်များပါဝင်သည်နှင့်ဖယ်ထုတ်ရန်။ ရလဒ်သည်မယုံနိုင်လောက်အောင်မြန်ဆန်သောရလဒ်တစ်ခုဖြစ်သည် - သူသည်မိုက်ခရိုစက္ကန့်အတွင်းသန်းပေါင်းများစွာသောအမှတ်များကိုအကဲဖြတ်နိုင်သည်။

        အထက်တွင်ကျွန်ုပ်၏ချဉ်းကပ်ပုံသည်သေချာသည်။ ကျေးဇူးထပ်တင်ပါရစေ!

        • 23

          Doug၊

          ငါ lat long point တစ်ခု polygon အတွင်း၌ရှိမရှိအကဲဖြတ်ရန် mysql နှင့် php ကိုအသုံးပြုရန်ကြိုးစားနေသည်။ သင်၏တည်ဆောက်သူသူငယ်ချင်းကဒီအလုပ်ကိုဘယ်လိုလုပ်ရမယ်ဆိုတာနဲ့ပတ်သက်ပြီးဥပမာတစ်ခုထုတ်ဝေခဲ့လားသိလား။ ဒါမှမဟုတ်ဥပမာကောင်းတွေသိလား။ ကြိုပြီးကျေးဇူးပါပဲ။

  16. 24

    အားလုံးမင်္ဂလာပါ။ ဒါကကျွန်တော့်ရဲ့စမ်းသပ်မှု SQL statement ပါ။

    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 ကို (တစ်နည်းအားဖြင့်လမ်းများသုံးခြင်းစသည်တို့) တွင်တစ်နည်းနည်းဖြင့်ထည့်သွင်းရန်အလွန်ကောင်းပါသည်။ ခရီးသွားအရောင်းပြproblemနာအတွက်ထိရောက်သောဖြေရှင်းချက်ပေးနိုင်သော PHP တွင် simulated annealing လုပ်ဆောင်ချက်ကိုကျွန်ုပ်လုပ်ရသေးပါသေးသည်။ သို့သော်လည်းငါသည်သင်၏ code ကိုအဲဒီလိုလုပ်ဖို့ပြန်သုံးနိုင်လိမ့်မည်ဟုထင်ပါတယ်။

  18. 27

    ဟိုင်းဒေါက်ဂလပ်စ်
    ဤဆောင်းပါးအတွက်ကျေးဇူးတင်ပါသည်။ ကျွန်ုပ်သည်ကျွန်ုပ်ကိုအချိန်ကုန်သက်သာစေခဲ့သည်။
    ဂရုစိုက်ပါ,
    nimrod @အစ္စရေး

  19. 28

    ဆောင်းပါးကောင်း အချက်နှစ်ချက်အကြားအကွာအဝေးကိုမည်သို့တွက်ချက်ရမည်ကိုဖော်ပြသည့်ဆောင်းပါးများစွာကိုကျွန်ုပ်ရှာဖွေတွေ့ရှိခဲ့သော်လည်းကျွန်ုပ်သည် SQL snippet ကိုတကယ်ရှာဖွေခဲ့သည်။

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

    နောက်ဆုံးတော့ငါ့ရဲ့ပြproblemနာကိုဖြေရှင်းပေးနိုင်မယ့်ဒီစာမျက်နှာကိုရှာဖွေရန် ၂ ရက်ကြာသုတေသနပြု ကိုယ့် WolframAlpha ကိုပိုကောင်းအောင်ဆွဲထုတ်ပြီးကျွန်တော့်သင်္ချာကိုအံဝင်ခွင်ကျဖြစ်အောင်ကြည့်ပါ။ WHERE မှ HAVING သို့ပြောင်းလဲမှုသည်ကျွန်ုပ်၏ဇာတ်ညွှန်းကိုပုံမှန်လည်ပတ်နေသည်။ ကျေးဇူးတင်ပါတယ်

  25. 37
  26. 39

    ဒီဟာကိုငါတွေ့ပြီပထမစာမျက်နှာဖြစ်ချင်ရင်။ ကွဲပြားခြားနားသော command များကိုစစ်ဆေးပြီးနောက်၎င်းသည်စနစ်တကျအလုပ်လုပ်ရန်တစ်ခုတည်းသာရှိသည်။ ကျွန်ုပ်၏ကိုယ်ပိုင်ဒေတာဘေ့စ်နှင့်အညီအနည်းဆုံးပြောင်းလဲမှုများလိုအပ်သည်။
    ကျေးဇူးတင်ပါတယ်တွေအများကြီး!

  27. 40

    ဒီဟာကိုငါတွေ့ပြီပထမစာမျက်နှာဖြစ်ချင်ရင်။ ကွဲပြားခြားနားသော command များကိုစစ်ဆေးပြီးနောက်၎င်းသည်စနစ်တကျအလုပ်လုပ်ရန်တစ်ခုတည်းသာရှိသည်။ ကျွန်ုပ်၏ကိုယ်ပိုင်ဒေတာဘေ့စ်နှင့်အညီအနည်းဆုံးပြောင်းလဲမှုများလိုအပ်သည်။
    ကျေးဇူးတင်ပါတယ်တွေအများကြီး!

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

    ဒီပုံသေနည်းဟာအလုပ်လုပ်တယ်ဆိုတာငါသိတယ်၊ ဒါပေမယ့်ကမ္ဘာမြေရဲ့အချင်းဝက်ကိုထည့်သွင်းစဉ်းစားတယ်။ ကျေးဇူးပြုပြီးတစ်ယောက်ယောက်ကကျွန်တော့်ကိုထွန်းလင်းပေးနိုင်မလား။

  34. 49
  35. 50
  36. 52

    Douglas ကိုကျေးဇူးတင်ပါတယ်။ SQL Query ဟာကျွန်တော်လိုအပ်တာအတိအကျပါ။ အဲဒါကိုကျွန်တော်ကိုယ်တိုင်ရေးရမယ်လို့ထင်ခဲ့တယ် ငါ့ကိုလတ္တီတွဒ်လောင်ဂျီတွဒ်လေ့လာခြင်းကန့်သတ်ချက်မှငါ့ကိုကယ်တင်ခဲ့တယ်။

  37. 53
  38. 55
  39. 56

    ဒေါက်ဂလပ်, ဒီအံ့သြဖွယ်ကုဒ်အတွက်ကျေးဇူးတင်ပါတယ်။ ကျွန်ုပ်၏ GPS အသိုင်းအဝိုင်းပေါ်တယ်တွင်မည်သို့ပြုလုပ်ရမည်ကိုကျွန်ုပ်၏ ဦး ခေါင်းကိုကွဲထွက်သွားစေခဲ့သည်။ သငျသညျအကြှနျုပျကိုနာရီကယ်တင်ခြင်းသို့ရောက်ရ၏

  40. 58

    ဒီအထောက်အကူပြုဆောင်းပါးကိုတင်လိုက်ခြင်းအတွက်ကျေးဇူးတင်ပါတယ်။  
    ဒါပေမယ့်အကြောင်းတစ်ခုခုကြောင့်ငါမေးချင်ပါတယ်
    mysql db အတွင်းရှိ coord များနှင့် php သို့ထည့်ထားသည့် coord များအကြားအကွာအဝေးကိုမည်သို့ရနိုင်မည်နည်း။
    ပိုမိုရှင်းလင်းစွာဖော်ပြရန်အတွက်
    1.user သည် db နှင့်အသုံးပြုသူ၏ Coord များမှသတ်မှတ်ထားသောအချက်အလက်များကိုရွေးချယ်ရန် [id] ကိုထည့်ရမည်
    2. php ဖိုင်သည် [id] ကိုအသုံးပြုပြီး target data (coords) ကိုရယူပြီးအသုံးပြုသူနှင့်ပစ်မှတ်မှတ်အကွာအဝေးကိုတွက်ချက်ပါ

    ဒါမှမဟုတ်ရိုးရိုးအောက်ကကုဒ်နဲ့အကွာအဝေးကိုရနိုင်မလား။

    $ qry = "SELECT *, (((acos (အပြစ်တရား ((" ။ $ လတ္တီတွဒ်။ "* pi () / 180)) အပြစ်တရား ((` Latitude` * pi () / 180)) + cos (("။ $ လတ္တီတွဒ်။ ” * pi () / 180) * cos ((`Latitude` * pi () / 180)) cos (((“ $ လောင်ဂျီတွဒ်။ ” -` လောင်ဂျီတွဒ်) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) အကွာအဝေးအဖြစ် `MyTable` ဘယ်မှာအကွာအဝေး> =" ။ $ အကွာအဝေး။ " >>>> ဒီအကွာအဝေးကို“ ထုတ်ယူ” လို့ရလား။
    ကျေးဇူးထပ်တင်ပါရစေ,
    Timmy S က

  41. 60

    အိုကေ၊ ငါကြိုးစားခဲ့သမျှအလုပ်မဖြစ်ဘူး ဆိုလိုတာက၊ ငါ့မှာဘာတွေလုပ်နေလဲဆိုတာငါပြောတယ်၊ ဒါပေမယ့်အကွာအဝေးတွေကတော့ဝေးနေပြီ။

    ဒီကုဒ်မှာဘာမှားနေသလဲဆိုတာဘယ်သူ့ကိုမှမြင်နိုင်မလား။

    လျှင် (ထုတ်ပေး ($ _ POST ['တင်သွင်း']))) {$ z = $ _POST ['zipcode']; $ 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 mrk မီတာ, zip z1, zip z2 ဘယ်မှာ m.zipcode = z1.zipcode AND z2.zipcode = $ z AND (3963 * acos (ခြင်းကို (အပြစ်တရား (z2.lat / 57.2958)) * အပြစ်တရား (မီတာ။ 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 ['zipcode']၊ $ latitude1 = $ အတန်း ['lat']; $ longitude1 = $ အတန်း ['lon']; $ latitude2 = $ အတန်း ['y1']; $ longitude2 = $ အတန်း ['x1']; $ city = $ အတန်း ['city']; $ ပြည်နယ် = $ အတန်း ['ပြည်နယ်']; $ dis = getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = အကွာအဝေး ($ lat1, $ lon1, $ lat2, $ lon2); $ verified = $ row ['verified']; if ($ verified == '1') {ပဲ့တင်သံ ""; ပဲ့တင်သံ "" $ စတိုးဆိုင်။ ။ "; ပဲ့တင်သံ $ dis ။ " မိုင်ပေါင်းများစွာ"; ပဲ့တင်သံ ""; } အခြား {ပဲ့တင်သံ "" $ စတိုး။ ။ "; ပဲ့တင်သံ $ dis ။ " မိုင်ပေါင်းများစွာ"; ပဲ့တင်သံ ""; }}}

    ငါ့ရဲ့ functions.php ကုဒ်
    functionn getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ distance = (sin (deg2rad ($ latitude1)) * အပြစ် (deg2rad ($ latitude2))) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ အကွာအဝေး = acos ($ အကွာအဝေး); $ အကွာအဝေး = rad2deg ($ အကွာအဝေး); $ အကွာအဝေး = $ အကွာအဝေး * 60 * 1.1515; switch ($ unit) {case 'Mi': break; အမှု 'Km': $ အကွာအဝေး = $ အကွာအဝေး * 1.609344; } ပြန်လာ (ပတ်ပတ်လည် ($ အကွာအဝေး, 2)); }

    ကြိုတင်ပြီးကျေးဇူးပါပဲ

  42. 61
  43. 62

    ဟေ့ဒေါက်ဂလပ်၊ မင်းရဲ့ပထ ၀ ီအယူအဆနဲ့ကုဒ်ရဲ့ရှင်းပြချက်ကိုတကယ်စိတ်ဝင်စားဖို့ကောင်းတယ်။ ကျနော့်ရဲ့တစ်ခုတည်းသောအကြံပေးချက်ကတော့ space (spack) နဲ့ display အတွက် code ကိုစုတ်ရန် (ဥပမာ Stackoverflow ကဲ့သို့) ။ သင်ဟာနေရာချွေတာချင်တယ်ဆိုတာနားလည်တယ်၊ ဒါပေမယ့်သမားရိုးကျကုဒ်နံပါတ် / ထစ်တာကကျွန်တော့်အတွက်ပရိုဂရမ်မာတစ်ယောက်အနေနဲ့စာဖတ်ခြင်းနှင့်ခွဲထုတ်ခြင်းကပိုပြီးလွယ်ကူစေလိမ့်မယ်။ ဘာပဲဖြစ်ဖြစ်ဒါကသေးငယ်တဲ့အရာ။ ကြီးစွာသောအလုပ်တက်ထားပါ။

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

    ရွေးချယ်ထားသောနေရာတွင်ဖော်မြူလာကိုနှစ်ကြိမ်အသုံးပြုရန် (mysql 5.9) ပိုမိုမြန်ဆန်ပုံရသည် -
    $ ပုံသေနည်း = "(((acos (အပြစ်တရား ((" ။ $ လတ္တီတွဒ်။ * pi () / 180)) အပြစ်တရား ((`Latitude` * pi () / 180)) + cos ((" ။ $ လတ္တီတွဒ်) ။ "* pi () / 180)) * cos ((` Latitude` * pi () / 180)) * cos (((“ ဒေါ်လာလောင်ဂျီတွဒ်” - `လောင်ဂျီတွဒ်) * pi () / 180))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) ";
    $ sql = 'SELECT *,' ။ $ ပုံသေနည်း။ ' ဘယ်မှာစားပွဲကနေအကွာအဝေးအဖြစ် '.. $ ပုံသေနည်း။ ' <= '$ အကွာအဝေး;

  51. 71
  52. 72

    ဤ article.it ရဲ့ညှပ်မှုအတွက်ကျေးဇူးတင်ပါတယ်။
    ပထမဆုံး PHP ကို“ Personal Home Page” လို့ခေါ်တဲ့ရိုးရှင်းတဲ့ scripting platform တစ်ခုအဖြစ်ဖန်တီးခဲ့တယ်။ ယနေ့ခေတ် PHP (Hypertext Preprocessor ၏အတိုကောက်) သည် Microsoft ၏ Active Server Pages (ASP) နည်းပညာ၏အခြားနည်းလမ်းတစ်ခုဖြစ်သည်။

    PHP သည်ပွင့်လင်းသောအရင်းအမြစ် server-side ဘာသာစကားတစ်ခုဖြစ်ပြီး dynamic web page များကိုဖန်တီးရန်အသုံးပြုသည်။ ၎င်းကို HTML ထဲ၌ထည့်နိုင်သည်။ PHP ကိုများသောအားဖြင့် Linux / UNIX ဝဘ်ဆာဗာများပေါ်တွင် MySQL ဒေတာဘေ့စ်နှင့်တွဲဖက်အသုံးပြုလေ့ရှိသည်။ ၎င်းသည်လူကြိုက်အများဆုံး scripting language ဖြစ်သည်။

  53. 73

    အထက်တွင်ဖော်ပြထားသောဖြေရှင်းချက်မှာအလုပ်မလုပ်ပါ
    ကျွန်တော်ပြောင်းရန်လိုအပ်သည်

    $ qqq = "SELECT *, (((acos (အပြစ်တရား ((။ ။ $ လတ္တီတွဒ်။ " * pi () / 180)) အပြစ်တရား ((`latt` * pi () / 180)) + cos ((" ။ $ လတ္တီတွဒ် "* pi () / 180) ။ * cos ((` latt` * pi () / 180) * cos ((($ $ လောင်ဂျီတွဒ်။ "-` longt`) * pi () / 180 ။ ) `register` FROM မှအကွာအဝေးအဖြစ်))) * 180 / pi ()) * 60 * 1.1515);

  54. 75

    ကျေးဇူးတင်ပါတယ်ဆရာ .. perfectlyုံ rok wing perfectly perfectly sir perfectly but but but but but but but but but but but but but but but but but but sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir sir

    ကြိုပြီးကျေးဇူးပါပဲ။

  55. 76

    မင်္ဂလာပါ၊ ကျေးဇူးပြုပြီးဒီကိစ္စနဲ့ပတ်သက်ပြီးမင်းရဲ့အကူအညီလိုအပ်ပါလိမ့်မယ်။

    ကျွန်ုပ်၏ ၀ က်ဘ်ဆာဗာကိုရယူရန်တောင်းဆိုမှုတစ်ခုပြုလုပ်ခဲ့သည် http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ လတ္တီတွဒ်
    -2.23389 = $ လောင်ဂျီတွဒ်
    20 = ငါရယူလိုသောအကွာအဝေး

    ဒါပေမဲ့မင်းက formula ကိုအသုံးပြုပြီး၊ ကျွန်တော့် db ထဲက rows အားလုံးကိုပြန်လည်ရယူသည်

    $ results = DB :: select (DB :: raw (“ SELECT *, (((acos (အပြစ် ((“ $ လတ္တီတွဒ်။ ” pi () / 180)) * အပြစ် ((lat * pi () / 180) )) cos ((။ ။ $ လတ္တီတွဒ်။ * pi () / 180) * cos ((lat * pi () / 180) * cos (((။ $ လောင်ဂျီတွဒ်။ ။ - lng) - pi) * pi ( ) / 180))))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) အကွာအဝေးအဖြစ်အကွာအဝေး> = "$ အကွာအဝေး။ ));

    [{"id": 1 "name": "Frankie Johnnie & Luigo Too", "လိပ်စာ": "939 W El Camino Real, Mountain View, CA", "lat": 37.386337280273, "lng": - 122.08582305908, "အကွာအဝေး": 16079.294719663}, {"id": 2, "name": "Amici ၏ East Coast Pizzeria", "address": "790 Castro St, Mountain View, CA", "lat": 37.387138366699, "lng": -122.08323669434, "အကွာအဝေး": 16079.175940152}, {"id": 3, "name": "Kapp's Pizza Bar & Grill", "လိပ်စာ": "191 Castro St, Mountain View, CA", "လတ်": 37.393886566162, "lng": - 122.07891845703, "distance": 16078.381373826}, {"id": 4, "name": "စားပွဲဝိုင်းပီဇာ: Mountain View", "လိပ်စာ": "570 N Shoreline Blvd, Mountain View, CA", "လတ်" - ၃၇.၄၀၂၆၂၇၄၀၄၇၉၊ "lng" - - ၁၂၂.၇၉၃၅၃၃၂၅၂၊ အကွာအဝေး - - ၁၆၀၇၇.၄၀၅၄၀၅၈၂}၊ {အိုင်ဒီ - ၅၊ ကြည့်ရန်, CA "," လတ် ": 37.402652740479," lng ": - 122.07935333252," အကွာအဝေး ": 16077.420540582}, {" id ": 5," အမည် ":" Oregano ရဲ့သစ်သား - မီးရှို့ပစ်ပီဇာ "," လိပ်စာ ":" 619 El Camino ရီးရဲလ်၊ Los Altos, CA”,“ lat”: 37.394012451172,“ lng”: - 122.09552764893,“ distance”: 16078.563225154}, {“ id”: 6,“ name”:“ အရက်ဆိုင်နှင့်ကင်”,” လိပ်စာ”:“ 4546 Whiteley Street, Manchester,”“ lat”: 37.401725769043,“ lng”: - 122.11464691162,“ distance”: 16077.937560795}]

    မိုင် ၂၀ ရှိတဲ့အတန်းတွေကိုကျွန်တော်ပြန်လည်ထုတ်ယူချင်တယ်၊ ဒါပေမယ့်ဒါကအတန်းတွေအားလုံးကိုတင်တယ် ငါဘာမှားနေတာလဲ

  56. 77

    ငါကတူတဲ့စုံစမ်းမှုတစ်ခုကိုရှာနေတယ်၊ ​​နည်းနည်းအရှိန်ရသွားတယ်၊ ဒါကဒါကသြဒီနိတ်တစ်ခုစီရဲ့ ၂ မိုင်အတွင်းမှာရှိတဲ့သြဒီနိတ်အားလုံးကိုအုပ်စုလိုက်ပေါင်းပြီးတော့အုပ်စုတစ်ခုစီမှာသြဇာဘယ်လောက်ကိုရေတွက်ပြီးသြဒီနိတ်အများဆုံးရှိတဲ့အုပ်စုတစ်စုကိုထုတ်ပေးရင်တောင် မင်းမှာသြဒီနိတ်အရေအတွက်အများဆုံးရှိတဲ့အုပ်စုတွေထဲကအုပ်စုတစ်စုထက်ပိုရှိတယ်၊ တူညီတဲ့အကြီးဆုံးနံပါတ်ရှိတဲ့အုပ်စုတွေကနေကျပန်းအုပ်စုကိုရိုးရိုးရှင်းရှင်းထုတ်လိုက်ပါ။

သင်ဘယ်လိုထင်ပါလဲ?

ဤ site ကိုစပမ်လျှော့ချဖို့ Akismet ကိုအသုံးပြုသည်။ သင့်ရဲ့ comment ကိုဒေတာများကိုဆောင်ရွက်ပြီးဖြစ်ပါတယ်လေ့လာ.