പി‌എച്ച്പി, എസ്‌ക്യു‌എൽ: ഹേവർ‌സിൻ‌ ഫോർ‌മുലയ്‌ക്കൊപ്പം അക്ഷാംശവും രേഖാംശവും തമ്മിലുള്ള വലിയ സർക്കിൾ ദൂരം കണക്കാക്കുക അല്ലെങ്കിൽ അന്വേഷിക്കുക

ഹേവർ‌സൈൻ‌ ഫോർ‌മുല - പി‌എച്ച്പി അല്ലെങ്കിൽ മൈഎസ്ക്യുഎൽ ഉപയോഗിച്ച് മികച്ച സർക്കിൾ ദൂരം കണക്കാക്കുക

ജി‌ഐ‌എസുമായി ബന്ധപ്പെട്ട് ഈ മാസം ഞാൻ പി‌എച്ച്പി, മൈ എസ്ക്യുഎൽ എന്നിവയിൽ കുറച്ച് പ്രോഗ്രാമിംഗ് നടത്തി. നെറ്റിൽ ചുറ്റിക്കറങ്ങുമ്പോൾ, ചിലത് കണ്ടെത്താൻ എനിക്ക് ശരിക്കും ബുദ്ധിമുട്ടായിരുന്നു ഭൂമിശാസ്ത്രപരമായ കണക്കുകൂട്ടലുകൾ രണ്ട് ലൊക്കേഷനുകൾ തമ്മിലുള്ള ദൂരം കണ്ടെത്തുന്നതിനാൽ അവ ഇവിടെ പങ്കിടാൻ ഞാൻ ആഗ്രഹിച്ചു.

മികച്ച സർക്കിൾ ദൂരമുള്ള ഫ്ലൈറ്റ് മാപ്പ് യൂറോപ്പ്

രണ്ട് പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം കണക്കാക്കുന്നതിനുള്ള ലളിതമായ മാർഗ്ഗം ഒരു ത്രികോണത്തിന്റെ (A² + B² = C²) ഹൈപ്പോടെൻസസ് കണക്കാക്കാൻ പൈതഗോറിയൻ ഫോർമുല ഉപയോഗിക്കുക എന്നതാണ്. ഇത് അറിയപ്പെടുന്നു യൂക്ലിഡിയൻ ദൂരം.

അതൊരു രസകരമായ തുടക്കമാണ്, പക്ഷേ അക്ഷാംശവും രേഖാംശവും തമ്മിലുള്ള ദൂരം ആയതിനാൽ ഇത് ഭൂമിശാസ്ത്രത്തിൽ ബാധകമല്ല തുല്യ അകലമല്ല വേറിട്ട്. നിങ്ങൾ മധ്യരേഖയോട് അടുക്കുമ്പോൾ അക്ഷാംശരേഖകൾ കൂടുതൽ അകന്നുപോകുന്നു. നിങ്ങൾ ചിലതരം ലളിതമായ ത്രികോണ സമവാക്യം ഉപയോഗിക്കുകയാണെങ്കിൽ, ഭൂമിയുടെ വക്രത കാരണം ഇത് ഒരു സ്ഥലത്ത് ദൂരം കൃത്യമായി അളക്കുകയും മറ്റൊരിടത്ത് ഭയങ്കര തെറ്റായി കണക്കാക്കുകയും ചെയ്യും.

മികച്ച സർക്കിൾ ദൂരം

ഭൂമിക്കു ചുറ്റും വളരെ ദൂരം സഞ്ചരിക്കുന്ന റൂട്ടുകളെ അറിയപ്പെടുന്നു മികച്ച സർക്കിൾ ദൂരം. അതായത്… ഒരു ഗോളത്തിലെ രണ്ട് പോയിന്റുകൾ തമ്മിലുള്ള ഏറ്റവും കുറഞ്ഞ ദൂരം ഒരു ഫ്ലാറ്റ് മാപ്പിലെ പോയിന്റുകളേക്കാൾ വ്യത്യസ്തമാണ്. അക്ഷാംശവും രേഖാംശ രേഖകളും തുല്യമല്ല എന്ന വസ്തുതയുമായി ഇത് സംയോജിപ്പിക്കുക… നിങ്ങൾക്ക് ഒരു പ്രയാസകരമായ കണക്കുകൂട്ടൽ ലഭിച്ചു.

മികച്ച സർക്കിളുകൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന്റെ അതിശയകരമായ വീഡിയോ വിശദീകരണം ഇതാ.

ദി ഹേവർസിൻ ഫോർമുല

ഭൂമിയുടെ വക്രത ഉപയോഗിച്ചുള്ള ദൂരം ഹാവെർസിൻ ഫോർമുല, ഭൂമിയുടെ വക്രത അനുവദിക്കുന്നതിന് ത്രികോണമിതി ഉപയോഗിക്കുന്നു. ഭൂമിയിലെ 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."

നിങ്ങൾ ഇത് ഇച്ഛാനുസൃതമാക്കേണ്ടതുണ്ട്:

  • $ രേഖാംശം - ഇത് ഒരു പി‌എച്ച്പി വേരിയബിളാണ്, അവിടെ ഞാൻ പോയിന്റിന്റെ രേഖാംശം കടന്നുപോകുന്നു.
  • $ അക്ഷാംശം - ഇത് ഒരു പി‌എച്ച്പി വേരിയബിളാണ്, അവിടെ ഞാൻ പോയിന്റിന്റെ രേഖാംശം കടന്നുപോകുന്നു.
  • $ ദൂരം - എല്ലാ റെക്കോർഡുകളും കുറവോ തുല്യമോ കണ്ടെത്താൻ നിങ്ങൾ ആഗ്രഹിക്കുന്ന ദൂരം ഇതാണ്.
  • മേശ - ഇതാണ് പട്ടിക… നിങ്ങളുടെ പട്ടികയുടെ പേര് ഉപയോഗിച്ച് അത് മാറ്റിസ്ഥാപിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കും.
  • അക്ഷാംശം - ഇതാണ് നിങ്ങളുടെ അക്ഷാംശത്തിന്റെ ഫീൽഡ്.
  • രേഖാംശം - ഇതാണ് നിങ്ങളുടെ രേഖാംശ മേഖല.

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

നിങ്ങൾ ഇത് ഇച്ഛാനുസൃതമാക്കേണ്ടതുണ്ട്:

  • $ രേഖാംശം - ഇത് ഒരു പി‌എച്ച്പി വേരിയബിളാണ്, അവിടെ ഞാൻ പോയിന്റിന്റെ രേഖാംശം കടന്നുപോകുന്നു.
  • $ അക്ഷാംശം - ഇത് ഒരു പി‌എച്ച്പി വേരിയബിളാണ്, അവിടെ ഞാൻ പോയിന്റിന്റെ രേഖാംശം കടന്നുപോകുന്നു.
  • $ ദൂരം - എല്ലാ റെക്കോർഡുകളും കുറവോ തുല്യമോ കണ്ടെത്താൻ നിങ്ങൾ ആഗ്രഹിക്കുന്ന ദൂരം ഇതാണ്.
  • മേശ - ഇതാണ് പട്ടിക… നിങ്ങളുടെ പട്ടികയുടെ പേര് ഉപയോഗിച്ച് അത് മാറ്റിസ്ഥാപിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കും.
  • അക്ഷാംശം - ഇതാണ് നിങ്ങളുടെ അക്ഷാംശത്തിന്റെ ഫീൽഡ്.
  • രേഖാംശം - ഇതാണ് നിങ്ങളുടെ രേഖാംശ മേഖല.

വടക്കേ അമേരിക്കയിലുടനീളം ആയിരത്തിലധികം സ്ഥലങ്ങളുള്ള ഒരു റീട്ടെയിൽ സ്റ്റോറിനായി ഞങ്ങൾ ഉപയോഗിച്ച ഒരു എന്റർപ്രൈസ് മാപ്പിംഗ് പ്ലാറ്റ്‌ഫോമിൽ ഞാൻ ഈ കോഡ് ഉപയോഗിച്ചു, അത് മനോഹരമായി പ്രവർത്തിച്ചു.

77 അഭിപ്രായങ്ങള്

  1. 1

    പങ്കിട്ടതിന് വളരെ നന്ദി. ഇതൊരു എളുപ്പമുള്ള കോപ്പി പേസ്റ്റ് ജോലിയായിരുന്നു, മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു. നിങ്ങൾ എനിക്ക് ധാരാളം സമയം ലാഭിച്ചു.
    സിയിലേക്ക് പോർട്ട് ചെയ്യുന്ന ആർക്കും FYI:
    ഇരട്ട ഡിഗ്രി 2 റാഡ് (ഇരട്ട ഡിഗ്രി) {റിട്ടേൺ ഡിഗ്രി * (3.14159265358979323846 / 180.0); }

  2. 2

    വളരെ നല്ല പോസ്റ്റിംഗ് - വളരെ മനോഹരമായി പ്രവർത്തിച്ചു - എനിക്ക് ലാറ്റ്-ലോംഗ് കൈവശമുള്ള പട്ടികയുടെ പേര് മാത്രമേ മാറ്റേണ്ടതുള്ളൂ. ഇത് വളരെ വേഗത്തിൽ പ്രവർത്തിക്കുന്നു .. എനിക്ക് വളരെ ചെറിയ എണ്ണം ലാറ്റ്-ലോംഗുകൾ (<400) ഉണ്ട്, എന്നാൽ ഇത് മികച്ച തോതിൽ അളക്കുമെന്ന് ഞാൻ കരുതുന്നു. നല്ല സൈറ്റും - ഞാൻ ഇത് എന്റെ del.icio.us അക്ക to ണ്ടിലേക്ക് ചേർത്തു, പതിവായി പരിശോധിക്കും.

  3. 4
  4. 5

    ദൂര കണക്കുകൂട്ടലുകൾക്കായി ഞാൻ ദിവസം മുഴുവൻ തിരഞ്ഞു, ഹാർവെർസിൻ അൽഗോരിതം കണ്ടെത്തി, ഇത് ഒരു ചതുരശ്ര പ്രസ്‌താവനയിൽ എങ്ങനെ ഉൾപ്പെടുത്താമെന്നതിന്റെ ഉദാഹരണം നൽകിയതിന് നന്ദി. നന്ദി, അഭിവാദ്യങ്ങൾ, ഡാനിയേൽ

  5. 8

    നിങ്ങളുടെ SQL- ന് ഒരു പ്രസ്താവന ആവശ്യമാണെന്ന് ഞാൻ കരുതുന്നു.
    WHERE ദൂരത്തിന് പകരം <= $ നിങ്ങൾക്ക് ആവശ്യമുള്ളേക്കാവുന്ന ദൂരം
    ദൂരം <= $ ദൂരം ഉപയോഗിക്കുക

    അല്ലെങ്കിൽ ഒരു കൂട്ടം സമയവും .ർജ്ജവും ലാഭിച്ചതിന് നന്ദി.

    • 9

      ഹായ് ഡേവിഡ്,

      നിങ്ങൾ ഏതെങ്കിലും തരത്തിലുള്ള GROUP BY പ്രസ്താവന നടത്തുകയാണെങ്കിൽ, നിങ്ങൾക്ക് HAVING ആവശ്യമാണ്. മുകളിലുള്ള ഉദാഹരണത്തിൽ ഞാൻ അത് ചെയ്യുന്നില്ല.

      ഡഗ്

  6. 10

    MySQL 5.x പ്രകാരം, WHERE ക്ലോസ് കാണുമ്പോൾ നിങ്ങൾക്ക് ഒരു അപരനാമം ഉപയോഗിക്കാൻ കഴിയില്ല http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

    മുകളിലുള്ള ചോദ്യങ്ങളിൽ WHERE എന്നതിനുപകരം HAVING ഉപയോഗിക്കുക

  7. 11
  8. 12

    ഈ കോഡ് പങ്കിട്ടതിന് വളരെ നന്ദി. ഇത് എനിക്ക് വളരെയധികം വികസന സമയം ലാഭിച്ചു. കൂടാതെ, MySQL 5.x- ന് ഒരു HAVING സ്റ്റേറ്റ്മെന്റ് ആവശ്യമാണെന്ന് ചൂണ്ടിക്കാണിച്ചതിന് നിങ്ങളുടെ വായനക്കാർക്ക് നന്ദി. വളരെ സഹായകരം.

  9. 14

    മുകളിലുള്ള സൂത്രവാക്യം എനിക്ക് ധാരാളം സമയം ലാഭിക്കുന്നു. വളരെയധികം നന്ദി.
    എനിക്ക് എൻ‌എം‌ഇ‌എ ഫോർ‌മാറ്റിനും ഡിഗ്രികൾ‌ക്കും ഇടയിൽ മാറേണ്ടതുണ്ട്. പേജിന്റെ ചുവടെ ഈ URL ൽ ഞാൻ ഒരു ഫോർമുല കണ്ടെത്തി. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    ഇത് എങ്ങനെ സ്ഥിരീകരിക്കാമെന്ന് ആർക്കെങ്കിലും അറിയാമോ?

    നന്ദി!
    ഹാരി

  10. 15

    ഹലോ,

    മറ്റൊരു ചോദ്യം. ചുവടെയുള്ളത് പോലെ എൻ‌എം‌ഇ‌എ സ്ട്രിംഗുകൾക്കായി ഒരു ഫോർമുല ഉണ്ടോ?

    1342.7500, എൻ, 10052.2287, ഇ

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

    നന്ദി,
    ഹാരി

  11. 16

    WHERE എനിക്ക് വേണ്ടി പ്രവർത്തിക്കുന്നില്ലെന്നും ഞാൻ കണ്ടെത്തി. ഇത് HAVING ലേക്ക് മാറ്റി എല്ലാം മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു. ആദ്യം ഞാൻ അഭിപ്രായങ്ങൾ വായിച്ചിട്ടില്ല, ഒരു നെസ്റ്റഡ് സെലക്ട് ഉപയോഗിച്ച് ഇത് വീണ്ടും എഴുതി. രണ്ടും നന്നായി പ്രവർത്തിക്കും.

  12. 17
  13. 18

    അവിശ്വസനീയമാംവിധം സഹായകരമാണ്, വളരെ നന്ദി! “WHERE” എന്നതിലുപരി പുതിയ “HAVING” ൽ എനിക്ക് ചില പ്രശ്‌നങ്ങളുണ്ടായിരുന്നു, പക്ഷേ ഒരിക്കൽ ഞാൻ ഇവിടെ അഭിപ്രായങ്ങൾ വായിച്ചു (നിരാശയോടെ പല്ല് പൊടിച്ച് അരമണിക്കൂറിനുശേഷം = P), ഞാൻ അത് നന്നായി പ്രവർത്തിക്കുന്നു. നന്ദി ^ _ ^

  14. 19
  15. 20

    അതുപോലുള്ള ഒരു തിരഞ്ഞെടുത്ത പ്രസ്താവന വളരെ കംപ്യൂട്ടേഷണൽ തീവ്രവും വേഗത കുറഞ്ഞതുമാണെന്ന് ഓർമ്മിക്കുക. നിങ്ങൾക്ക് അത്തരം ചോദ്യങ്ങൾ ധാരാളം ഉണ്ടെങ്കിൽ, അത് വളരെ വേഗത്തിൽ കാര്യങ്ങൾ തകർക്കും.

    കണക്കാക്കിയ ദൂരം നിർവചിച്ചിരിക്കുന്ന ഒരു സ്‌ക്വയർ ഏരിയ ഉപയോഗിച്ച് ആദ്യത്തെ (ക്രൂഡ്) സെലക്ട് പ്രവർത്തിപ്പിക്കുക എന്നതാണ് വളരെ തീവ്രമായ സമീപനം, അതായത് “പട്ടികയുടെ പേരിനിൽ നിന്ന് തിരഞ്ഞെടുക്കുക *, അവിടെ lat1 നും lat2 നും ഇടയിലുള്ള അക്ഷാംശവും lon1 നും lon2 നും ഇടയിലുള്ള രേഖാംശവും”. lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, lon ന് സമാനമാണ്. 111 ഡിഗ്രി അക്ഷാംശം ~ 69 കിലോമീറ്റർ ആയതിനാൽ ലാറ്റിഫ് ~ = ദൂരം / 1 (കിലോമീറ്ററിന്), അല്ലെങ്കിൽ മൈലിന് ദൂരം / 111 (ഭൂമി അല്പം ഓവൽ ആയതിനാൽ ചെറിയ വ്യതിയാനം, പക്ഷേ ഈ ആവശ്യത്തിന് പര്യാപ്തമാണ്). londiff = ദൂരം / (abs (cos (deg2rad (അക്ഷാംശം)) * 111%) - അല്ലെങ്കിൽ 69 മൈലുകൾക്ക് (വ്യതിയാനങ്ങൾ കണക്കിലെടുക്കുന്നതിന് നിങ്ങൾക്ക് യഥാർത്ഥത്തിൽ അല്പം വലിയ ചതുരം എടുക്കാം). അതിന്റെ ഫലം എടുത്ത് റേഡിയൽ സെലക്ടിലേക്ക് നൽകുക. അതിർത്തിക്കപ്പുറമുള്ള കോർഡിനേറ്റുകൾക്കായി കണക്കുകൂട്ടാൻ മറക്കരുത് - അതായത് സ്വീകാര്യമായ രേഖാംശത്തിന്റെ പരിധി -180 മുതൽ +180 വരെയും സ്വീകാര്യമായ അക്ഷാംശത്തിന്റെ പരിധി -90 മുതൽ +90 വരെയുമാണ് - നിങ്ങളുടെ ലാഡിഫ് അല്ലെങ്കിൽ ലോണ്ടിഫ് ഈ പരിധിക്ക് പുറത്ത് പ്രവർത്തിക്കുന്നുവെങ്കിൽ . മിക്ക കേസുകളിലും ഇത് ബാധകമാകില്ല, കാരണം ഇത് പസിഫിക് സമുദ്രത്തിലൂടെ ധ്രുവത്തിൽ നിന്ന് ധ്രുവത്തിലേക്കുള്ള ഒരു രേഖയിലൂടെയുള്ള കണക്കുകൂട്ടലുകളെ മാത്രമേ ബാധിക്കുകയുള്ളൂ, എന്നിരുന്നാലും ഇത് ചുക്കോട്‌കയുടെ ഭാഗവും അലാസ്കയുടെ ഭാഗവും തമ്മിൽ വിഭജിക്കുന്നു.

    നിങ്ങൾ ഇത് കണക്കാക്കുന്നത് നിങ്ങൾ ഈ കണക്കുകൂട്ടൽ നടത്തുന്ന പോയിന്റുകളുടെ എണ്ണത്തിൽ ഗണ്യമായ കുറവുണ്ടാക്കുന്നു. ഡാറ്റാബേസിൽ നിങ്ങൾക്ക് ഏകദേശം ഒരു ദശലക്ഷം ആഗോള പോയിന്റുകൾ തുല്യമായി വിതരണം ചെയ്യുകയും 100 കിലോമീറ്ററിനുള്ളിൽ തിരയാൻ ആഗ്രഹിക്കുകയും ചെയ്യുന്നുവെങ്കിൽ, നിങ്ങളുടെ ആദ്യത്തെ (വേഗതയേറിയ) തിരയൽ 10000 ചതുരശ്ര കിലോമീറ്റർ വിസ്തൃതിയുള്ളതാണ്, മാത്രമല്ല ഇത് ഏകദേശം 20 ഫലങ്ങൾ നൽകും (ഒരു വിതരണത്തെപ്പോലും അടിസ്ഥാനമാക്കി) ഏകദേശം 500M ചതുരശ്ര കിലോമീറ്റർ വിസ്തീർണ്ണം), അതായത് ഈ ചോദ്യത്തിനായി നിങ്ങൾ ഒരു ദശലക്ഷം തവണയ്ക്ക് പകരം 20 തവണ സങ്കീർണ്ണമായ ദൂരം കണക്കാക്കുന്നു.

    • 21

      ഉദാഹരണത്തിലെ ചെറിയ തെറ്റ്… അത് നമ്മുടെ… സ്ക്വയറിന്റെ “ദൂരം” നോക്കുന്നതിനാൽ 50 കിലോമീറ്ററിനുള്ളിൽ (100 അല്ല) ആയിരിക്കും.

      • 22

        മനോഹരമായ ഉപദേശം! ഉള്ളിലെ സ്ക്വയർ വലിച്ചെടുക്കുന്ന ഒരു ഫംഗ്ഷനും പിന്നീട് ബാക്കിയുള്ള പോയിന്റുകൾ ഉൾപ്പെടുത്തുന്നതിനും ഒഴിവാക്കുന്നതിനുമായി പരിധിക്കകത്ത് 'സ്ക്വയറുകൾ' ഉണ്ടാക്കുന്ന ഒരു ആവർത്തന ഫംഗ്ഷൻ എഴുതിയ ഒരു ഡവലപ്പറുമായി ഞാൻ ശരിക്കും പ്രവർത്തിച്ചു. ഫലം അവിശ്വസനീയമാംവിധം വേഗത്തിലുള്ള ഫലമായിരുന്നു - മൈക്രോസെക്കൻഡിൽ ദശലക്ഷക്കണക്കിന് പോയിന്റുകൾ അദ്ദേഹത്തിന് വിലയിരുത്താൻ കഴിഞ്ഞു.

        മുകളിലുള്ള എന്റെ സമീപനം തീർച്ചയായും 'ക്രൂഡ്' ആണ്, പക്ഷേ കഴിവുള്ളതാണ്. നന്ദി വീണ്ടും!

        • 23

          ഡഗ്,

          ഒരു പോളിഗോണിനുള്ളിൽ ഒരു നീണ്ട നീളമുള്ള പോയിന്റ് ഉണ്ടോ എന്ന് വിലയിരുത്താൻ ഞാൻ mysql, php എന്നിവ ഉപയോഗിക്കാൻ ശ്രമിക്കുന്നു. ഈ ടാസ്ക് എങ്ങനെ നിർവഹിക്കാം എന്നതിനെക്കുറിച്ച് നിങ്ങളുടെ ഡവലപ്പർ സുഹൃത്ത് എന്തെങ്കിലും ഉദാഹരണങ്ങൾ പ്രസിദ്ധീകരിച്ചിട്ടുണ്ടോ എന്ന് നിങ്ങൾക്കറിയാമോ. അല്ലെങ്കിൽ എന്തെങ്കിലും നല്ല ഉദാഹരണങ്ങൾ നിങ്ങൾക്ക് അറിയാമോ. മുൻകൂർ നന്ദി.

  16. 24

    എല്ലാവർക്കും ഹായ് ഇത് എന്റെ ടെസ്റ്റ് എസ്‌ക്യു‌എൽ പ്രസ്താവനയാണ്:

    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

    ഹായ് ഡഗ്ലസ്,
    ഈ ലേഖനത്തിന് വളരെയധികം നന്ദി - നിങ്ങൾ എനിക്ക് ധാരാളം സമയം ലാഭിച്ചു.
    ശ്രദ്ധപുലർത്തുക,
    നിമ്രോഡ് s ഇസ്രായേൽ

  19. 28

    നല്ല ലേഖനം! രണ്ട് പോയിന്റുകൾ തമ്മിലുള്ള ദൂരം എങ്ങനെ കണക്കാക്കാമെന്ന് വിവരിക്കുന്ന ധാരാളം ലേഖനങ്ങൾ ഞാൻ കണ്ടെത്തി, പക്ഷേ ഞാൻ ശരിക്കും SQL സ്‌നിപ്പെറ്റിനായി തിരയുകയായിരുന്നു.

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

    എന്റെ പ്രശ്നം പരിഹരിക്കുന്ന ഈ പേജ് കണ്ടെത്തുന്നതിന് 2 ദിവസത്തെ ഗവേഷണം. ഞാൻ എന്റെ വോൾഫ്രാം ആൽഫയെ തകർക്കുകയും എന്റെ ഗണിതശാസ്ത്രത്തിൽ ബ്രഷ് ചെയ്യുകയും ചെയ്യുന്നതായി തോന്നുന്നു. WHERE ൽ നിന്ന് HAVING എന്നതിലേക്കുള്ള മാറ്റത്തിന് പ്രവർത്തന ക്രമത്തിൽ എന്റെ സ്ക്രിപ്റ്റ് ഉണ്ട്. നന്ദി

  25. 37
  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- നുള്ളിലെ കോഡുകളും ഉപയോക്താവ് പി‌എച്ച്പിയിൽ ചേർത്ത കോഡുകളും തമ്മിലുള്ള ദൂരം എങ്ങനെ ലഭിക്കും?
    കൂടുതൽ വ്യക്തമായി വിവരിക്കുന്നതിന്:
    1. ഡിബിയിൽ നിന്നും ഉപയോക്താവിന്റെ കോർഡുകളിൽ നിന്നും നിർദ്ദിഷ്ട ഡാറ്റ തിരഞ്ഞെടുക്കുന്നതിന് ഉപയോക്താവ് [ഐഡി] ചേർക്കേണ്ടതുണ്ട്
    2. php ഫയലിന് [id] ഉപയോഗിച്ച് ടാർഗെറ്റ് ഡാറ്റ (കോർഡുകൾ) ലഭിക്കുകയും ഉപയോക്താവും ടാർഗെറ്റ് പോയിന്റും തമ്മിലുള്ള ദൂരം കണക്കാക്കുകയും ചെയ്യുക

    അല്ലെങ്കിൽ ചുവടെയുള്ള കോഡിൽ നിന്ന് അകലം നേടാനാകുമോ?

    $ qry = “തിരഞ്ഞെടുക്കുക *, ((acos (sin ((“. $ latitude. ”* pi () / 180%)) * sin ((` Latitude` * pi () / 180%)) + cos ((“. $ അക്ഷാംശം. ))) * 180 / pi ()) * 180 * 180 * 180) `MyTable` WHERE ദൂരം> =“. $ ദൂരം. ” >>>> എനിക്ക് ഇവിടെ നിന്നുള്ള ദൂരം “പുറത്തെടുക്കാൻ” കഴിയുമോ?
    നന്ദി വീണ്ടും,
    ടിമ്മി എസ്

    • 59

      സാരമില്ല, പി‌എച്ച്പിയിലെ “ഫംഗ്ഷൻ” എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് ഞാൻ മനസ്സിലാക്കി
      $ dis = getDistanceBetweenPointsNew ($ userLati, $ userLongi, $ lati, $ longi, $ unit = 'Km')
      ഒത്തിരി നന്ദി!! 

  41. 60

    ശരി, ഞാൻ ശ്രമിച്ചതെല്ലാം പ്രവർത്തിക്കുന്നില്ല. ഞാൻ ഉദ്ദേശിക്കുന്നത്, എനിക്ക് പ്രവർത്തികളുണ്ട്, പക്ഷേ ദൂരം അകലെയാണ്.

    ഈ കോഡിലെ കുഴപ്പം എന്താണെന്ന് ആർക്കെങ്കിലും കാണാൻ കഴിയുമോ?

    if (isset ($ _ POST ['submit'])) {$ z = $ _POST ['zipcode']; $ r = $ _POST ['ദൂരം']; എക്കോ “ഫലങ്ങൾ“. $ z; . നഗരം, z1.state FROM mrk m, zip z1, zip z1 WHERE m.zipcode = z2.zipcode AND z1.zipcode = $ z AND (1 * acos (വെട്ടിച്ചുരുക്കുക (പാപം (z1.lat / 2) * പാപം (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']. ” “. $ വരി ['പിൻ‌കോഡ്']; $ latitude57.2958 = $ row ['lat']; $ longitude2 = $ row ['lon']; $ latitude57.2958 = $ row ['y8']; $ longitude1 = $ row ['x1']; $ നഗരം = $ വരി ['നഗരം']; $ state = $ row ['state']; $ dis = getnew ($ latitude1, $ longitude2, $ latitude1, $ longitude2, $ unit = 'Mi'); // $ dis = ദൂരം ($ lat1, $ lon1, $ lat1, $ lon2); $ പരിശോധിച്ചുറപ്പിച്ച = $ വരി ['പരിശോധിച്ചുറപ്പിച്ച']; if ($ പരിശോധിച്ചുറപ്പിച്ച == '2') {എക്കോ “”; എക്കോ “”. $ സ്റ്റോർ. ””; എക്കോ $ dis. " മൈലുകള്ക്കപ്പുറം"; എക്കോ “”; } else {എക്കോ “”. $ സ്റ്റോർ. ””; എക്കോ $ dis. " മൈലുകള്ക്കപ്പുറം"; എക്കോ “”; }}}

    എന്റെ functions.php കോഡ്
    get getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ distance = (പാപം (deg2rad ($ latitude1)) * sin (deg2rad ($ latitude2)) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ ദൂരം = അക്കോസ് ($ ദൂരം); $ ദൂരം = rad2deg ($ ദൂരം); $ ദൂരം = $ ദൂരം * 60 * 1.1515; സ്വിച്ച് ($ യൂണിറ്റ്) {കേസ് 'മി': ബ്രേക്ക്; കേസ് 'കി.മീ': $ ദൂരം = $ ദൂരം * 1.609344; } മടക്കം (റ round ണ്ട് ($ ദൂരം, 2 ശതമാനം); }

    മുൻകൂർ നന്ദി

  42. 61
  43. 62

    ഹേ ഡഗ്ലസ്, മികച്ച ലേഖനം. ഭൂമിശാസ്ത്രപരമായ ആശയങ്ങളെയും കോഡിനെയും കുറിച്ചുള്ള നിങ്ങളുടെ വിശദീകരണം ഞാൻ രസകരമായി കണ്ടെത്തി. എന്റെ ഏക നിർദ്ദേശം സ്‌പെയ്‌സിനായി പ്രദർശിപ്പിക്കുന്നതിനുള്ള കോഡ് ഇൻഡന്റ് ചെയ്യുക (ഉദാഹരണത്തിന് സ്റ്റാക്കോവർഫ്ലോ പോലെ). നിങ്ങൾ‌ക്ക് സ്ഥലം സംരക്ഷിക്കാൻ‌ താൽ‌പ്പര്യമുണ്ടെന്ന് ഞാൻ‌ മനസ്സിലാക്കുന്നു, പക്ഷേ പരമ്പരാഗത കോഡ് സ്പേസിംഗ് / ഇൻ‌ഡെൻറേഷൻ‌ എന്നെ ഒരു പ്രോഗ്രാമർ‌ എന്ന നിലയിൽ വായിക്കാനും വിച്ഛേദിക്കാനും വളരെ എളുപ്പമാക്കുന്നു. എന്തായാലും, അതൊരു ചെറിയ കാര്യമാണ്. മികച്ച പ്രവർത്തനം തുടരുക.

    • 63

      നന്ദി! ഞാൻ കുറിപ്പ് അല്പം പരിഷ്‌ക്കരിച്ചു… എന്നാൽ സമവാക്യങ്ങൾ വളരെയധികം ഇടം പിടിക്കുന്നു, മാത്രമല്ല ഇത് വളരെയധികം സഹായിക്കുമെന്ന് എനിക്ക് ഉറപ്പില്ല.

  44. 64
  45. 65

    ഫംഗ്ഷനോടൊപ്പം ഉപയോഗിക്കുമ്പോൾ ഇവിടെ നമുക്ക് ഒരു തരം ദൂരം ലഭിക്കുന്നു..അപ്പോൾ ചോദ്യം ഉപയോഗിച്ച് അതിന്റെ വരുന്ന മറ്റ് ദൂരം

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

    തിരഞ്ഞെടുത്തതിലെ സൂത്രവാക്യത്തിന്റെ ഇരട്ടി ഫോർമുല ഉപയോഗിക്കുന്നത് എവിടെയാണെന്ന് തോന്നുന്നു (mysql 5.9):
    $ ഫോർമുല = “(((അക്കോസ് (പാപം ((“. $ അക്ഷാംശം. ”* പൈ () / 180)) * പാപം ((` അക്ഷാംശം` * പൈ () / 180)) + കോസ് ((“. $ അക്ഷാംശം. ”* Pi () / 180%)) * cos ((` അക്ഷാംശം` * pi () / 180%)) * cos (((“. $ രേഖാംശം.” - `രേഖാംശം`) * pi () / 180%)))) * 180 / പൈ ()) * 60 * 1.1515 * 1.609344) ”;
    $ sql = 'തിരഞ്ഞെടുക്കുക *,'. $ സമവാക്യം. ' പട്ടികയിൽ നിന്നുള്ള ദൂരം '.. $ സമവാക്യം.' <= '. $ ദൂരം;

  51. 71

    നന്ദി…

    എങ്കിൽ പ്രവർത്തിക്കുന്നില്ല
    “എവിടെ ദൂരം”

    എങ്കിൽ പ്രവർത്തിക്കുന്നു
    “ദൂരം ഉണ്ട്”

  52. 72

    ഈ ലേഖനം കത്രിച്ചതിന് ഒരുപാട് നന്ദി.ഇത് വളരെ സഹായകരമാണ്.
    “പേഴ്സണൽ ഹോം പേജ്” എന്ന ലളിതമായ സ്ക്രിപ്റ്റിംഗ് പ്ലാറ്റ്ഫോമായിട്ടാണ് പി‌എച്ച്പി ആദ്യം സൃഷ്ടിച്ചത്. ഇപ്പോൾ മൈക്രോസോഫ്റ്റിന്റെ ആക്റ്റീവ് സെർവർ പേജുകളുടെ (എഎസ്പി) സാങ്കേതികവിദ്യയുടെ ഒരു ബദലാണ് പി‌എച്ച്പി (ഹൈപ്പർ‌ടെക്സ്റ്റ് പ്രീപ്രൊസസ്സറിനായുള്ള ഹ്രസ്വ).

    ചലനാത്മക വെബ് പേജുകൾ സൃഷ്ടിക്കുന്നതിന് ഉപയോഗിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ് സെർവർ സൈഡ് ഭാഷയാണ് പി‌എച്ച്പി. ഇത് HTML- ൽ ഉൾപ്പെടുത്താം. ലിനക്സ് / യുണിക്സ് വെബ് സെർവറുകളിലെ ഒരു MySQL ഡാറ്റാബേസുമായി ചേർന്നാണ് പി‌എച്ച്പി സാധാരണയായി ഉപയോഗിക്കുന്നത്. ഒരുപക്ഷേ ഏറ്റവും പ്രചാരമുള്ള സ്ക്രിപ്റ്റിംഗ് ഭാഷയാണിത്.

  53. 73

    മുകളിൽ പറഞ്ഞ പരിഹാരം ശരിയായി പ്രവർത്തിക്കുന്നില്ലെന്ന് ഞാൻ കണ്ടെത്തി.
    എനിക്ക് ഇതിലേക്ക് മാറേണ്ടതുണ്ട്:

    $ qqq = “തിരഞ്ഞെടുക്കുക *, (((പാപം ((“. $ അക്ഷാംശം. ”* pi () / 180)) * പാപം ((` ലാറ്റ്` * പൈ () / 180)) + കോസ് ((”). $ അക്ഷാംശം. “* pi () / 180%)) * cos ((` latt` * pi () / 180)) * cos (((”. $ രേഖാംശം.“ - `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) `രജിസ്റ്റർ`“

  54. 75

    നന്ദി സർ വ്രോക്കിംഗ് .. പക്ഷെ എനിക്ക് ഒരു ചോദ്യമുണ്ട് ഡെസിമൽ പോയിന്റ് ഇല്ലാതെ output ട്ട്പുട്ട് ചെയ്യണമെങ്കിൽ എനിക്ക് എന്തുചെയ്യാൻ കഴിയും ..?

    മുൻകൂർ നന്ദി.

  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, ”പേര്”: ”ഫ്രാങ്കി ജോണി & ലുയിഗോ ടൂ”, ”വിലാസം”: ”939 ഡബ്ല്യു എൽ കാമിനോ റിയൽ, മ ain ണ്ടെയ്ൻ വ്യൂ, സി‌എ”, ”ലാറ്റ്”: 37.386337280273, ”lng”: - 122.08582305908, ”ദൂരം”: 16079.294719663}, id “ഐഡി”: 2, ”പേര്”: ”അമീസിയുടെ ഈസ്റ്റ് കോസ്റ്റ് പിസ്സേരിയ”, ”വിലാസം”: ”790 കാസ്ട്രോ സെന്റ്, മ ain ണ്ടെയ്ൻ വ്യൂ, സി‌എ”, ”ലാറ്റ്”: 37.387138366699, ”lng”: -122.08323669434, ”ദൂരം”: 16079.175940152}, {“ഐഡി”: 3, ”പേര്”: ”കാപ്പിന്റെ പിസ്സ ബാർ & ഗ്രിൽ”, ”വിലാസം”: ”191 കാസ്ട്രോ സെന്റ്, മ ain ണ്ടെയ്ൻ വ്യൂ, സി‌എ”, ”ലാറ്റ്”: 37.393886566162, ”Lng”: - 122.07891845703, ”ദൂരം”: 16078.381373826}, {“id”: 4, ”പേര്”: ”റ Table ണ്ട് ടേബിൾ പിസ്സ: മ ain ണ്ടെയ്ൻ വ്യൂ”, ”വിലാസം”: ”570 N ഷോർ‌ലൈൻ ബ്ലൂവിഡി, മ ain ണ്ടെയ്ൻ വ്യൂ, സി‌എ”, ”Lat”: 37.402652740479, ”lng”: - 122.07935333252, ”ദൂരം”: 16077.420540582}, {“id”: 5, ”name”: ”ടോണി & ആൽ‌ബയുടെ പിസ്സയും പാസ്തയും”, ”വിലാസം”: ”619 എസ്ക്യൂല അവന്യൂ, പർവ്വതം കാണുക, സി‌എ ”,” ലാറ്റ് ”: 37.394012451172,” lng ”: - 122.09552764893,” ദൂരം ”: 16078.563225154}, {“ ഐഡി ”: 6,” പേര് ”:” ഒറിഗാനോയുടെ വുഡ്-ഫയർഡ് പിസ്സ ”,” വിലാസം ”:” 4546 എൽ കാമിനോ റിയൽ, ലോസ് ആൾട്ടോസ്, സി‌എ ”,” ലാറ്റ് ”: 37.401725769043,” lng ”: - 122.11464691162,” ദൂരം ”: 16077.937560795}, {“ id ”: 7,” name ”:” ബാറുകളും ഗ്രില്ലുകളും ”,” വിലാസം ”:” 24 വൈറ്റ്‌ലി സ്ട്രീറ്റ്, മാഞ്ചസ്റ്റർ ”,” lat ”: 53.485118865967,” lng ”: - 2.1828699111938,” ദൂരം ”: 8038.7620112314}]

    20 മൈൽ ദൂരെയുള്ള വരികൾ വീണ്ടെടുക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു, പക്ഷേ ഇത് എല്ലാ വരികളും കൊണ്ടുവരുന്നു. ഞാൻ എന്താണ് തെറ്റ് ചെയ്യുന്നത്?

  56. 77

    ഞാൻ സമാനമായ ഒരു അന്വേഷണത്തിനായി തിരയുകയാണ്, പക്ഷേ അൽപ്പം കൂടി - ചുരുക്കത്തിൽ ഇത് ഓരോ കോർഡിനേറ്റിന്റെയും 2 മൈൽ പരിധിയിലുള്ള എല്ലാ കോർഡിനേറ്റുകളും ഗ്രൂപ്പുചെയ്യുകയും തുടർന്ന് ഓരോ ഗ്രൂപ്പിലും എത്ര കോർഡിനേറ്റുകൾ കണക്കാക്കുകയും ഏറ്റവും കൂടുതൽ കോർഡിനേറ്റുകളുള്ള ഒരു ഗ്രൂപ്പ് മാത്രം outputട്ട്പുട്ട് ചെയ്യുകയും ചെയ്യുന്നു - നിങ്ങൾക്ക് ഏറ്റവും കൂടുതൽ കോർഡിനേറ്റുകളുള്ള ഗ്രൂപ്പുകളിൽ ഒന്നിലധികം ഗ്രൂപ്പുകൾ ഉണ്ട് - ഒരേ വലിയ സംഖ്യയുള്ള ഗ്രൂപ്പുകളിൽ നിന്ന് ക്രമരഹിതമായ ഗ്രൂപ്പിനെ outputട്ട്പുട്ട് ചെയ്യുക -

നീ എന്ത് ചിന്തിക്കുന്നു?

സ്പാം കുറയ്ക്കുന്നതിന് ഈ സൈറ്റ് Akismet ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ അഭിപ്രായ ഡാറ്റ പ്രോസസ്സുചെയ്യുന്നത് എങ്ങനെയെന്നറിയുക.