پي ايڇ پي ۽ ايس ايس ايل: هوريسين فارمولا سان طول و عرض جي طول و عرض جي وچ واري عظيم سرڪل جي فاصلي جو حساب يا ڪورس ڪريو

Haversine Formula ـ پي ايڇ پي يا آئي ايس ايل ايل سان زبردست سرڪل جي فاصلي جو حساب ڪريو

هن مهيني مان GIS جي حوالي سان PHP ۽ MySQL ۾ ڪافي حد تائين پروگرام ڪري رهيو آهيان. نيٽ جي مٿان ڇڪڻ ، مون اصل ۾ ڪجهه وقت ڳولڻ مشڪل هو جاگرافيائي حساب ٻن جڳهن جي وچ ۾ فاصلو ڳولڻ لاءِ انهي ڪري مون انهن کي هتي شيئر ڪرڻ چاهيو.

عظيم نقشي جي مفاصلي سان فلائيٽ ميپ يورپ

ٻن نقطن جي مفاصلي کي طئي ڪرڻ جو سادو طريقو پيٿاگورين فارمولا استعمال ڪري رهيو آهي ته هڪ مثلث جي هائپوٽوزس (A² + B² = C²) جي حساب سان. هي سڃاتو وڃي ٿو ايليڊين جو مفاصلو.

اها هڪ دلچسپ شروعات آهي پر جغرافيا سان لاڳو ڪونه ٿيو آهي ڇو ته ويڪرائي andاڪ ۽ ڊگھائي لائينن جي وچ ۾ فاصلو آهي هڪ برابر مفاصلو نه آهي حصو. جئين توهان جيترو ويجهو ويجهو آهيو ، طول و عرض جي لڪيرون وڌيڪ ڌار ٿي وڃن ٿيون. جيڪڏهن توهان ڪجهه قسم جي سادي مثلثي مساوات استعمال ڪريو ٿا ، اهو فاصلو هڪ هنڌ ۾ صحيح طور تي ماپ ڪري سگهي ٿو ۽ ٻئي ۾ ڏا wrongو غلط ، ڌرتي جي وکر جي ڪري آهي.

عظيم سرڪل جو مفاصلو

اهي رستا جيڪي زمين جي چوڌاري ڊگهي فاصلي تائين سفر ڪيا ويا آهن عظيم سرڪل جو مفاصلو. اهو آهي ... هڪ ڪنڊ تي ٻن پوائنٽن جي وچ ۾ تمام نن distanceڙو فاصلو ڀت واري نقشي ۾ پوائنٽن کان مختلف آهي. انهي حقيقت کي گڏ ڪريو ته ويڪرائي andاڪ ۽ ڊگھائي لائين برابر نه آهن ... ۽ توهان هڪ ڏکيو حساب ڪتاب ڪيو آهي.

هتي شاندار وڊيو وضاحت آهي هتي بهترين حلقن جو ڪهڙو ڪم ڪار آهي.

هوورزين جو فارمولا

ڌرتيءَ جي طمع جو استعمال ڪندي فاصلو شامل ڪيو ويو آهي Haversine فارمولا، جيڪو زمين جي گردش جي اجازت ڏيڻ لاءِ trigonometry استعمال ڪري ٿو. جڏهن توهان زمين تي 2 هنڌن جي مفاصلي کي ڳولي رهيا آهيو (جيئن ڪوڙي ٻڏي ويو آهي) ، هڪ سڌي لڪير واقعي هڪ آرڪ آهي.

هي فضائي پرواز ۾ لاڳو آهي - ڇا توهان ڪڏهن پروازن جو اصل نقشو ڏٺو آهي ۽ محسوس ڪيو آهي ته اهي محفوظ آهن. ان جو سبب اهو آهي ته اهو سڌي طرح مقام کان سڌو ٻن پوائنٽن جي وچ ۾ هڪ گهيري ۾ اڏامڻ لاءِ نن shڙو آهي.

پي ايڇ پي: طول ۽ طول بلد جي 2 پوائنٽن جي وچ ۾ فاصلو حساب ڪريو

بهرحال ، هتي پي ايڇ پي فارمولا ٻن پوائنٽن جي فاصلي کي حساب ڪرڻ لاءِ آهي (مائل بمقابلي ڪلوميٽر تبديلي سان) ٻه عدد جڳهن تي گول.

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 ڪري. هن مثال ۾ ، مان پنهنجي ايس ٽي ايس ايل ۾ مائي ٽيبل جي سوال ڪري رهيو آهيان اهي سڀ رڪارڊ ڳولڻ لاءِ جيڪي $ ليوٽ ۽ $ ڊگھائي تي منهنجي جڳهه تي متغير $ فاصلي (ميل ۾) کان گهٽ يا برابر آهن.

سڀ رڪارڊ کي خاص ۾ واپس آڻڻ جي لاءِ سوال فاصلي ڊيگهه ۽ طول و عرض جي ٻن پوائنٽن جي وچ ۾ ميلن ۾ مفاصلو طئي ڪندي:

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

توهان کي انهي کي ترتيب ڏيڻ جي ضرورت پوندي.

  • $ ڊگھائي - هي پي ايڇ پي جو متحرڪ آهي جتي آئون پوائنٽ جي ڊگھائي گذاري رهيو آهيان.
  • $ طول و عرض - هي پي ايڇ پي جو متحرڪ آهي جتي آئون پوائنٽ جي ڊگھائي گذاري رهيو آهيان.
  • $ فاصلو - هي اهو مفاصلو آهي جنهن کي توهان سڀني ريڪارڊ گهٽ يا برابر ڳولڻ چاهيندا.
  • ميز - هي ٽيبل آهي… توهان ان کي پنهنجي ٽيبل نالي سان مٽائڻ چاهيندا.
  • طول و عرض - اهو توهان جي طوالت جو ميدان آهي.
  • ڊگھائي - اهو توهان جي ڊگهائپ جو ميدان آهي.

ايس ايل ايل: ڪلوميٽر ۾ طول و عرض ۽ ڊگھائي کي استعمال ڪندي فاصلن کي حساب ڪندي هڪ حد ۾ سمورا رڪارڊ حاصل ڪرڻ

۽ هتي منهنجي ايس ايس ايل ۾ ڪلوميٽر استعمال ڪندي SQL سوال آهي:

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

توهان کي انهي کي ترتيب ڏيڻ جي ضرورت پوندي.

  • $ ڊگھائي - هي پي ايڇ پي جو متحرڪ آهي جتي آئون پوائنٽ جي ڊگھائي گذاري رهيو آهيان.
  • $ طول و عرض - هي پي ايڇ پي جو متحرڪ آهي جتي آئون پوائنٽ جي ڊگھائي گذاري رهيو آهيان.
  • $ فاصلو - هي اهو مفاصلو آهي جنهن کي توهان سڀني ريڪارڊ گهٽ يا برابر ڳولڻ چاهيندا.
  • ميز - هي ٽيبل آهي… توهان ان کي پنهنجي ٽيبل نالي سان مٽائڻ چاهيندا.
  • طول و عرض - اهو توهان جي طوالت جو ميدان آهي.
  • ڊگھائي - اهو توهان جي ڊگهائپ جو ميدان آهي.

مون انٽرنيشنل ميپنگ پليٽ فارم ۾ اهو ڪوڊ استعمال ڪيو جيڪو اسان اتر آمريڪا جي 1,000،XNUMX هنڌن سان پرچون اسٽور جي لاءِ استعمال ڪيو ۽ اهو سهڻي نموني ڪم ڪيو.

77 تبصرا

  1. 1

    شيئر ڪرڻ جي وڏي مهرباني. هي هڪ آسان ڪاپي ۽ پيسٽ نوڪري هئي ۽ زبردست ڪم ڪري ٿي. توهان مون کي گهڻو وقت بچايو آهي.
    ايف آءِ جي لاءِ ڪنهن کي بندرگاهه ڪرڻ لاءِ:
    ٻٽي deg2rad (ٻٽي deg) {واپسي deg * (3.14159265358979323846 / 180.0) ؛ }

  2. 2

    پوسٽنگ جو تمام سٺو ٽڪرو - تمام سٺو ڪم ڪيو - مون کي صرف ڊگهو ڊگهو رکڻ واري ٽيبل جو نالو تبديل ڪرڻو هو. اهو تمام تيز ڪم ڪندو آهي .. مون وٽ ڪافي ڊگهو ڊگهو آهي (<400) پر مان سمجهان ٿو ته اهو بهتر نموني سان ٿيندو. سٺي سائيٽ پڻ - مون صرف هن کي پنهنجي del.icio.us اڪائونٽ ۾ شامل ڪيو آهي ۽ باقاعدگي سان واپس چيڪ ڪندس.

  3. 4
  4. 5

    مون س dayو ڏينهن فاصلو جي حساب سان ڳولي ورتو ۽ هاروريس الگورٿم ڏٺائين ، توهان کي ايس سي ايل بيان ۾ رکڻ بابت مثال ڏيڻ جي مهرباني. مهرباني ۽ سلام ، دانيال

  5. 8

    مان سمجهان ٿو ته توهان جي SQL ڪنهن بيان جي ضرورت آهي.
    WHERE فاصلي جي بدران <= $ مفاصلو جيڪو توهان کي ضرورت ٿي سگهي ٿي
    HAVING فاصلو استعمال ڪريو <= $ مفاصلو

    ٻي صورت ۾ مون کي وقت ۽ توانائي جو هڪ حصو بچائڻ جي مهرباني.

    • 9

      ايم ڪيو ايم،

      جيڪڏهن توهان ڪنهن قسم جي GROUP BY بيان سان گڏ ڪري رهيا آهيو ، توهان کي هاڪڻ جي ضرورت پوندي. مان مٿي theاڻايل مثال ۾ ائين نه ڪري رهيو آهيان.

      Doug

  6. 10
  7. 11
  8. 12

    هن ڪوڊ کي شيئر ڪرڻ لاءِ توهان جي وڏي مهرباني. اهو مون کي ترقي جي گهڻو وقت بچايو. پڻ ، توهان جي پڙهندڙن جي مهرباني ان جي نشاندهي ڪرڻ لاءِ ته مائي ايس ايس ايل ايل 5.x لاءِ هڪ بيان ڪرڻ ضروري آهي. ڏا helpfulو مددگار.

  9. 14

    مٿي ڏنل فارمولا مون کي گهڻو وقت بچائي رهيو آهي. توهان جي وڏي مهرباني.
    مون کي پڻ NMEA فارميٽ ۽ درجي جي وچ ۾ مٽائڻو آهي. مون هن پيج تي هيٺ ڏنل حصي ۾ هڪ URL ٺاهيو. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    ڇا ڪنهن کي خبر آهي ته انهي جي تصديق ڪيئن ڪجي؟

    توهان جي مهرباني!
    هيري

  10. 15
  11. 16

    مون اهو پڻ مليو آهي ته ڪٿي مون لاءِ ڪم نه ڪيو آهي. انهي کي HAVING تبديل ڪيو ۽ هر شي مڪمل طور تي ڪم ڪري ٿي. پهرين ۾ مون تبصرو نه پڙهيو ۽ هڪ نئون منتخب ٿيل استعمال ڪيو. ٻئي ٺيڪ ڪم ڪندا.

  12. 17
  13. 18

    ناقابل يقين حد مددگار ، توهان جي وڏي مهرباني! مون کي "ڪيڏانهن" جي بدران نئين "HAVING" سان ڪجهه مسئلا ٿي رهيا هئا ، پر هڪ ڀيرو مون هتي تبصرو پڙهيو (مايوسي ۾ = ڏند ڪلاڪ پيسڻ کان پوءِ مايوس = پي) ، مون انهي کي سٺي نموني ڪم ڪيو. توهان جي مهرباني _ _ ^

  14. 19
  15. 20

    ياد رهي ته هڪ منتخب بيان جهڙوڪ ته تمام گهڻو ڳجهو هوندو ۽ تنهنڪري سستي. جيڪڏهن توهان وٽ اهي گهڻا سوال آهن ، اهو تڪڙو شيون ٿي سگهي ٿو.

    هڪ تمام گهٽ شديد رويو اهو آهي ته SQUARE ايراضي استعمال ڪندي پهريون (خام) چونڊيو وڃي جيڪو هڪ حسابيل فاصلي سان بيان ٿيل آهي يعني “tablename” مان چونڊيو * جتي lat1 ۽ lat2 جي وچ واري ويڪرائي ۽ lon1 ۽ lon2 جي وچ ۾ طول و عرض. lat1 = targetlatitude - latdiff ، lat2 = targetlatitude + latdiff ، ساڳي ريت اڪيلائي سان. latdiff ~ = مفاصلو / 111 (ڪلوميٽر لاءِ) ، يا فاصلو / 69 ميلن کان وٺي 1 درجه طول بلد ~ 111 ڪلوميٽر (ٿورڙو تڪرار جڏهن زمين ٿورو اوول آهي ، پر هن مقصد لاءِ ڪافي). لنڊف = فاصلو / (abs (cos (deg2rad (latitude)) * 111)) - يا 69 ميل (توهان حقيقت ۾ تغيرات جي حساب لاءِ ٿورو وڏو مربع وٺي سگهو ٿا). پوءِ انهي جو نتيجو وٺو ۽ کيس راڊيڪل چونڊ ۾ کارائي ڇڏيو. بس ٻاهرين سرحدن جي تعاون سان حساب نه وساريو- يعني قابل قبول طول و عرض جي حد -180 کان +180 آهي ۽ قابل قبول طول و عرض جي حد آهي -90 کان +90- جي صورت ۾ توهان جو لاطينيف يا لنڊف انهي حد کان ٻاهر هلندو آهي. . ياد رکو ته اڪثر صورتن ۾ اهو لاڳو ناهي ٿي سگهندو ڇاڪاڻ ته اهو صرف هڪ قطب کان قطب تائين سمنڊ جي رستي مان گذري حساب تي اثر انداز ڪندو آهي ، جيتوڻيڪ اهو چوڪوٽڪا ۽ الاسڪا جي حصي کي ٽوڙيندو آهي.

    جيڪو اسان ان کي حاصل ڪيو ٿا پوائنٽن جي تعداد ۾ هڪ اهم گھٽتائي آهي جنهن جي خلاف توهان اهو حساب ڪتاب ڪيو ٿا. جيڪڏهن توهان وٽ ڊيٽابيس ۾ هڪ ملين گلوبل پوائنٽس آهن جيڪي برابر طريقي سان ورهايل آهن ۽ توهان 100 ڪلوميٽر اندر ڳولڻ چاهيو ٿا ، ته پوءِ توهان جي پهرين (تيز) ڳولا هڪ ايراضي 10000 اسڪوائر ڪلوميٽر آهي ۽ ممڪن طور تي 20 نتيجا حاصل ڪندو تقريبن 500M چورس ڪلو ميٽر جي ايراضي واري ايراضي ، جنهن جو مطلب آهي ته توهان پيچراڻ واري فاصلي جي حساب کي هن سوال جي لاءِ 20 ڀيرا بدران هڪ ڀيرو XNUMX ڀيرا هلائي رهيا آهيو.

    • 21

      مثال ۾ نن mistakeي غلطي… جيڪا 50 ڪلوميٽر جي اندر هوندي (نه 100) ڇاڪاڻ ته اسان پنهنجي “مربع” جي ريڊيس تي ڏسي رهيا آهيون.

      • 22

        تصوراتي مشورا! مون اصل ۾ هڪ ڊولپر سان گڏ ڪم ڪيو جنهن هڪ فنڪشن لکيو جيڪو اندرين چوڪ کي ڪ andيو ۽ پوءِ هڪ تجريدي ڪم جيڪو باقي نقطن کي شامل ۽ ڪludeڻ جي طول و عرض جي گرد چوڪيون ٺاهي ڇڏيو. نتيجو هڪ ناقابل يقين حد تائين تيز نتيجو هو - هو مائڪرو سيڪنڊ ۾ لکين پوائنٽن جو اندازو ڪري سگهي ٿو.

        منهنجو نقشو مٿي وارو ضرور آهي “خام خيالي” پر قابل آهي. ٻيهر مهرباني!

        • 23

          ڊوگ ،

          مان ايس ايس ايل ۽ پي ايڇ کي استعمال ڪرڻ جي ڪوشش ڪري رهيو آهيان انهي جي جاچ ڪرڻ جي لاءِ ته ڇا ڊگهو ڊگهو نڪتو هڪ قوتون جي اندر آهي. ڇا توهان ifاڻو ٿا ته توهان جي ڊولپر دوست ڪنهن ڪم کي مڪمل ڪرڻ جي لاءِ ڪي مثال شايع ڪيا. يا توهان کي ڪنهن سٺي نموني knowاڻو ٿا؟ اڳواٽ شڪريو.

  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

    ۽ مصلل اهو ٻڌائي رهيو آهي ته اهو فاصلو ، ڪالم وانگر موجود ناهي ، آئون آرڊر استعمال ڪري سگهان ٿو ، مان ڪٿي به ڪري سگهان ٿو ، ۽ اهو ڪم ڪري ٿو ، پر ان سان نه…

  17. 26

    هي زبردست آهي ، البته اهو ايئن آهي جيئن پکي پکي. ان لاءِ گوگل نقشه واري اي پي کي شامل ڪرڻ جي ڪوشش ڪندي اسان کي ڪنهن طرح سان شامل ڪرڻ جي لاءِ (شايد روڊن وغيره استعمال ڪرڻ) سٺو ٿيندو. مون کي اڃا تائين پي ايڇ پي ۾ هڪ سولي انجڻ ٺاهڻ وارو ڪم ڪرڻو آهي جيڪو سفر ڪندڙ وڪرو ڪندڙ مسئلي جي موثر حل پيش ڪرڻ جي قابل هوندو. پر مان سمجهان ٿو ته آئون ان جي ڪم لاءِ توهان جو ڪوڊ ٻيهر استعمال ڪري سگهان ٿو.

  18. 27
  19. 28

    سٺو مضمون! مون ڪيترن ئي مضمونن کي مليو جئين بيان ڪيو ته ٻن نقطن جي مفاصلي کي ڪئين حساب ڪجي پر مان واقعي واقعي SQL snippet جي ڳولا ڪري رهيو هوس.

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

    2 ڏينهن جي تحقيق آخرڪار هي پيج ڳولهڻ جو منهنجو مسئلو حل ٿي ويو. ڏسجي ٿو بهتر آءُ منهنجي وولفرام الفا کي ڪ bي ڇڏيندس ۽ منهنجي رياضي کي مٿان صاف ڪندي. WHERE کان HAVING کان تبديلي منهنجي اسڪرپٽ ڪم جي ترتيب ۾ آهي. توهان جي مهرباني

  25. 37
    • 38

      مهرباني جورگي مون ڪالم حاصل ڪيو ’مفاصلي‘ کي نه مليو. هڪ ڀيرو آئون بدلائي ويس جتي هڪ ڀيرو اهو حرف وانگر ڪم ڪيو!

  26. 39

    ڪاش اهو پهريون صفحو مون کي هن تي مليو هجي ها. ڪيترن ئي مختلف حڪمن جي ڪوشش ڪرڻ کانپوءِ اهو واحد هو جيڪو صحيح ڪم ڪرڻ جي لاءِ ، ۽ گهٽ ۾ گهٽ تبديلين سان منهنجي پنهنجي ڊيٽابيس کي موزون ڪرڻ جي ضرورت هئي
    تمام گهڻو مهرباني!

  27. 40

    ڪاش اهو پهريون صفحو مون کي هن تي مليو هجي ها. ڪيترن ئي مختلف حڪمن جي ڪوشش ڪرڻ کانپوءِ اهو واحد هو جيڪو صحيح ڪم ڪرڻ جي لاءِ ، ۽ گهٽ ۾ گهٽ تبديلين سان منهنجي پنهنجي ڊيٽابيس کي موزون ڪرڻ جي ضرورت هئي
    تمام گهڻو مهرباني!

  28. 41
  29. 42
  30. 43

    مان نه ٿو سمجهان ته ڪوڊ هاڻ ڏيکاريو پيو وڃي. ٿي سگهي ٿو اھو فائر فائڪس ھجي؟

  31. 45
  32. 46
  33. 47

    آئون thisاڻان ٿو ته اهو فارمولا ڪم ڪري ٿو ، پر مان نه ٿو ڏسي سگهان ته زمين جي ريڊس کي ڪهڙي حساب ۾ رکيو ويو آهي. ڇا ڪو مون کي روشن ڪري سگهي ٿو؟

  34. 49
  35. 50

    عظيم شيون ڊگلس. ڇا توهان ٻئي پوائنٽ جي لانگ / لٽ / بيئرنگ کي چونڊي واري پوائنٽ حاصل ڪرڻ جي ڪوشش ڪئي آهي؟

  36. 52

    توهان جي مهرباني ڊگگس ، ايس ايس ايل سوال واقعي آهي جيڪا مون کي گهربل هئي ، ۽ مون سمجهيو ته مون کي اهو به پاڻ لکڻ گهرجي. توهان مونکي غالبا ڪلاڪ ڪلاڪ واري ويڪرائي learningاڪ واري سکيا مان بچايو آهي!

  37. 53
    • 54

      پطرس ، مهرباني ڪري ٻين راءِ کي هجو. ظاهر آهي ته ڪجهه ماڻهن ڪيڏانهن وڃڻ يا الڳ رهڻ لاءِ هڪ مختلف نحو استعمال ڪرڻي هئي.

  38. 55
  39. 56

    ڊگلس ، توهان جي هن حيرت واري ڪوڊ لاءِ مهرباني. جي پي ايس ڪميونٽي پورٽل تي اهو ڪئين ڪجي ته مان پنهنجو سر ٽوڙي رهيو آهيان. توهان مونکي ڪلاڪ بچايو آهي.

  40. 58

    هي مددگار مضمون پوسٽ ڪرڻ لاءِ مهرباني ،  
    پر ڪجهه سببن جي ڪري پڇڻ چاهيان ٿو
    ڪيئن استعمال ڪجي mysql db ۽ coords جي وچ ۾ فاصلو ڪيئن پي ايڇ ۾ داخل ٿيل صارفن پاران؟
    وڌيڪ وضاحت لاءِ.
    1. صارف کي ڊي بي کان مخصوص ڊيٽا چونڊڻ لاءِ ۽ [يوزر] کي پاڻ جي خبرن کي داخل ڪرڻ لاءِ [id] داخل ڪرڻو پوندو
    2. php فائل حاصل ڪريو ھدف ڊيٽا (ڪنڊ) [id] استعمال ڪندي ۽ پوءِ حساب ڪريو صارف ۽ ھدف پوائنٽ جي وچ ۾

    يا صرف هيٺ ڏنل ڪوڊ مان فاصلو حاصل ڪري سگهندو؟

    $ qry = "SELECT * ، ({(acos (sin ((". $ latitude. "* pi () / 180)) sin ((" Latitude "* pi () / 180) $ Latitude. "* pi () / 180)) * cos ((" Latitude "* pi () / 180)) * cos ((" 180 / pi ()) * 180 * 60 * 1.1515) جئين فاصلو "MyTable" ڪٿان جو فاصلو> = ". $ مفاصلو." >>>> ڇا مان اتان کان فاصلو ”ڪ takeي سگهان ٿو“؟
    ٻيهر مهرباني ،
    ٽامي ايس

    • 59

      ڪڏهن به ناهي ، مان سمجهان ٿو ته "فنڪشن" پي ايڇ ڊي ۾ ڪيئن ڪم ڪري ٿو
      $ dis = getDistanceBetweenPointsNew ($ userLati، $ userLongi، $ lati، $ longi، $ unit = 'Km')
      وڏي وڏي مهرباني!! 

  41. 60

    ٺيڪ ، سڀ ڪجهه جيڪو مون ڪوشش ڪيو آهي اهو ڪم نه ڪري رهيو آهي. منهنجو مطلب ، مون وٽ ڇا ڪم آهي ، پر فاصلا دور آهن.

    ڇا ڪو ڏسي سگهي ٿو ته انهي ڪوڊ سان ڇا غلط آهي؟

    جيڪڏهن (جاري ڪيو ويو ($ _ POST ['جمع ٿيل'])) {$ z = $ _POST ['zipcode'] ؛ $ ر = $ _POST ['رداس'] ؛ گونج “نتيجا لاءِ” $ $ ؛ $ sql = mysql_query ("چونڊيو منتخب ڪريو ايم زپ ڪوڊ ، ايم. ايمڪ نام ، ايم ايل لوڊ ايڊ ، ايم ايل ايڊڊ سيٽي ، ايم ايل ايڊڊ اسٽيٽ ، ايم. 1 ، ايم. 1 ، ايم. تصديق ٿيل ، z1.lat ، z2.lon ، z1. شهر ، z1. اسٽيٽ کان mk m ، zip z1 ، zip z2 جتي m.zipcode = z1.zipcode ۽ z2.zipcode = $ z AND (3963 * acos (truncate (sin (z2.lat / 57.2958) * sin y1 / 57.2958) + cos (z2.lat / 57.2958) * cos (m. y1 / 57.2958) * cos (m.x1 / 57.2958 - z2.lon / 57.2958) ، 8))) (mysql_error ()) ؛ جڏهن ته ($ قطار = mysql_fetch_array ($ sql)) {$ store1 = $ قطار ['MktName']. "" ؛ $ اسٽور = $ قطار ['LocAddSt']. "" ؛ $ اسٽور. = $ قطار ['LocAddCity']. "،". $ قطار ['LocAddState']. " $ قطار ['زپ ڪوڊ'] ؛ $ latitude1 = $ قطار ['lat'] ؛ $ ڊگھائي 1 = $ قطار ['lon'] ؛ $ latitude2 = $ قطار ['y1'] ؛ $ ڊگھائي 2 = $ قطار ['x1'] ؛ $ شھر = $ صف ['شھر'] ؛ $ اسٽيٽ = $ قطار ['رياست'] ؛ $ dis = getnew ($ latitude1 ، $ longitude1 ، $ latitude2 ، $ longitude2 ، $ unit = 'Mi') ؛ // $ dis = فاصلو ($ lat1 ، $ lon1 ، $ lat2 ، $ lon2) ؛ $ تصديق ٿيل = $ قطار ['تصديق ٿيل'] ؛ جيڪڏهن ($ تصديق ٿيل == '1') {گونج “”؛ گونج "". $ اسٽور. "" ؛ گونج $ ڊس. ”ميل (ميل) پري“؛ گونج “”؛ } ٻي {گونج “”. $ اسٽور. “”؛ گونج $ ڊس. ”ميل (ميل) پري“؛ گونج “”؛ }}}

    منهنجا افعال. 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)) ) ؛ $ فاصلو = ايڪوس ($ فاصلو) ؛ $ فاصلو = rad2deg ($ فاصلو) ؛ $ فاصلو = $ مفاصلو * 60 * 1.1515؛ سوئچ ($ يونٽ) {ڪيس ‘ايم’: وقفو ؛ ڪيس 'ڪلوميٽر': $ مفاصلو = $ مفاصلو * 1.609344 ؛ } واپسي (گول ($ مفاصلو ، 2)) ؛ }

    توھان جي مھرباني

  42. 61
  43. 62

    اي يار ڊگلس ، بهترين مضمون. مون توهان جي جاگرافيائي تصورن ۽ ان جي ڪوڊ جي وضاحت ڏا reallyي دلچسپ محسوس ڪئي. منهنجو مشورو رڳو خلا ڏانهن وڃڻ ۽ ڊسپلي لاءِ ڪوڊ کي لڪائڻ (مثال طور اسٽيڪ اوور فلو) مان سمجھان ٿو ته توھان جڳھ کي محفوظ ڪرڻ چاھيو ٿا ، پر روايتي ڪوڊ اسپائيٽنگ / اشوڪارو اھو مون لاءِ ، پروگرامر جي طور تي ، پڙھڻ ۽ تقليد ڪرڻ ۾ مون لاءِ ڏا easierو آسان بڻائي ڇڏيندو. ڪا به ڳالهه ، اها هڪ نن thingڙي شيءِ آهي. زبردست ڪم جاري رکو.

  44. 64
  45. 65

    هتي فنڪشن سان استعمال ڪندي اسان هڪ قسم جو فاصلو حاصل ڪري رهيا آهيون .. جڏهن ته سوال کي استعمال ڪندي هن جو فاصلو ٻئي قسم ۾ آهي

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

    اهو تيز لڳي ٿو (MySql 5.9) چونڊڻ ۾ ٻه ڀيرا فارمولا استعمال ڪرڻ ۽ ڪٿي:
    $ فارمولا = “(((ايڪوس (گناہ ((“. $ طول و عرض. ”* پي () / 180)) * گناهه ((“ طول و عرض ”* پائي () / 180)) + cos ((“. $ latitude. cos * ((Latitude "* pi () / 180)) cos ((" "$ longitude." - "longitude") * pi () / 180)))) * 180 / پي ()) * 180 * 60 * 1.1515) ”؛
    $ sql = 'SELECT *،'. $ فارمولا. ' جدول کان پري پري تائين ’$ $ فارمولا. $ = ؛ $ فاصلو ؛

  51. 71
  52. 72

    ھن آرٽيڪل کي ختم ڪرڻ لاءِ گھڻا مھرباني. اھو تمام گھڻو مددگار ثابت ٿيو.
    PHP پهريان ئي هڪ عام اسڪرپٽ پليٽ فارم ”ذاتي گهر واري پيج“ جي نالي سان ٺاهي وئي. ا PHڪلهه پي ايڇ پي (هائپر ٽيڪسٽ پري پروسیسر لاءِ مختصر) مائڪروسافٽ جي فعال سرور پيجز (اي ايس پي) ​​ٽيڪنالاجي جو هڪ متبادل آهي.

    PHP هڪ اوپن سورس سرور طرف واري ٻولي آهي جيڪا متحرڪ ويب پيج ٺاهڻ لاءِ استعمال ٿيندي آهي. اهو HTML ۾ شامل ٿي سگهي ٿو. پي ايڇ پي عام طور تي لينڪس / يونڪس ويب سرور تي آئي ايس ايس ايل ڊيٽابيس جي گڏيل استعمال ڪندو آهي. اھو ٿي سگھي ٿو سڀ کان وڌيڪ مشهور لکت واري ٻولي.

  53. 73

    مون مٿي ڏٺو ته حل نه صحيح ڪم ڪري رهيو آهي.
    مون کي تبديل ڪرڻ جي ضرورت آھي:

    $ qqq = "SELECT * ، ({(acos (sin ((". $ latitude. "* pi () / 180)) * sin ((` latt` * pi () / 180)) + cos ((“. $ طول و عرض. “* pi () / 180)) * cos ((` latt` * pi () / 180)) * cos (((. $ longitude. “-“ longt “) * pi () / 180) 180) / پي ()) * 60 * 1.1515 جئين فاصلو “رجسٽرٽ” کان ؛ “

  54. 75

    مهرباني ، صاحب مڪمل طور تي ڪاوڙ ڪندي .. پر مون وٽ هڪ سوال آهي ته جيڪڏهن آئون ڊيمل پوائنٽ کان سواءِ آئوٽ ٿيڻ چاهيان ته پوءِ ڇا ڪري سگهان ٿو ..؟

    اڳواٽ شڪريو.

  55. 76

    هيلو ، مهرباني ڪري آئون واقعي هن تي تنهنجي مدد جي ضرورت پوندي.

    مون پنهنجي ويب سرور تي موصول جي درخواست ڪئي http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ طول و عرض
    -2.23389 = $ ڊگھائي
    ۽ 20 = اهو مفاصلو جنهن کي آئون واپس وٺڻ چاهيان ٿو

    جيتوڻيڪ توهان جو فارمولا استعمال ڪندي ، اهو منهنجي ڊي بي ۾ سڀني قطار ڏي ٿو

    $ نتيجا = ڊي بي :: چونڊ (ڊي بي :: خام (“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، "فاصلو": 16079.294719663} ، {"id": 2، "name": "Amici's 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"، "address": "191 Castro St، Mountain View، CA"، "lat": 37.393886566162، "lng": - 122.07891845703 ، "فاصلو": 16078.381373826}، {"id": 4، "name": "گول ٽيبل پيزا: ماؤنٹین وارو نظارو" ، "پتو": "570 N Shoreline Blvd، Mountain View، CA"، ”لات“: 37.402652740479، ”lng“: - 122.07935333252، ”فاصلو“: 16077.420540582}، {“id”: 5، “name”: “Tony & Alba's Pizza & Pasta”، ”address”: ”619 Escuela Ave، Mountain ڏسو ، سي اي ”،“ لات ”: 37.394012451172،“ lng ”: - 122.09552764893،“ فاصلو ”: 16078.563225154}، {“ id ”: 6،” name ”:” اورينگو جي ووڊ فائر پيزا “،” پتو “:” 4546 ايل ڪيمينو ريئل ، لاس الٽسو ، سي اي ”،“ لات ”: 37.401725769043 ،“ lng ”: - 122.11464691162 ،“ فاصلو ”: 16077.937560795} ، {“ id ”: 7 ،” نالو “:” بارز ۽ گرلس “،” پتو “:” 24 Whiteley Street، Manchester، ”lat”: 53.485118865967، ”lng”: - 2.1828699111938، ”jarak“: 8038.7620112314}]

    آئون رڳو 20 ميلن سان قطار بحال ڪرڻ چاهيان ٿو پر اها سڀئي قطار کڻي اچي ٿي. مهرباني ڪري مان جيڪو غلط ڪري رهيو آهيان

  56. 77

    مان similarولي رھيو آھيان ھڪڙي سا quئي سوال جي پر ٿورو ا steتي و shortو - مختصر طور تي اھو آھي س allني ڪوآرڊينيٽس کي ھر 2 ڪوآرڊينيٽ جي XNUMX ميلن جي اندر گروپ ڪرڻ ۽ پوءِ countڻيو ته ھر گروپ ۾ ڪيترا ڪوآرڊينيٽ آھن ۽ ر outputو ھڪڙو گروپ outputاھي ٿو جنھن وٽ تمام گھڻا ڪوآرڊينيٽس آھن - جيتوڻيڪ. توھان وٽ آھن ھڪڙي کان و groupيڪ گروپ گروپن ۾ جن وٽ آھي س coord کان و coordيڪ ڪوآرڊينيٽس - ر outputو theاھر ڪ theو بي ترتيب گروپ انھن گروپن مان جيڪي سا largestئي وڏي تعداد ۾ آھن -

توهان ڇا ٿا سوچيو؟

هي سائيٽ اسپام کي گهٽائڻ لاء اکزمٽ استعمال ڪري ٿو. سکو ته توهان جي تجويز ڪيل ڊيٽا کي ڪيئن عمل ڪيو وڃي.