ፒኤችፒ እና ኤስኪኤል-በኬክሮስ እና በኬንትሮስ መካከል ባሉ የሃውስተይን ቀመር መካከል ትልቅ ክብ ርቀት ማስላት ወይም መጠይቅ

ሀቨርሲን ፎርሙላ - ከ PHP ወይም ከ MySQL ጋር ታላላቅ ክበብ ርቀት አስሉ

ጂአይስን በተመለከተ በዚህ ወር በ PHP እና በ MySQL ውስጥ በጣም ትንሽ ፕሮግራም አቀርባለሁ ፡፡ በተጣራ መረብ ዙሪያ ማንሸራተት በእውነቱ የተወሰኑትን ለማግኘት በጣም ተቸገርኩ ጂኦግራፊያዊ ስሌቶች በሁለት አካባቢዎች መካከል ያለውን ርቀት ለመፈለግ እዚህ ለማጋራት ፈለኩ ፡፡

የበረራ ካርታ አውሮፓ በታላቅ የክበብ ርቀት

በሁለት ነጥቦች መካከል ያለውን ርቀት ለማስላት ቀላሉ መንገድ የሦስት ማዕዘንን መላምት (A² + B² = C the) ለማስላት የፓይታጎሪያን ቀመር በመጠቀም ነው ፡፡ ይህ በመባል ይታወቃል የዩክሊዳን ርቀት.

ይህ አስደሳች ጅምር ቢሆንም በኬክሮስ እና ኬንትሮስ መስመሮች መካከል ያለው ርቀት ስለሆነ ከጂኦግራፊ ጋር አይሠራም እኩል ርቀት አይደለም ለየብቻ ፡፡ ወደ ወገብ ወገብ ሲጠጉ ፣ የኬክሮስ መስመሮች የበለጠ ይራወጣሉ ፡፡ አንድ ዓይነት ቀለል ያለ የሶስትዮሽ እኩልታ ቀመርን የሚጠቀሙ ከሆነ የምድርን ጠማማነት በመለየት በአንድ ቦታ በትክክል ርቀትን ሊለካ በሌላኛው ደግሞ በጣም የተሳሳተ ሊሆን ይችላል።

ታላቁ የክበብ ርቀት

በምድር ዙሪያ ረጅም ርቀት የሚጓዙባቸው መንገዶች በመባል ይታወቃሉ ታላቁ የክበብ ርቀት. ያ a በሉል ላይ በሁለት ነጥቦች መካከል ያለው አጭር ርቀት በተንጣለለ ካርታ ላይ ከሚገኙት ነጥቦች የተለየ ነው ፡፡ ያንን ያጣምሩ የ ኬክሮስ እና የኬንትሮስ መስመሮች ተመጣጣኝ አይደሉም… እና እርስዎም ከባድ ስሌት አለዎት ፡፡

ታላላቅ ክበቦች እንዴት እንደሚሠሩ አስደናቂ የቪዲዮ ማብራሪያ ይኸውልዎት።

ሀቨርሲን ፎርሙላ

የምድርን ጠመዝማዛ በመጠቀም ያለው ርቀት በ ውስጥ ተካትቷል ሀቨርሲን ቀመር, የምድርን ጠመዝማዛ ለማስቻል ትሪጎኖሜትሪን ይጠቀማል ፡፡ በምድር ላይ ባሉ 2 ቦታዎች መካከል (ቁራ ሲበር) መካከል ያለውን ርቀት ሲያገኙ ቀጥተኛ መስመር በእውነቱ ቅስት ነው ፡፡

ይህ በአየር በረራ ውስጥ ተፈጻሚ ነው - መቼም ትክክለኛውን የበረራዎች ካርታ ተመልክተው እንዳረጁ አስተውለሃል? ይህ የሆነበት ምክንያት በቀጥታ ወደ ቦታው ሳይሆን በሁለት ነጥቦች መካከል ባለው ቅስት ውስጥ መብረር አጭር ስለሆነ ነው ፡፡

ፒኤችፒ-በ 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: ኬክሮስ እና ኬንትሮስን በመጠቀም ማይሎችን ርቀት በማስላት በአንድ ክልል ውስጥ ያሉትን ሁሉንም መዝገቦች ሰርስሮ ማውጣት

በተወሰነ ርቀት ውስጥ ያሉትን ሁሉንም መዝገቦች ለማግኘት ስሌት ለማድረግ SQL ን መጠቀምም ይቻላል ፡፡ በዚህ ምሳሌ ውስጥ የእኔ አካባቢ በ $ ኬክሮስ እና $ ኬንትሮስ ከቦታዬ ተለዋጭ $ ርቀት (ማይሎች ውስጥ) ያነሱ ወይም እኩል የሆኑ መዝገቦችን ሁሉ ለማግኘት በ MySQL ውስጥ ‹MyTable› ን እጠይቃለሁ ፡፡

በአንድ የተወሰነ መዝገብ ውስጥ ያሉትን መዝገቦች በሙሉ የማግኘት ጥያቄ ርቀት በሁለት ኬክሮስ እና ኬንትሮስ መካከል ባሉት ማይሎች መካከል ያለውን ርቀት በማስላት

$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 ተለዋዋጭ ነው ፡፡
  • $ ርቀት - ይህ ሁሉንም መዝገቦች ያነሰ ወይም እኩል እንዲያገኙ የሚፈልጉት ይህ ርቀት ነው።
  • ጠረጴዛ - ይህ ጠረጴዛው ነው that ያንን በጠረጴዛዎ ስም ለመተካት ይፈልጋሉ ፡፡
  • ኬክሮስ - ይህ የእርስዎ ኬክሮስ መስክ ነው ፡፡
  • ኬንትሮስ - ይህ የእርስዎ የኬንትሮስ መስክ ነው ፡፡

SQL: ኬክሮስ እና ኬንትሮስን በመጠቀም በኪሎሜትሮች ርቀትን በማስላት በአንድ ክልል ውስጥ ያሉትን ሁሉንም መዝገቦች ሰርስሮ ማውጣት

እና በ MySQL ውስጥ ኪሎሜትሮችን በመጠቀም የ 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."

ይህንን ማበጀት ያስፈልግዎታል

  • $ ኬንትሮስ - ይህ የነጥቡን ኬንትሮስ የማልፍበት PHP ተለዋዋጭ ነው ፡፡
  • $ ኬክሮስ - ይህ የነጥቡን ኬንትሮስ የማልፍበት PHP ተለዋዋጭ ነው ፡፡
  • $ ርቀት - ይህ ሁሉንም መዝገቦች ያነሰ ወይም እኩል እንዲያገኙ የሚፈልጉት ይህ ርቀት ነው።
  • ጠረጴዛ - ይህ ጠረጴዛው ነው that ያንን በጠረጴዛዎ ስም ለመተካት ይፈልጋሉ ፡፡
  • ኬክሮስ - ይህ የእርስዎ ኬክሮስ መስክ ነው ፡፡
  • ኬንትሮስ - ይህ የእርስዎ የኬንትሮስ መስክ ነው ፡፡

ይህንን ኮድ በሰሜን አሜሪካ በኩል ከ 1,000 በላይ ለሆኑ የችርቻሮ ሱቆች በተጠቀምንበት የድርጅት ካርታ መድረክ ውስጥ ተጠቀምኩበት እና በጥሩ ሁኔታ ሰርቷል ፡፡