Haversine Formula (PHP, Python, MySQL, MSSQL උදාහරණ) භාවිතයෙන් අක්ෂාංශ සහ දේශාංශ අතර විශාල කව දුර ගණනය කරන්න හෝ විමසන්න

Haversine Formula - මහා කව දුර - PHP, Python, MySQL

GIS සම්බන්ධයෙන් මේ මාසයේ මම PHP සහ MySQL හි තරමක් වැඩසටහන්ගත කර ඇත. දැල වටා සැරිසැරීම, මට ඇත්ත වශයෙන්ම සමහරක් සොයා ගැනීමට අපහසු විය භූගෝලීය ගණනය කිරීම් ස්ථාන දෙකක් අතර දුර සොයා ගැනීමට මට ඒවා මෙහි බෙදා ගැනීමට අවශ්‍ය විය.

විශාල සිතියම් දුරක් සහිත යුරෝපයේ පියාසැරි සිතියම

ලක්ෂ්‍ය දෙකක් අතර දුර ගණනය කිරීමේ සරලම ක්‍රමය වන්නේ ත්‍රිකෝණයක (A² + B² = C²) උපකල්පිතය ගණනය කිරීම සඳහා පයිතගරස් සූත්‍රය භාවිතා කිරීමයි. මෙය හැඳින්වෙන්නේ යුක්ලීඩියානු දුර.

එය සිත්ගන්නාසුලු ආරම්භයක් නමුත් අක්ෂාංශ හා දේශාංශ රේඛා අතර දුර බැවින් එය භූගෝලය සමඟ අදාළ නොවේ සමාන දුර නොවේ වෙන්ව. ඔබ සමකයට සමීප වන විට අක්ෂාංශ රේඛා තව දුරටත් වෙන් වේ. ඔබ යම් ආකාරයක සරල ත්‍රිකෝණ සමීකරණයක් භාවිතා කරන්නේ නම්, එය පෘථිවියේ වක්‍රය නිසා එක් ස්ථානයක දුර නිවැරදිව මැනිය හැකි අතර අනෙක් ස්ථානයේ දරුණු ලෙස වැරදිය.

විශාල රවුම් දුර

පෘථිවිය වටා බොහෝ දුර ගමන් කරන මාර්ග හැඳින්වෙන්නේ විශාල රවුම් දුර. එනම්... ගෝලයක ලක්ෂ්‍ය දෙකක් අතර ඇති කෙටිම දුර පැතලි සිතියමක ලක්ෂ්‍යවලට වඩා වෙනස් වේ. අක්ෂාංශ සහ දේශාංශ රේඛා සමාන දුරස්ථ නොවන බව සමඟ එය ඒකාබද්ධ කරන්න... ඔබට අපහසු ගණනය කිරීමක් ඇත.

මහා කවයන් ක්‍රියා කරන ආකාරය පිළිබඳ අපූරු වීඩියෝ පැහැදිලි කිරීමක් මෙන්න.

හැවර්සින් සූත්‍රය

පෘථිවියේ වක්‍රය භාවිතා කරන දුර ප්‍රමාණය හැවර්සින් සූත්‍රය, පෘථිවියේ වක්‍රතාවයට ඉඩ දීම සඳහා ත්‍රිකෝණමිතිය භාවිතා කරයි. ඔබ පෘථිවියේ ස්ථාන 2 ක් අතර දුර සොයා ගන්නා විට (කකුළුවා පියාසර කරන විට), සරල රේඛාවක් යනු සැබවින්ම චාපයකි.

ගුවන් ගමන් වලදී මෙය අදාළ වේ - ඔබ කවදා හෝ සත්‍ය ගුවන් ගමන් සිතියම දෙස බලා ඒවා ආරුක්කු කර ඇති බව දැක තිබේද? එයට හේතුව සෘජුවම ස්ථානයට වඩා ලකුණු දෙකක් අතර ආරුක්කුවක පියාසර කිරීම කෙටි වීමයි.

PHP: අක්ෂාංශ හා දේශාංශ ලක්ෂ්‍ය 2 අතර දුර ගණනය කරන්න

ලක්ෂ්‍ය දෙකක් අතර දුර ගණනය කිරීම සඳහා PHP සූත්‍රය මෙන්න (මයිල් එදිරිව කිලෝමීටර් පරිවර්තනය සමඟ) දශම ස්ථාන දෙකකට වට කර ඇත.

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

විචල්යයන් වන්නේ:

  • $Latitude1 - ඔබගේ පළමු ස්ථානයේ අක්ෂාංශ සඳහා විචල්‍යයක්.
  • $Longitude1 - ඔබගේ පළමු ස්ථානයේ දේශාංශ සඳහා විචල්‍යයක්
  • $Latitude2 - ඔබගේ දෙවන ස්ථානයේ අක්ෂාංශ සඳහා විචල්‍යයක්.
  • $Longitude2 - ඔබගේ දෙවන ස්ථානයේ දේශාංශ සඳහා විචල්‍යයක්.
  • $ ඒකකය - පෙරනිමිය දහස් ගනන්. මෙය යාවත්කාලීන කිරීමට හෝ සම්මත කිරීමට හැකිය කිලෝමීටර.

පයිතන්: අක්ෂාංශ සහ දේශාංශ 2ක් අතර දුර ගණනය කරන්න

කෙසේ වෙතත්, ලක්ෂ්‍ය දෙකක් අතර දුර (සැතපුම් එදිරිව කිලෝමීටර් පරිවර්තනය සමඟ) දශම ස්ථාන දෙකකට වට කර ගණනය කිරීම සඳහා පයිතන් සූත්‍රය මෙන්න. දත්ත විද්‍යාඥයෙකු වන මගේ පුතා බිල් කාර්ට ගෞරවය විවෘත INSIGHTS, කේතය සඳහා.

from numpy import sin, cos, arccos, pi, round

def rad2deg(radians):
    degrees = radians * 180 / pi
    return degrees

def deg2rad(degrees):
    radians = degrees * pi / 180
    return radians

def getDistanceBetweenPointsNew(latitude1, longitude1, latitude2, longitude2, unit = 'miles'):
    
    theta = longitude1 - longitude2
    
    distance = 60 * 1.1515 * rad2deg(
        arccos(
            (sin(deg2rad(latitude1)) * sin(deg2rad(latitude2))) + 
            (cos(deg2rad(latitude1)) * cos(deg2rad(latitude2)) * cos(deg2rad(theta)))
        )
    )
    
    if unit == 'miles':
        return round(distance, 2)
    if unit == 'kilometers':
        return round(distance * 1.609344, 2)

විචල්යයන් වන්නේ:

  • අක්ෂාංශ1 - ඔබගේ පළමු ස්ථානය සඳහා විචල්‍යයක් අක්ෂාංශ.
  • දේශාංශ1 - ඔබගේ පළමු ස්ථානය සඳහා විචල්‍යයක් දේශාංශ
  • අක්ෂාංශ2 - ඔබගේ දෙවන ස්ථානය සඳහා විචල්‍යයක් අක්ෂාංශ.
  • දේශාංශ2 - ඔබගේ දෙවන ස්ථානය සඳහා විචල්‍යයක් දේශාංශ.
  • ඒකකය - පෙරනිමිය දහස් ගනන්. මෙය යාවත්කාලීන කිරීමට හෝ සම්මත කිරීමට හැකිය කිලෝමීටර.

MySQL: අක්ෂාංශ සහ දේශාංශ භාවිතා කරමින් සැතපුම් වල දුර ගණනය කිරීමෙන් පරාසයක් තුළ සියලුම වාර්තා ලබා ගැනීම

නිශ්චිත දුරක් තුළ සියලුම වාර්තා සොයා ගැනීම සඳහා ගණනය කිරීමක් කිරීමට 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 විචල්‍යයක් වන අතර එහිදී මම ලක්ෂ්‍යයේ දේශාංශ පසු කරමි.
  • $ දුර - මෙය ඔබ සියලු වාර්තා අඩු හෝ සමාන සොයා ගැනීමට කැමති දුර වේ.
  • වගුවයි - මේසය මෙයයි… ඔබට එය ඔබගේ වගුවේ නම සමඟ ආදේශ කිරීමට අවශ්‍ය වනු ඇත.
  • අක්ෂාංශ - මෙය ඔබේ අක්ෂාංශ ක්ෂේත්‍රයයි.
  • දේශාංශ - මෙය ඔබේ දේශාංශයේ ක්ෂේත්‍රයයි.

MySQL: අක්ෂාංශ සහ දේශාංශ භාවිතා කරමින් කිලෝමීටර් වලින් දුර ගණනය කිරීමෙන් පරාසයක් තුළ සියලුම වාර්තා ලබා ගැනීම

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 විචල්‍යයක් වන අතර එහිදී මම ලක්ෂ්‍යයේ දේශාංශ පසු කරමි.
  • $ දුර - මෙය ඔබ සියලු වාර්තා අඩු හෝ සමාන සොයා ගැනීමට කැමති දුර වේ.
  • වගුවයි - මේසය මෙයයි… ඔබට එය ඔබගේ වගුවේ නම සමඟ ආදේශ කිරීමට අවශ්‍ය වනු ඇත.
  • අක්ෂාංශ - මෙය ඔබේ අක්ෂාංශ ක්ෂේත්‍රයයි.
  • දේශාංශ - මෙය ඔබේ දේශාංශයේ ක්ෂේත්‍රයයි.

මම මෙම කේතය උතුරු ඇමරිකාව පුරා ස්ථාන 1,000 කට අධික සංඛ්‍යාවක් සහිත සිල්ලර වෙළඳසැලක් සඳහා භාවිතා කළ ව්‍යවසාය සිතියම්කරණ වේදිකාවක භාවිතා කළ අතර එය ඉතා අලංකාර ලෙස ක්‍රියාත්මක විය.

Microsoft SQL Server භූගෝලීය දුර: STDistance

ඔබ Microsoft SQL Server භාවිතා කරන්නේ නම්, ඔවුන් ඔවුන්ගේම කාර්යයක් ලබා දෙයි, ST දුර භූගෝලීය දත්ත වර්ගය භාවිතයෙන් ලකුණු දෙකක් අතර දුර ගණනය කිරීම සඳහා.

DECLARE @g geography;  
DECLARE @h geography;  
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);  
SET @h = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);  
SELECT @g.STDistance(@h);  

VP සහ ගෘහ නිර්මාණ ශිල්පී Manash Sahoo වෙත තොප්පි ඉඟිය Highbridge.

77 අදහස්

  1. 1

    බෙදාගැනීම ගැන ඔබට බොහෝම ස්තූතියි. මෙය පහසු පිටපත් හා පේස්ට් කාර්යයක් වූ අතර එය විශිෂ්ට ලෙස ක්‍රියා කරයි. ඔබ මට බොහෝ කාලයක් ඉතිරි කර ඇත.
    සී වෙත පිවිසෙන ඕනෑම අයෙකුට FYI:
    double deg2rad (double deg) {return deg * (3.14159265358979323846 / 180.0); }

  2. 2

    ඉතා හොඳ පෝස්ට් කෑල්ලක් - ඉතා හොඳට වැඩ කළා - මට සිදු වූයේ මේසයේ නම වෙනස් කිරීමට පමණි. එය ඉතා වේගයෙන් ක්‍රියාත්මක වේ .. මට සෑහෙන තරම් කුඩා සංඛ්‍යාවක් (<400) ඇත, නමුත් මම සිතන්නේ මෙය මනාව පරිමාණය වනු ඇත. ලස්සන වෙබ් අඩවියක් ද - මම එය මගේ del.icio.us ගිණුමට එක් කර ඇති අතර එය නැවත පරීක්ෂා කරමි.

  3. 4
  4. 5

    දුර ගණනය කිරීම් සඳහා මම මුළු දවසම සොයා බැලූ අතර, හාවර්සීන් ඇල්ගොරිතම සොයාගතිමි, එය වර්ග ප්‍රකාශයක තැබිය යුතු ආකාරය පිළිබඳ උදාහරණය ලබා දීම ගැන ඔබට ස්තූතියි. ස්තූතියි, සුබ පැතුම් ඩැනියෙල්

  5. 8

    මම හිතන්නේ ඔබේ SQL ට ප්‍රකාශයක් අවශ්‍යයි.
    WHERE දුර වෙනුවට <= $ ඔබට අවශ්‍ය විය හැකි දුර
    HAVING දුර <= $ දුර භාවිතා කරන්න

    නැතිනම් මට කාලය හා ශක්තිය ඉතිරි කර ගැනීමට ස්තූතියි.

  6. 10
  7. 11
  8. 12

    මෙම කේතය බෙදා ගැනීම ගැන ඔබට බොහෝම ස්තූතියි. එය මට බොහෝ සංවර්ධන කාලය ඉතිරි කළේය. MySQL 5.x සඳහා HAVING ප්‍රකාශයක් අවශ්‍ය බව පෙන්වා දීම ගැන ඔබේ පා readers කයන්ට ස්තූතියි. ඉතා ප්රයෝජනවත්.

  9. 14

    ඉහත සූත්‍රය මට බොහෝ කාලයක් ඉතිරි කරයි. බොහොම ස්තූතියි.
    මට NMEA ආකෘතිය සහ උපාධි අතර මාරු විය යුතුය. පිටුවේ පතුලේ මෙම URL හි සූත්‍රයක් මට හමු විය. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    මෙය සත්‍යාපනය කරන්නේ කෙසේදැයි යමෙක් දන්නවාද?

    ඔබට ස්තුතියි!
    හැරී

  10. 15
  11. 16

    WHERE මා වෙනුවෙන් වැඩ නොකරන බව ද මට පෙනී ගියේය. එය HAVING ලෙස වෙනස් කර ඇති අතර සියල්ල පරිපූර්ණ ලෙස ක්‍රියා කරයි. මුලදී මම අදහස් කියවා කැදැලි තේරීමක් භාවිතා කර නැවත ලිව්වේ නැත. දෙකම හොඳින් ක්‍රියාත්මක වේ.

  12. 17
  13. 18

    ඇදහිය නොහැකි තරම් ප්‍රයෝජනවත්, ඔබට බොහෝම ස්තූතියි! මට “කොහේද” යන්නට වඩා නව “හැවිං” සමඟ යම් යම් ගැටලු ඇති විය, නමුත් වරක් මම මෙහි අදහස් කියවූ පසු (කලකිරීමෙන් දත් ඇඹරීමෙන් පැය භාගයකට පමණ පසු = පී), මම එය හොඳින් ක්‍රියාත්මක කළෙමි. ස්තූතියි ^ _ ^

  14. 19
  15. 20

    එවැනි තෝරාගත් ප්‍රකාශයක් ඉතා පරිගණකමය වශයෙන් තීව්‍ර වන අතර එම නිසා මන්දගාමී බව මතක තබා ගන්න. ඔබට එම විමසීම් බොහොමයක් තිබේ නම්, එය ඉක්මණින් දේවල් අවුල් කළ හැකිය.

    වඩා අඩු තීව්‍ර ප්‍රවේශයක් නම්, ගණනය කළ දුර ප්‍රමාණයකින් අර්ථ දක්වා ඇති පළමු (බොරතෙල්) තේරීමක් ක්‍රියාත්මක කිරීම, එනම් “වගු නාමයෙන් * තෝරන්න * එහිදී lat1 සහ lat2 අතර අක්ෂාංශ සහ lon1 සහ lon2 අතර දේශාංශය. lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, lon හා සමානයි. latdiff ~ = දුර / 111 (km සඳහා), හෝ අක්ෂාංශ අංශක 69 සිට කිලෝමීටර 1 ක් දුරින් සැතපුම් 111 ක් (පෘථිවිය තරමක් ඕවලාකාර බැවින් සුළු විචලනයකි, නමුත් මේ සඳහා ප්‍රමාණවත්) londiff = දුර / (abs (cos (deg2rad (අක්ෂාංශ)) * 111%) - හෝ සැතපුම් 69 ක් (වෙනස්කම් සඳහා ගණනය කිරීම සඳහා ඔබට සැබවින්ම තරමක් විශාල චතුරස්රයක් ගත හැකිය). ඉන්පසු එහි ප්‍රති result ලය ගෙන රේඩියල් වරණයට පෝෂණය කරන්න. සීමාවෙන් පිටත ඛණ්ඩාංක සඳහා ගණනය කිරීමට අමතක නොකරන්න - එනම් පිළිගත හැකි දේශාංශයේ පරාසය -180 සිට +180 දක්වා වන අතර පිළිගත හැකි අක්ෂාංශ පරාසය -90 සිට +90 දක්වා වේ - ඔබේ වැසිකිළිය හෝ ලොන්ඩිෆ් මෙම පරාසයෙන් පිටත ධාවනය වන්නේ නම් . බොහෝ අවස්ථාවන්හීදී මෙය අදාළ නොවිය හැකි බැවින් එය පැසිෆික් සාගරය හරහා ධ්‍රැවයේ සිට ධ්‍රැවය දක්වා වූ රේඛාවක් හරහා ගණනය කිරීම් වලට පමණක් බලපාන නමුත් එය චුකොට්කා හා ඇලස්කාවේ කොටසක් සමඟ සම්බන්ධ වේ.

    අප මෙයින් ඉටු කරන්නේ ඔබ මෙම ගණනය කරන ලකුණු සංඛ්‍යාවේ සැලකිය යුතු අඩුවීමකි. ඔබට දළ වශයෙන් ඒකාකාරව බෙදා හරින ලද දත්ත සමුදායේ ගෝලීය ලක්ෂ මිලියනයක් තිබේ නම් සහ ඔබට කිලෝමීටර 100 ක් තුළ සෙවීමට අවශ්‍ය නම්, ඔබේ පළමු (වේගවත්) සෙවීම වර්ග කිලෝමීටර 10000 ක භූමි ප්‍රමාණයකින් යුක්ත වන අතර බොහෝ විට ප්‍රති results ල 20 ක් පමණ ලැබෙනු ඇත (බෙදා හැරීම පවා පදනම් කරගෙන) වර්ග කිලෝමීටර 500 ක පමණ භූමි ප්‍රමාණයක්), එයින් අදහස් වන්නේ ඔබ මිලියනයක වාරයක් වෙනුවට මෙම විමසුම සඳහා සංකීර්ණ දුර ගණනය 20 වතාවක් ධාවනය කරන බවයි.

    • 21
      • 22

        අපූරු උපදෙස්! මම ඇත්ත වශයෙන්ම වැඩ කළේ ඇතුළත චතුරස්රය ඇද ගන්නා ශ්‍රිතයක් ලියා ඇති පුනරාවර්තන ශ්‍රිතයක් වන අතර ඉතිරි ලකුණු ඇතුළත් කර බැහැර කිරීම සඳහා පරිමිතිය වටා 'චතුරස්ර' සෑදූ පුනරාවර්තන ශ්‍රිතයකි. ප්‍රති result ලය ඇදහිය නොහැකි තරම් වේගවත් ප්‍රති result ලයක් විය - ඔහුට මයික්‍රෝ තත්පර වලින් ලකුණු මිලියන ගණනක් තක්සේරු කළ හැකිය.

        ඉහත මගේ ප්‍රවේශය අනිවාර්යයෙන්ම 'ගොරහැඩි' නමුත් හැකියාව ඇත. නැවත ස්තූතියි!

        • 23

          ඩග්,

          බහුඅස්රයක් තුළ අග දිගු ලක්ෂ්‍යයක් තිබේද යන්න තක්සේරු කිරීමට මම mysql සහ php භාවිතා කිරීමට උත්සාහ කරමි. ඔබේ සංවර්ධක මිතුරා මෙම කාර්යය ඉටු කරන්නේ කෙසේද යන්න පිළිබඳ උදාහරණ ප්‍රකාශයට පත් කළේදැයි ඔබ දන්නවාද? නැත්නම් හොඳ උදාහරණ ඔබ දන්නවාද? කලින්ම ස්තූතියි.

  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

    මෙය විශිෂ්ටයි, කෙසේ වෙතත් එය කුරුල්ලන් පියාසර කරනවා හා සමානයි. ගූගල් සිතියම් ඒපීඅයි කෙසේ හෝ මේ සඳහා සම්බන්ධ කර ගැනීමට උත්සාහ කිරීම ඉතා හොඳය (සමහර විට මාර්ග භාවිතා කිරීම ආදිය) වෙනත් ආකාරයක ප්‍රවාහන ක්‍රමයක් භාවිතා කරමින් අදහසක් ලබා දීමට. සංචාරක විකුණුම් කරුවන්ගේ ගැටලුවට කාර්යක්ෂම විසඳුමක් ලබා දිය හැකි PHP හි අනුකරණය කළ හැකි ක්‍රියාකාරීත්වයක් මා විසින් තවමත් සිදු කර නොමැත. නමුත් ඔබේ කේතය සමහරක් නැවත භාවිතා කිරීමට මට හැකි වනු ඇතැයි මම සිතමි.

  18. 27

    හායි ඩග්ලස්,
    මෙම ලිපියට බොහෝම ස්තූතියි - ඔබ මට බොහෝ කාලයක් ඉතිරි කළා.
    ප්රවේසම් වන්න,
    නිම්රොඩ් s ඉශ්‍රායෙල්

  19. 28

    හොඳ ලිපියක්! කරුණු දෙකක් අතර දුර ගණනය කරන්නේ කෙසේදැයි විස්තර කරන ලිපි රාශියක් මට හමු වූ නමුත් මම සැබවින්ම සොයන්නේ SQL ස්නිපටයයි.

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

    මගේ ගැටලුව විසඳන මෙම පිටුව සොයා ගැනීමට දින 2 ක පර්යේෂණ. පේන විදියට මම මගේ වුල්ෆ්රාම් ඇල්ෆා ගලවා මගේ ගණිතය මදින්න. WHERE සිට HAVING දක්වා වෙනස් කිරීම මගේ ස්ක්‍රිප්ට් එක වැඩ කරන පිළිවෙලට ඇත. ඔබට ස්තුතියි

  25. 37
    • 38

      ස්තූතියි ජෝර්ජි. මම දිග 'තීරුව' සොයා නොගත්තෙමි. මම කොතැනටද යන්න වෙනස් කළ පසු එය චමත්කාරජනක ලෙස ක්‍රියා කරයි!

  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 විමසුමේ 'කොහේද' යන වගන්තියේ 'දුර' නොදන්නා තීරුව මට ලැබෙමින් පවතී.

    • 54

      පීටර්, කරුණාකර අනෙක් අදහස් කියවන්න. WHERE / HAVING සඳහා සමහර පුද්ගලයින්ට වෙනස් වාක්‍ය ඛණ්ඩයක් භාවිතා කිරීමට සිදු වූ බව පෙනේ.

  38. 55
  39. 56
  40. 58

    මෙම ප්‍රයෝජනවත් ලිපිය පළ කිරීම ගැන ස්තූතියි,  
    නමුත් කිසියම් හේතුවක් නිසා මම අහන්න කැමතියි
    mysql db තුළ ඇති කෝඩ් සහ පරිශීලකයා විසින් php වෙත ඇතුළත් කර ඇති coords අතර දුර ලබා ගන්නේ කෙසේද?
    වඩාත් පැහැදිලිව විස්තර කිරීම සඳහා:
    1.ber විසින් db සහ පරිශීලකයාගේ කේත වලින් නිශ්චිත දත්ත තෝරා ගැනීම සඳහා [id] ඇතුළත් කළ යුතුය
    2. php ගොනුව [id] භාවිතා කර ඉලක්ක දත්ත (coords) ලබාගෙන පරිශීලකයා සහ ඉලක්ක ලක්ෂ්‍යය අතර දුර ගණනය කරන්න

    නැතහොත් පහත කේතයෙන් දුරක් ලබා ගත හැකිද?

    $ qry = “SELECT *, ((acos (sin ((“. $ latitude. ”* pi () / 180)) * sin ((` Latitude` * pi () / 180%)) + cos ((“. $ අක්ෂාංශ. ”* pi () / 180)) * cos ((` අක්ෂාංශ` * pi () / 180)) * cos ((“. ))) * 180 / pi ()) * 180 * 60 * 1.1515) `MyTable` වෙතින් දුර ලෙස> =“. $ දුර. ” >>>> මට මෙතැන් සිට ඇති දුර “පිටතට” ගත හැකිද?
    නැවත ස්තූතියි,
    ටිමී එස්

  41. 60

    හරි, මම උත්සාහ කළ සියල්ල ක්‍රියාත්මක නොවේ. මම කිව්වේ, මා සතුව ඇති දේ, නමුත් දුර බැහැර ය.

    මෙම කේතයේ ඇති වැරැද්ද කිසිවෙකුට දැකිය හැකිද?

    if (isset ($ _ POST ['ඉදිරිපත් කළ'])) {$ z = $ _POST ['zipcode']; $ r = P _POST ['අරය']; echo “සඳහා ප්‍රති Results ල. $ z; . නගරය, z1.state FROM mrk m, zip z1, zip z1 WHERE m.zipcode = z2.zipcode AND z1.zipcode = $ z AND (1 * acos (කප්පාදු කරන්න (sin (z1.lat / 2) * sin (m. y1 / 2) + cos (z3963.lat / 2) * cos (m.y57.2958 / 1) * cos (m.x57.2958 / 2 - z57.2958.lon / 1), 57.2958))) <= $ r ") හෝ මිය යන්න (mysql_error ()); අතර ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ row ['MktName']. "”; $ store = $ row ['LocAddSt']. ””; $ store. = $ row ['LocAddCity']. ”,“. $ row ['LocAddState']. ” “. $ පේළිය ['zipcode']; $ latitude57.2958 = $ පේළිය ['lat']; $ longitude2 = $ පේළිය ['lon']; $ latitude57.2958 = $ පේළිය ['y8']; $ longitude1 = $ පේළිය ['x1']; $ නගරය = $ පේළිය ['නගරය']; $ state = $ row ['state']; $ dis = getnew ($ latitude1, $ longitude2, $ latitude1, $ longitude2, $ unit = 'Mi'); // $ dis = දුර ($ lat1, $ lon1, $ lat1, $ lon2); $ සත්‍යාපනය = $ පේළිය ['සත්‍යාපනය']; if ($ verified == '2') {echo “”; echo “”. $ ගබඩාව. ””; echo $ dis. “සැතපුම් (දුර)”; echo “”; } else {echo “”. $ store. ””; echo $ dis. “සැතපුම් (දුර)”; echo “”; }}}

    මගේ functions.php කේතය
    ශ්‍රිතය getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ distance = (sin (deg2rad ($ latitude1)) * sin (deg2rad ($ latitude2)) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ distance = acos ($ දුර); $ distance = rad2deg ($ දුර); $ දුර = $ දුර * 60 * 1.1515; ස්විචය ($ ඒකකය) {නඩුව 'මි': බිඳීම; නඩුව 'කි.මී.': $ දුර = $ දුර * 1.609344; } ආපසු (වටය ($ දුර, 2)); }

    ඔයාට කලින්ම ස්තූතියි

  42. 61
  43. 62

    හේ ඩග්ලස්, විශිෂ්ට ලිපියක්. භූගෝලීය සංකල්ප සහ කේතය පිළිබඳ ඔබේ පැහැදිලි කිරීම ඇත්තෙන්ම සිත්ගන්නා සුළු බව මට පෙනී ගියේය. මගේ එකම යෝජනාව වනුයේ අවකාශය වෙත ගොස් ප්‍රදර්ශනය සඳහා කේතය ඇතුල් කිරීමයි (උදාහරණයක් ලෙස ස්ටැකෝවර්ෆ්ලෝ වැනි). ඔබට අවකාශය සංරක්ෂණය කිරීමට අවශ්‍ය බව මට වැටහී ඇත, නමුත් සාම්ප්‍රදායික කේත පරතරය / ඉන්ඩෙන්ටේෂන් කිරීම ක්‍රමලේඛකයෙකු ලෙස මට කියවීමට හා වි ect ටනය කිරීමට පහසු වනු ඇත. කෙසේ වෙතත්, එය කුඩා දෙයක්. නියම වැඩ දිගටම කරගෙන යන්න.

    • 63

      ස්තූතියි! මම පෝස්ට් එක ටිකක් වෙනස් කර ඇත… නමුත් සමීකරණ එතරම් ඉඩ ප්‍රමාණයක් ගන්නා අතර එය දිගු බැවින් එය ඕනෑවට වඩා උපකාරී වන බව මට විශ්වාස නැත.

  44. 64
  45. 65

    මෙහිදී ශ්‍රිතය සමඟ භාවිතා කරන විට අපට එක් වර්ගයක දුරක් ලැබේ. විමසුම භාවිතා කරමින් එහි එන අනෙක් දුර ප්‍රමාණය

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

    තෝරාගැනීමේදී දෙවරක් සූත්‍රය භාවිතා කිරීම වේගවත් බව පෙනේ (mysql 5.9) සහ කොහේද:
    $ සූත්‍රය = “(((acos (sin ((“. $ latitude. ”* pi () / 180)) * sin ((` අක්ෂාංශ` * pi () / 180)) + cos ((“. $ අක්ෂාංශ. ”* Pi () / 180)) * cos ((` අක්ෂාංශ` * pi () / 180)) * cos (((“$ දේශාංශ.” - `දේශාංශ`) * pi () / 180%)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) ”;
    $ sql = 'SELECT *,'. $ සූත්‍රය. ' '.. $ සූත්‍රය.' <= '. $ දුර;

  51. 71
  52. 72

    මෙම ලිපිය කැපීමට බොහෝම ස්තූතියි. එය ඉතා ප්‍රයෝජනවත්.
    පීඑච්පී මුලදී නිර්මාණය කළේ “පුද්ගලික මුල් පිටුව” නමින් සරල ස්ක්‍රිප්ටින් වේදිකාවක් ලෙස ය. වර්තමානයේ PHP (හයිපර්ටෙක්ස්ට් පෙර සැකසුම් සඳහා කෙටිකතාව) මයික්‍රොසොෆ්ට් හි ක්‍රියාකාරී සේවාදායක පිටු (ඒඑස්පී) තාක්ෂණයට විකල්පයකි.

    PHP යනු ගතික වෙබ් පිටු නිර්මාණය කිරීම සඳහා භාවිතා කරන විවෘත මූලාශ්‍ර සේවාදායක පාර්ශවීය භාෂාවකි. එය HTML තුළට කාවැද්දිය හැකිය. PHP සාමාන්‍යයෙන් ලිනක්ස් / යුනික්ස් වෙබ් සේවාදායකයන්හි MySQL දත්ත සමුදායක් සමඟ භාවිතා කරයි. එය බොහෝ විට වඩාත්ම ජනප්‍රිය ස්ක්‍රිප්ටින් භාෂාව විය හැකිය.

  53. 73

    ඉහත විසඳුම නිසියාකාරව ක්‍රියාත්මක නොවන බව මට පෙනී ගියේය.
    මට මෙය වෙනස් කළ යුතුයි:

    $ qqq = “තෝරන්න *, ((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 = මට ලබා ගැනීමට අවශ්‍ය දුර

    කෙසේ වෙතත් ඔබ සූත්‍රය භාවිතා කරමින්, එය මගේ ඩීබී හි සියලුම පේළි ලබා ගනී

    $ results = DB :: තෝරන්න (DB :: raw (“SELECT *, ((acos (sin ((“. $ latitude. ”* pi () / 180)) * sin ((lat * pi () / 180 )) + cos ((“. $ අක්ෂාංශ.” * Pi () / 180)) * cos ((lat * pi () / 180)) * cos ((“. $ දේශාංශ.” - lng) * pi ( ) / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) සලකුණු වලින් ඇති දුර ලෙස> = “. $ දුර));

    . ”දුර”: 1}, id “id”: 939, ”නම”: “අමිසී හි නැගෙනහිර වෙරළ පීසීරියාව”, ”ලිපිනය”: ”37.386337280273 කැස්ත්‍රෝ ශාන්ත, මවුන්ටන් වීව්, සීඒ”, ”ලැට්”: 122.08582305908, ”lng”: -16079.294719663 ” . ”Lat”: 2, ”lng”: - 790, ”දුර”: 37.387138366699}, id “id”: 122.08323669434, ”name”: ”ටෝනි සහ ඇල්බාගේ පීසා සහ පැස්ටා”, ”ලිපිනය”: ”16079.175940152 එස්කුවෙලා ඒව්, මවුන්ටන් බලන්න, CA ”,” lat ”: 3,” lng ”: - 191,” දුර ”: 37.393886566162}, id“ id ”: 122.07891845703,” name ”:” Oregano's Wood-Fired Pizza ”,” address ”:” 16078.381373826 එල් කැමිනෝ රියල්, ලොස් අල්ටොස්, සීඒ ”,” ලැට් ”: 4,” lng ”: - 570,” දුර ”: 37.402652740479}, {“ id ”: 122.07935333252,” name ”:“ බාර් සහ ග්‍රිල් ”,” ලිපිනය ”:” 16077.420540582 වයිට්ලි වීදිය, මැන්චෙස්ටර් ”,” ලැට් ”: 5,” lng ”: - 619,” දුර ”: 37.394012451172}]

    මට සැතපුම් 20 ක් සහිත පේළි ලබා ගැනීමට අවශ්‍ය නමුත් එය සියලු පේළි ගෙන එයි. කරුණාකර මම වැරදි කරන්නේ කුමක් ද?

  56. 77

    මම ඒ හා සමාන විමසුමක් සොයන නමුත් මදක් ඉදිරියට ගියෙමි - කෙටියෙන් කිවහොත් මෙය එක් එක් ඛණ්ඩාංකයේ සිට සැතපුම් 2 ක් ඇතුළත සියළුම ඛණ්ඩාංක කණ්ඩායම් කර එක් එක් කණ්ඩායමේ ඛණ්ඩාංක කොපමණදැයි ගණන් කර වැඩිපුර ඛණ්ඩාංක ඇති එක් කණ්ඩායමක් පමණක් නිෂ්පාදනය කිරීමයි. වැඩිම ඛණ්ඩාංක සංඛ්‍යාවක් ඇති කණ්ඩායම් අතර ඔබට කණ්ඩායම් එකකට වඩා තිබේ - අහඹු කණ්ඩායම එකම විශාල සංඛ්‍යාවක් ඇති කණ්ඩායම් වලින් නිකුත්වන්න -

ඔයා සිතන්නේ කුමක් ද?

මෙම වෙබ් අඩවිය ස්පෑම් අඩු කිරීම සඳහා Akismet භාවිතා කරයි. ඔබේ ප්රතිචාර දත්ත සැකසූ ආකාරය ඉගෙන ගන්න.