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

ሀቨርሲን ፎርሙላ - ከ 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 በላይ ለሆኑ የችርቻሮ ሱቆች በተጠቀምንበት የድርጅት ካርታ መድረክ ውስጥ ተጠቀምኩበት እና በጥሩ ሁኔታ ሰርቷል ፡፡

76 አስተያየቶች

  1. 1

    ስላካፈሉን በጣም አመሰግናለሁ ይህ ቀላል የቅጅ እና የመለጠፍ ሥራ ነበር እናም በጣም ጥሩ ይሰራል። ብዙ ጊዜ አድነኸኛል ፡፡
    ወደ ሲ ወደሚያልፈው ማንኛውም ሰው FYI
    ድርብ ድጋድራድ (ድርብ ድግሪ) {return deg * (2 / 3.14159265358979323846); }

  2. 2

    በጣም ጥሩ የመለጠፍ ቁራጭ - በጣም ጥሩ ሰርቷል - ላቲ-ረዥም የያዘውን የጠረጴዛ ስም ብቻ መለወጥ ነበረብኝ። እሱ በፍጥነት በፍጥነት ይሠራል .. በተመጣጣኝ ሁኔታ አነስተኛ ቁጥር ያላቸው የ lat-longs (<400) አለኝ ግን ይህ በጥሩ ሁኔታ ይመዝናል ብዬ አስባለሁ። ጥሩ ጣቢያም - አሁን በ del.icio.us መለያዬ ላይ አክዬዋለሁ እና በመደበኛነት ተመል back እመለከታለሁ ፡፡

  3. 4
  4. 5

    ቀኑን ሙሉ የርቀት ስሌቶችን ፈልጌ ፈልጌ አግኝቼዋለሁ ፣ እናም በካሬ ስኩዌር መግለጫ ውስጥ እንዴት እንደሚቀመጥ ምሳሌ በመስጠት ለሰጠኝ አመሰግናለሁ ፡፡ ዳንኤል አመሰግናለሁ እና ሰላምታ ይገባል

  5. 8

    የእርስዎ SQL መረጃ ያለው መግለጫ ይፈልጋል ብዬ አስባለሁ።
    ይልቅ WHERE ርቀት <= $ ርቀት ሊፈልጉት ይችላሉ
    HAVING ርቀት ይጠቀሙ <= $ ርቀት

    አለበለዚያ ብዙ ጊዜ እና ጉልበት ስለቆጠበኝ አመሰግናለሁ ፡፡

  6. 10
  7. 11
  8. 12

    ይህንን ኮድ ስላጋሩን በጣም እናመሰግናለን። ብዙ የልማት ጊዜን አድኖኛል ፡፡ እንዲሁም ፣ ለ ‹MySQL 5.x› የ HAVING መግለጫ አስፈላጊ መሆኑን በመጠቆም ለአንባቢዎችዎ አመሰግናለሁ ፡፡ በጣም አጋዥ ፡፡

  9. 14

    ከላይ ያለው ቀመር ብዙ ጊዜ እየቆጠበኝ ነው ፡፡ በጣም አመሰግናለሁ.
    እንዲሁም በ NMEA ቅርጸት እና በዲግሪዎች መካከል መቀያየር አለብኝ። በገጹ ታችኛው ክፍል ላይ በዚህ ዩ.አር.ኤል ላይ አንድ ቀመር አገኘሁ ፡፡ http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    ይህንን እንዴት ማረጋገጥ እንደሚቻል ማንም ያውቃል?

    አመሰግናለሁ!
    ሃሪ

  10. 15

    ሰላም,

    ሌላ ጥያቄ ፡፡ ከዚህ በታች እንደሚታየው ለኤንኤምኤኤ ሕብረቁምፊዎች ቀመር አለ?

    1342.7500 ፣ N ፣ 10052.2287 ፣ ኢ

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

    አመሰግናለሁ,
    ሃሪ

  11. 16

    እንዲሁም WHERE ለእኔ የማይሠራ መሆኑን አገኘሁ ፡፡ ወደ HAVING ተለውጧል እና ሁሉም ነገር በትክክል ይሠራል። በመጀመሪያ አስተያየቶቹን አላነበብኩም እና የጎጆ ቤት ምርጫን እንደገና ጻፍኩት ፡፡ ሁለቱም በትክክል ይሰራሉ ​​፡፡

  12. 17

    በ mysql ለተፃፈው ስክሪፕት በጣም አመሰግናለሁ ፣ ጥቂት ጥቃቅን ማስተካከያዎችን ማድረግ ነበረበት (HAVING) 🙂
    ደስ የሚል ሥራ

  13. 18

    በማይታመን ሁኔታ አጋዥ ፣ በጣም አመሰግናለሁ! ከ “WHERE” ይልቅ በአዲሱ “HAVING” ላይ አንዳንድ ችግሮች አጋጥመውኝ ነበር ፣ ግን አንድ ጊዜ አስተያየቶችን እዚህ ላይ ካነበብኩ (በብስጭት ጥርሶቼን ከፈጨኝ ግማሽ ሰዓት ያህል በኋላ = P) በጥሩ ሁኔታ እየሠራሁ አገኘሁት ፡፡ አመሰግናለሁ ^ _ ^

  14. 19
  15. 20

    እንደዚያ የመረጥ መግለጫ በጣም ስሌት በጣም ከባድ እና ስለዚህ ዘገምተኛ እንደሚሆን ያስታውሱ። ብዙ እነዚያ መጠይቆች ካሉዎት ነገሮችን በፍጥነት በፍጥነት ሊያወዛውዝ ይችላል።

    እጅግ በጣም ጠንከር ያለ አካሄድ በተቆጠረ ርቀት የተገለጸውን የ “ስኩዌር” አካባቢን በመጠቀም የመጀመሪያ (ድፍድፍ) ምርጫን ማስኬድ ነው ማለትም “ከ Latlename እና latitude መካከል ኬንትሮስ እና ኬንትሮስ በ lon1 እና lon2 መካከል ኬንትሮስ” ከሚለው ከ Tablename ይምረጡ lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff ፣ ከሎንግ ጋር ተመሳሳይ ነው። latdiff ~ = ርቀት / 1 (ለኪ.ሜ) ፣ ወይም ርቀቱ / 2 ለማይል ከ 111 ዲግሪ ኬክሮስ ኬንትሮስ ~ 69 ኪ.ሜ ነው (ምድር ትንሽ ሞላላ ስለሆነች ትንሽ መለዋወጥ ግን ለዚህ ዓላማ በቂ ነው) ፡፡ londiff = ርቀት / (abs (cos (deg1rad (latitude)) * 111))) - ወይም 2 ለማይልስ (ልዩነቶችን ለመጠየቅ በእርግጥ ትንሽ ትልቅ ካሬ መውሰድ ይችላሉ) ፡፡ ከዚያ የዛን ውጤት ይውሰዱ እና ወደ ራዲያል መምረጫ ይመግቡ። ከክልሎች ውጭ መጋጠሚያዎች (ሂሳቦች) መለያዎን አይርሱ - ማለትም - ተቀባይነት ያለው ኬንትሮስ ክልል ከ -111 እስከ +69 እና ተቀባይነት ያለው ኬክሮስ ክልል ከ -180 እስከ +180 ከሆነ - የእርስዎ ላርድ ወይም ሎንዲፍ ከዚህ ክልል ውጭ የሚሄድ ከሆነ ፡፡ . የ chukotka እና የአላስካ ክፍልን የሚያቋርጥ ቢሆንም በአብዛኛዎቹ ሁኔታዎች ይህ ተግባራዊ ላይሆን ይችላል ምክንያቱም ከጫፍ እስከ ምሰሶ ድረስ ባለው ውቅያኖስ ውቅያኖስ በኩል ባለው መስመር ላይ ባሉ ስሌቶች ላይ ብቻ ተጽዕኖ ያሳድራል ፡፡

    በዚህ የምንፈጽመው ይህንን ስሌት በሚያደርጉበት የነጥብ ብዛት ላይ ከፍተኛ ቅነሳ ነው ፡፡ በግምት በእኩል በተሰራጨው የመረጃ ቋት ውስጥ አንድ ሚሊዮን ዓለም አቀፍ ነጥቦች ካሉዎት እና በ 100 ኪ.ሜ ውስጥ መፈለግ ከፈለጉ የመጀመሪያዎ (ፈጣን) ፍለጋዎ 10000 ስኩዌር ኪ.ሜ አካባቢ ነው ምናልባትም ወደ 20 የሚጠጉ ውጤቶችን ያስገኛል 500 ሜ.ሜ ስኩዌር ኪ.ሜ አካባቢ) ፣ ይህ ማለት ከአንድ ሚሊዮን ጊዜ ይልቅ ለዚህ ጥያቄ ውስብስብ የሆነውን የርቀት ስሌት 20 ጊዜ ያካሂዳሉ ማለት ነው ፡፡

    • 21

      የእኛ… ካሬ "ራዲየስ" እየተመለከትን ስለሆነ በምሳሌ… ውስጥ አነስተኛ ስህተት በ 50 ኪ.ሜ (በ 100 ሳይሆን) ይሆናል ፡፡

      • 22

        ድንቅ ምክር! በእውነቱ የውስጠኛውን አደባባይ የሚጎትት እና ከዛም የቀሩትን ነጥቦችን ለማካተት እና ለማካተት በዙሪያው ዙሪያ ‘አደባባዮች’ ያደረገና እንደገና የማየት ተግባር ከፃፈ ገንቢ ጋር እሰራ ነበር ፡፡ ውጤቱ በማይታመን ሁኔታ ፈጣን ውጤት ነበር - በማይክሮ ሴኮንድ ውስጥ በሚሊዮኖች የሚቆጠሩ ነጥቦችን መገምገም ይችላል ፡፡

        ከላይ ያለኝ አካሄድ በእርግጠኝነት ‘ድፍድፍ’ ግን የሚችል ነው ፡፡ እንደገና አመሰግናለሁ!

        • 23

          ዳግ ፣

          አንድ ረዥም ረዥም ነጥብ በአንድ ባለብዙ ጎን ውስጥ መሆን አለመሆኑን ለመገምገም ማይስክሌል እና ፒኤችፒን ለመጠቀም እየሞከርኩ ነበር ፡፡ የገንቢ ጓደኛዎ ይህንን ተግባር እንዴት ማከናወን እንደሚቻል ማንኛውንም ምሳሌ ካተመ ያውቃሉ? ወይም ማንኛውንም ጥሩ ምሳሌዎች ያውቃሉ ፡፡ በቅድሚያ አመሰግናለሁ.

  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

    ይህ በጣም ጥሩ ነው ፣ ሆኖም ወፎቹ እንደሚበሩ ሁሉ ፡፡ የ google ካርታዎችን ኤ.ፒ.አይ.ን በሆነ መንገድ በዚህ መንገድ መሞከር እና ማካተት በጣም ጥሩ ነው (ምናልባት መንገዶችን በመጠቀም ወዘተ) የተለየ የመጓጓዣ ዘዴ በመጠቀም ሀሳብ ለመስጠት ብቻ ፡፡ ለተጓዥው ሻጭ ችግር ቀልጣፋ መፍትሄ ለመስጠት የሚያስችለኝን በ PHP ውስጥ የማስመሰል የማጣሪያ ተግባር ገና አላደርግም ፡፡ ግን ይህን ለማድረግ አንዳንድ ኮዶችዎን እንደገና ለመጠቀም እችል ይሆናል ብዬ አስባለሁ ፡፡

  18. 27

    ሃይ ዳግላስ ፣
    ለዚህ መጣጥፍ በጣም አመሰግናለሁ - እኔን ብዙ ጊዜ አድነኸኛል ፡፡
    ደህና ሁን,
    ናምሩድ @ እስራኤል

  19. 28

    ጥሩ መጣጥፍ! በሁለት ነጥቦች መካከል ያለውን ርቀት እንዴት ማስላት እንደሚቻል የሚገልጹ ብዙ መጣጥፎችን አግኝቻለሁ ግን የ SQL ቅንጥጥን በእውነት እፈልግ ነበር ፡፡

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

    ችግሬን የሚፈታ ይህንን ገጽ በመጨረሻ ለማግኘት የ 2 ቀናት ምርምር። የእኔን የዎልፍራም አልፋዬን አጥፍቼ በሂሳብዎ ላይ ብራሹን የተሻልኩ ይመስላል። ከ WHERE ወደ HAVING የተደረገው ለውጥ በስርዓት ውስጥ የእኔ ስክሪፕት አለው። አመሰግናለሁ

  25. 37
    • 38

      እናመሰግናለን ጆርጂ። እኔ አምድ ‹ርቀት› አልተገኘም ብዬ ቀጠልኩ ፡፡ አንዴ WHERE ን ወደ HAVING ከቀየርኩ በኋላ እንደ ማራኪ ይሠራል!

  26. 39

    ይህ በዚህ ላይ ያገኘሁት የመጀመሪያ ገጽ ቢሆን ተመኘሁ ፡፡ ብዙ የተለያዩ ትዕዛዞችን ከሞከርኩ በኋላ በትክክል የሚሠራው ይህ ብቻ ነበር ፣ እና ከራሴ የውሂብ ጎታ (ዳታቤዝ) ጋር ለማስማማት በሚያስፈልጉ አነስተኛ ለውጦች ፡፡
    በጣም አመሰግናለሁ!

  27. 40

    ይህ በዚህ ላይ ያገኘሁት የመጀመሪያ ገጽ ቢሆን ተመኘሁ ፡፡ ብዙ የተለያዩ ትዕዛዞችን ከሞከርኩ በኋላ በትክክል የሚሠራው ይህ ብቻ ነበር ፣ እና ከራሴ የውሂብ ጎታ (ዳታቤዝ) ጋር ለማስማማት በሚያስፈልጉ አነስተኛ ለውጦች ፡፡
    በጣም አመሰግናለሁ!

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

    ይህ ቀመር እንደሚሰራ አውቃለሁ ፣ ግን የምድር ራዲየስ የት እንደሚወሰድ ማየት አልቻልኩም ፡፡ እባክዎን ማንም ሊረዳኝ ይችላል?

  34. 49
  35. 50
  36. 52
  37. 53

    የስህተት መልእክት ማግኘቴን ቀጠልኩ በ MySQL ጥያቄ ላይ ያልታወቀ አምድ ‹ርቀት› በ ‹የት አንቀጽ› ውስጥ ፡፡

  38. 55
  39. 56

    ዳግላስ ፣ ለዚህ ​​አስደናቂ ኮድ አመሰግናለሁ። በጄፒኤስ ማህበረሰብ መግቢያ ላይ ይህን እንዴት ማድረግ እንዳለብኝ ጭንቅላቴን እየሰነጠቅኩኝ ነው ፡፡ ሰዓታትን አድነኸኛል ፡፡

  40. 58

    ይህንን ጠቃሚ ጽሑፍ ስለለጠፉ አመሰግናለሁ ፣  
    ግን በሆነ ምክንያት መጠየቅ እፈልጋለሁ
    በ MySQL DB እና በተጠቃሚዎች ወደ ፒኤችፒ በተገቡት ቅንጅቶች መካከል ያለውን ርቀት እንዴት ማግኘት ይቻላል?
    የበለጠ በግልጽ ለመግለጽ
    1. user የተገለጸውን ውሂብ ከ db እና ከተጠቃሚው ራሱ ኮዶች ለመምረጥ [id] ን ማስገባት አለባቸው
    2.የ php ፋይል [id] ን በመጠቀም ዒላማውን ውሂብ (ኮርፖሬሽኖችን) ያግኙ እና ከዚያ በተጠቃሚ እና በዒላማው ነጥብ መካከል ያለውን ርቀት ያሰሉ

    ወይም በቀላሉ ከዚህ በታች ካለው ኮድ ርቀትን ማግኘት ይችላል?

    $ qry = "SELECT *, ((acos (sin ((.. $ latitude. * * 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` WHERE ርቀት> =“. $ ርቀት. ” >>>> ከዚህ ያለውን ርቀት “ማውጣት” እችላለሁን?
    እንደገና አመሰግናለሁ,
    ቲሚ ኤስ

    • 59

      በጭራሽ ፣ በ “php” ውስጥ “ተግባር” እንዴት እንደሚሰራ አውቃለሁ
      $ dis = getDistanceBetweenPointsNew ($ userLati, $ userLongi, $ lati, $ longi, $ unit = 'Km')
      በጣም አመሰግናለሁ!! 

  41. 60

    እሺ ፣ እኔ የሞከርኩት ሁሉ እየሰራ አይደለም ፡፡ እኔ የምለው ፣ ያለኝ ይሠራል ፣ ግን ርቀቶቹ ርቀዋል ፡፡

    ማንም ሰው በዚህ ኮድ ውስጥ ምን ችግር እንዳለ ማየት ይችላል?

    ከሆነ (መነሻ ($ _ POST ['ገብቷል'])) {$ z = $ _POST ['zipcode']]; $ r = $ _POST ['ራዲየስ']; አስተጋባ "ውጤቶች ለ". $ z; $ sql = mysql_query (“Select DISTINCT m.zipcode, m.MktName, m.LAAddSt, m.LocAddCity, m.LocAddState, m.x1, m.y1, m.verified, z1.lat, z2.lon, z1. ከተማ ፣ z1.state ከ mrk m ፣ zip z1 ፣ zip z2 WHERE 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 ()); ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ ረድፍ ['MktName']]። ""; $ store = $ ረድፍ ['LocAddSt']። ”” $ store. = $ ረድፍ ['LocAddCity']። ”፣“. $. ረድፍ ['ዚፕ ኮድ']; $ latitude1 = $ ረድፍ ['lat']; $ longitude1 = $ ረድፍ ['lon']; $ latitude2 = $ ረድፍ ['y1']; $ ኬንትሮስ 2 = $ ረድፍ ['x1']; $ ከተማ = $ ረድፍ ['ከተማ']; $ state = $ ረድፍ ['state']; $ dis = getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = ርቀት ($ lat1, $ lon1, $ lat2, $ lon2); $ ተረጋግጧል = $ ረድፍ ['ተረጋግጧል']; ከሆነ ($ ተረጋግጧል == '1') {አስተጋባ “”; አስተጋባ "". $ ማከማቻ. ""; አስተጋባ $ dis. ”ማይል (ሮች) ሩቅ”; አስተጋባ “”; } ሌላ {አስተጋባ “”። $ ማከማቻ። ””; አስተጋባ $ dis. ”ማይል (ሮች) ሩቅ”; አስተጋባ “”; }}}

    የእኔ ተግባራት. php ኮድ
    ተግባር getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ ርቀት = (ኃጢአት (deg2rad ($ latitude1)) * sin (deg2rad ($ latitude2))) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ) $ ርቀት = acos ($ ርቀት); $ ርቀት = rad2deg ($ ርቀት); $ ርቀት = $ ርቀት * 60 * 1.1515; ማብሪያ ($ unit) {case 'Mi': break; ጉዳይ 'ኪም': $ ርቀት = $ ርቀት * 1.609344; } መመለስ (ክብ ($ ርቀት ፣ 2)); }

    የቀደመ ምስጋና

  42. 61
  43. 62

    ሄይ ዳግላስ ፣ ግሩም መጣጥፍ። ስለ ጂኦግራፊያዊ ፅንሰ-ሀሳቦች እና ስለ ኮዱ የሰጡት ማብራሪያ በእውነቱ አስደሳች ሆኖ አግኝቼዋለሁ ፡፡ የእኔ ብቸኛ አስተያየት ጥቆማውን ለማሳየት እና ለማሳየት (ለምሳሌ እንደ እስክራቫልቭ ፍሰት) ኮዱን ማስገባት ነው ፡፡ ቦታን መቆጠብ እንደሚፈልጉ ተረድቻለሁ ፣ ነገር ግን የተለመዱ የኮድ ክፍተቶች / ኢንዴንሽን እንደ አንድ ፕሮግራም አውጪ ለማንበብ እና ለመበታተን ለእኔ በጣም ቀላል ይሆንልኛል ፡፡ የሆነ ሆኖ ያ ትንሽ ነገር ነው ፡፡ ታላቁን ስራዎን ይቀጥሉ ፡፡

  44. 64
  45. 65

    እዚህ ጋር በተግባራዊነት እየተጠቀምን አንድ ዓይነት ርቀትን እናገኛለን ፡፡.. ጥያቄን በመጠቀም የሚመጣውን ሌላ ዓይነት ርቀትን

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

    በምርጫው ውስጥ የትኛውን ቀመር ሁለት ጊዜ ለመጠቀም ፈጣኑ (mysql 5.9) ይመስላል-
    $ ቀመር = “(((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) ”;
    $ sql = 'SELECT *,'. $ ቀመር። ' እንደ ርቀት ከሠንጠረዥ የት '.. $ ቀመር።' <= '. $ ርቀት;

  51. 71
  52. 72

    ይህ ጽሑፍ በጣም ጥሩ ጠቃሚ ነው ፡፡
    ፒኤችፒ መጀመሪያ ላይ እንደ “የግል መነሻ ገጽ” ተብሎ እንደ ቀላል የስክሪፕት መድረክ ተፈጥሯል። በአሁኑ ጊዜ PHP (ለ Hypertext ቅድመ-ፕሮሰሰር አጠር ያለው) የማይክሮሶፍት ንቁ የአገልጋይ ገጾች (ኤስፒ) ቴክኖሎጂ አማራጭ ነው ፡፡

    ፒኤችፒ ተለዋዋጭ የድር ገጾችን ለመፍጠር የሚያገለግል ክፍት ምንጭ አገልጋይ-ጎን ቋንቋ ነው። ወደ ኤችቲኤምኤል ሊገባ ይችላል። ፒኤችፒ አብዛኛውን ጊዜ በሊነክስ / UNIX ድር አገልጋዮች ላይ ከ ‹MySQL› ዳታቤዝ ጋር አብሮ ጥቅም ላይ ይውላል ፡፡ ምናልባት በጣም የታወቀው የስክሪፕት ቋንቋ ነው።

  53. 73

    በትክክል የማይሰራ ከላይ መፍትሄ አገኘሁ ፡፡
    መለወጥ አለብኝ ወደ

    $ qqq = "SELECT *, ((acos (sin ((.. $ latitude. * * pi () / 180)) * * sin ((" latt` * pi () / 180)) + cos ((") $ ኬክሮስ. “* pi () / 180)) * cos ((“ latt` * pi () / 180)) * cos (((”. $ ኬንትሮስ.“ - “longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) እንደ ርቀት ከ “ምዝገባ” “;

  54. 75

    አመሰግናለሁ ጌታ ፍጹም ሲደበደብ .. ግን ያለ አስርዮሽ ነጥብ ማውጣት ከፈለግኩ አንድ ጥያቄ አለኝ ታዲያ ምን ማድረግ እችላለሁ ..?

    በቅድሚያ አመሰግናለሁ.

  55. 76

    ጤና ይስጥልኝ ፣ እባክዎን በዚህ ላይ በእርግጥ እገዛዎን እፈልጋለሁ ፡፡

    ለድር አገልጋዬ የማግኘት ጥያቄ አቀረብኩ http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ ኬክሮስ
    -2.23389 = $ ኬንትሮስ
    እና 20 = ሰርስሮ ማውጣት እፈልጋለሁ

    ሆኖም ቀመርን በመጠቀምዎ በ db ውስጥ ያሉትን ሁሉንም ረድፎች ይሰበስባል

    $ results = DB :: ይምረጡ (DB :: ጥሬ (“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, "ስም": "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 ”:“ የካፕ ፒዛ አሞሌ እና ግሪል ”፣“ አድራሻ ”“ 191 ካስትሮ እስ ፣ ማውንት ቪው ፣ ካ ”፣“ ላ ”37.393886566162 ”Lng”: - 122.07891845703 ፣ ”ርቀት”: 16078.381373826}, {“id”: 4, ”name”: “Round Table Piza: Mountain View”, “address”: “570 N Shoreline Blvd, Mountain View, CA”, ”Lat”: 37.402652740479, “lng”: - 122.07935333252, ”ርቀት”: 16077.420540582}, {“id”: 5, ”name”: “Tony & Alba’s Pizza & Pasta”, ”address”: “619 Escuela Ave, Mountain እይታ ፣ CA ”፣“ lat ”: 37.394012451172 ፣“ lng ”: - 122.09552764893 ፣” ርቀት ”: 16078.563225154} ፣ {“ id ”: 6,” name ”:“ Oregano’s Wood-Fired Pizza ”,” address ”:“ 4546 ኤል ካሚኖ ሪል ፣ ሎስ አልቶስ ፣ ሲኤ ”፣“ ላት ”37.401725769043 ፣“ lng ”: - 122.11464691162 ፣” ርቀት ”: 16077.937560795} ፣ {“ id ”: 7,” name ”:“ ቡና ቤቶችና ጋሪዎቹ ”፣“ አድራሻ ”:“ 24 ኋይትሊ ጎዳና ፣ ማንቸስተር ”፣“ ላቲ ”53.485118865967 ፣” lng ”: - 2.1828699111938 ፣” ርቀት ”: 8038.7620112314}]

    ከ 20 ማይል ጋር ተራዎችን ብቻ ማውጣት እፈልጋለሁ ግን ሁሉንም ረድፎችን ያመጣል ፡፡ እባክዎን ምን እየሠራሁ ነው

ምን አሰብክ?

ይህ ጣቢያ አይፈለጌን ለመቀነስ Akismet ይጠቀማል. አስተያየትዎ እንዴት እንደሚሰራ ይወቁ.