صدیقه مرادی
4 سال پیش توسط صدیقه مرادی مطرح شد
3 پاسخ

محاسبه مسافت بین یک نقطه با چند نقطه ی دیگر

@hesammousavi
سلام دوستان
در لاراول چطور میشه مسافت بین یک نقطه ثابت با چند نقطه ی دیگه رو محاسبه کرد و مسافتایی رو که از یه مقدار مثلا 100 کیلومتر کمتر باشن رو نمایش داد، اگه طول و عرض اون نقطه مشخص باشه و طول و عرض بقیه ی نقاط هم قبلا در دیتا بیس ذخیره شده باشه


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
1

بستگی به مقدار دقت لازمه داره.. مثلا ۲ راه زیر رو در نظر بگیرید

۱. استفاده از فرمول نقاط روی سطح دایره که یه فرمول ریاضی داره (که هم داخل PHP و هم در سطح دیتابیس قابل محاسبه هست) اما ممکنه خیلی دقیق نباشه.. چون یک دایره کاملا مسطح رو حساب میکنه و با حساب نکردن پستی و بلندی ها مقدار به دست اومده دقت چندانی نداره

۲. استفاده از وب‌سرویس های تخمین فاصله که مسافت رو بر حسب خیابون ها و مسیرهای رفت و آمد محاسبه میکنند


صدیقه مرادی
@sedighemoradi72 4 سال پیش آپدیت شد
0

@ali.bayat
مشکل اصلی من محاسبه ی مسافت بین دو نقطه نیست چون با یکی از این دو روش به دست میاد مشکلم اینه که چطور فاصله یه نقطه رو با چن تا نقطه دیگه که تو دیتا بیس ذخیره هستن رو محاسبه کنم

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

به عنوان مثال با استفاده از متد بالا میشه فاصله بین دو نقطه رو محاسبه کرد اما من میخام ببینم راهی هست که این متد رو تو یه حلقه بذارم و فاصله ی بین یک نقطه با چن تا نقطه دیگه رو دونه دونه محاسبه کنم و در آخر مسافتای خاصی مثلا کمتر از 100 کیلومتر و نمایش بدم

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

بله میتونی مختصات مورد نظرت رو توی آرایه بگذاری
و آرایه رو پیمایش کنی و فاصاه هر کدوم رو تا دیگری حساب کنی و با هم جمع کنی


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام