ಈ ತಿಂಗಳು ನಾನು ಜಿಐಎಸ್ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಪಿಎಚ್ಪಿ ಮತ್ತು ಮೈಎಸ್ಕ್ಯೂಎಲ್ನಲ್ಲಿ ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾಡುತ್ತಿದ್ದೇನೆ. ನಿವ್ವಳ ಸುತ್ತಲೂ ಸ್ನೂಪಿಂಗ್, ನಾನು ನಿಜವಾಗಿಯೂ ಕೆಲವು ಹುಡುಕಲು ಕಷ್ಟವಾಯಿತು ಭೌಗೋಳಿಕ ಲೆಕ್ಕಾಚಾರಗಳು ಎರಡು ಸ್ಥಳಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಕಂಡುಹಿಡಿಯಲು ನಾನು ಅವುಗಳನ್ನು ಇಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳಲು ಬಯಸುತ್ತೇನೆ.
ಎರಡು ಬಿಂದುಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವ ಸರಳ ಮಾರ್ಗವೆಂದರೆ ತ್ರಿಕೋನದ (A² + B² = C²) ಹೈಪೋಟೆನ್ಯೂಸ್ ಅನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಪೈಥಾಗರಿಯನ್ ಸೂತ್ರವನ್ನು ಬಳಸುವುದು. ಇದನ್ನು ದಿ ಯೂಕ್ಲಿಡಿಯನ್ ದೂರ.
ಅದು ಆಸಕ್ತಿದಾಯಕ ಪ್ರಾರಂಭವಾಗಿದೆ ಆದರೆ ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶದ ರೇಖೆಗಳ ನಡುವಿನ ಅಂತರವು ಭೌಗೋಳಿಕತೆಗೆ ಅನ್ವಯಿಸುವುದಿಲ್ಲ ಸಮಾನ ಅಂತರವಲ್ಲ ಹೊರತುಪಡಿಸಿ. ನೀವು ಸಮಭಾಜಕಕ್ಕೆ ಹತ್ತಿರವಾಗುತ್ತಿದ್ದಂತೆ, ಅಕ್ಷಾಂಶದ ರೇಖೆಗಳು ಮತ್ತಷ್ಟು ದೂರವಾಗುತ್ತವೆ. ನೀವು ಕೆಲವು ರೀತಿಯ ಸರಳ ತ್ರಿಕೋನ ಸಮೀಕರಣವನ್ನು ಬಳಸಿದರೆ, ಅದು ಭೂಮಿಯ ವಕ್ರತೆಯ ಕಾರಣದಿಂದಾಗಿ ಒಂದು ಸ್ಥಳದಲ್ಲಿ ದೂರವನ್ನು ನಿಖರವಾಗಿ ಅಳೆಯಬಹುದು ಮತ್ತು ಇನ್ನೊಂದರಲ್ಲಿ ಭಯಂಕರವಾಗಿ ತಪ್ಪಾಗುತ್ತದೆ.
ದೊಡ್ಡ ವೃತ್ತದ ದೂರ
ಭೂಮಿಯ ಸುತ್ತಲೂ ಬಹಳ ದೂರ ಪ್ರಯಾಣಿಸುವ ಮಾರ್ಗಗಳನ್ನು ಕರೆಯಲಾಗುತ್ತದೆ ದೊಡ್ಡ ವೃತ್ತದ ದೂರ. ಅಂದರೆ... ಗೋಳದ ಮೇಲೆ ಎರಡು ಬಿಂದುಗಳ ನಡುವಿನ ಕಡಿಮೆ ಅಂತರವು ಫ್ಲಾಟ್ ಮ್ಯಾಪ್ನಲ್ಲಿರುವ ಬಿಂದುಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿರುತ್ತದೆ. ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶದ ರೇಖೆಗಳು ಸಮಾನ ದೂರದಲ್ಲಿಲ್ಲ ಎಂಬ ಅಂಶದೊಂದಿಗೆ ಅದನ್ನು ಸಂಯೋಜಿಸಿ… ಮತ್ತು ನೀವು ಕಷ್ಟಕರವಾದ ಲೆಕ್ಕಾಚಾರವನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೀರಿ.
ಗ್ರೇಟ್ ವಲಯಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದರ ಅದ್ಭುತ ವೀಡಿಯೊ ವಿವರಣೆ ಇಲ್ಲಿದೆ.
ಹ್ಯಾವರ್ಸಿನ್ ಫಾರ್ಮುಲಾ
ಭೂಮಿಯ ವಕ್ರತೆಯನ್ನು ಬಳಸುವ ದೂರವನ್ನು ಸಂಯೋಜಿಸಲಾಗಿದೆ ಹ್ಯಾವರ್ಸಿನ್ ಸೂತ್ರ, ಇದು ಭೂಮಿಯ ವಕ್ರತೆಯನ್ನು ಅನುಮತಿಸಲು ತ್ರಿಕೋನಮಿತಿಯನ್ನು ಬಳಸುತ್ತದೆ. ಭೂಮಿಯ ಮೇಲಿನ 2 ಸ್ಥಳಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ನೀವು ಹುಡುಕುತ್ತಿರುವಾಗ (ಕಾಗೆ ಹಾರಿದಂತೆ), ಸರಳ ರೇಖೆಯು ನಿಜವಾಗಿಯೂ ಚಾಪವಾಗಿದೆ.
ಇದು ವಿಮಾನ ಹಾರಾಟದಲ್ಲಿ ಅನ್ವಯಿಸುತ್ತದೆ - ನೀವು ಎಂದಾದರೂ ವಿಮಾನಗಳ ನಿಜವಾದ ನಕ್ಷೆಯನ್ನು ನೋಡಿದ್ದೀರಾ ಮತ್ತು ಅವು ಕಮಾನುಗಳಾಗಿರುವುದನ್ನು ಗಮನಿಸಿದ್ದೀರಾ? ಅದು ನೇರವಾಗಿ ಸ್ಥಳಕ್ಕಿಂತ ಎರಡು ಬಿಂದುಗಳ ನಡುವೆ ಕಮಾನುಗಳಲ್ಲಿ ಹಾರಲು ಚಿಕ್ಕದಾಗಿದೆ.
ಪಿಎಚ್ಪಿ: ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶದ 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 - ನಿಮ್ಮ ಮೊದಲ ಸ್ಥಳದ ಅಕ್ಷಾಂಶಕ್ಕಾಗಿ ವೇರಿಯಬಲ್.
- $ರೇಖಾಂಶ1 - ನಿಮ್ಮ ಮೊದಲ ಸ್ಥಳದ ರೇಖಾಂಶಕ್ಕಾಗಿ ವೇರಿಯಬಲ್
- $Latitude2 - ನಿಮ್ಮ ಎರಡನೇ ಸ್ಥಳದ ಅಕ್ಷಾಂಶಕ್ಕಾಗಿ ವೇರಿಯಬಲ್.
- $ರೇಖಾಂಶ2 - ನಿಮ್ಮ ಎರಡನೇ ಸ್ಥಾನದ ರೇಖಾಂಶಕ್ಕಾಗಿ ವೇರಿಯೇಬಲ್.
- $ಘಟಕ - ಡೀಫಾಲ್ಟ್ ಜೀವಿ ಸಾವಿರಾರು. ಇದನ್ನು ನವೀಕರಿಸಬಹುದು ಅಥವಾ ಹೀಗೆ ರವಾನಿಸಬಹುದು ಕಿಲೋಮೀಟರ್.
ಹೆಬ್ಬಾವು: ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶದ 2 ಪಾಯಿಂಟ್ಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ
ಹೇಗಾದರೂ, ಎರಡು ಬಿಂದುಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಪೈಥಾನ್ ಸೂತ್ರ ಇಲ್ಲಿದೆ (ಮೈಲ್ ವರ್ಸಸ್ ಕಿಲೋಮೀಟರ್ ಪರಿವರ್ತನೆಯೊಂದಿಗೆ) ಎರಡು ದಶಮಾಂಶ ಸ್ಥಾನಗಳಿಗೆ ದುಂಡಾಗಿರುತ್ತದೆ. ಡೇಟಾ ಸೈಂಟಿಸ್ಟ್ ಆಗಿರುವ ನನ್ನ ಮಗ ಬಿಲ್ ಕರ್ ಅವರಿಗೆ ಕ್ರೆಡಿಟ್ ಓಪನ್ಇನ್ಸೈಟ್ಗಳು, ಕೋಡ್ಗಾಗಿ.
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."
ನೀವು ಇದನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ:
- $ ರೇಖಾಂಶ - ಇದು ಪಿಎಚ್ಪಿ ವೇರಿಯೇಬಲ್ ಆಗಿದ್ದು, ಅಲ್ಲಿ ನಾನು ಬಿಂದುವಿನ ರೇಖಾಂಶವನ್ನು ಹಾದುಹೋಗುತ್ತಿದ್ದೇನೆ.
- $ ಅಕ್ಷಾಂಶ - ಇದು ಪಿಎಚ್ಪಿ ವೇರಿಯೇಬಲ್ ಆಗಿದ್ದು, ಅಲ್ಲಿ ನಾನು ಬಿಂದುವಿನ ರೇಖಾಂಶವನ್ನು ಹಾದುಹೋಗುತ್ತಿದ್ದೇನೆ.
- $ ದೂರ - ಇದು ಎಲ್ಲಾ ದಾಖಲೆಗಳನ್ನು ಕಡಿಮೆ ಅಥವಾ ಸಮನಾಗಿ ಕಂಡುಹಿಡಿಯಲು ನೀವು ಬಯಸುವ ದೂರ.
- ಟೇಬಲ್ - ಇದು ಟೇಬಲ್… ನಿಮ್ಮ ಟೇಬಲ್ ಹೆಸರಿನೊಂದಿಗೆ ಅದನ್ನು ಬದಲಾಯಿಸಲು ನೀವು ಬಯಸುತ್ತೀರಿ.
- ಅಕ್ಷಾಂಶ - ಇದು ನಿಮ್ಮ ಅಕ್ಷಾಂಶದ ಕ್ಷೇತ್ರ.
- ರೇಖಾಂಶ - ಇದು ನಿಮ್ಮ ರೇಖಾಂಶದ ಕ್ಷೇತ್ರ.
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."
ನೀವು ಇದನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ:
- $ ರೇಖಾಂಶ - ಇದು ಪಿಎಚ್ಪಿ ವೇರಿಯೇಬಲ್ ಆಗಿದ್ದು, ಅಲ್ಲಿ ನಾನು ಬಿಂದುವಿನ ರೇಖಾಂಶವನ್ನು ಹಾದುಹೋಗುತ್ತಿದ್ದೇನೆ.
- $ ಅಕ್ಷಾಂಶ - ಇದು ಪಿಎಚ್ಪಿ ವೇರಿಯೇಬಲ್ ಆಗಿದ್ದು, ಅಲ್ಲಿ ನಾನು ಬಿಂದುವಿನ ರೇಖಾಂಶವನ್ನು ಹಾದುಹೋಗುತ್ತಿದ್ದೇನೆ.
- $ ದೂರ - ಇದು ಎಲ್ಲಾ ದಾಖಲೆಗಳನ್ನು ಕಡಿಮೆ ಅಥವಾ ಸಮನಾಗಿ ಕಂಡುಹಿಡಿಯಲು ನೀವು ಬಯಸುವ ದೂರ.
- ಟೇಬಲ್ - ಇದು ಟೇಬಲ್… ನಿಮ್ಮ ಟೇಬಲ್ ಹೆಸರಿನೊಂದಿಗೆ ಅದನ್ನು ಬದಲಾಯಿಸಲು ನೀವು ಬಯಸುತ್ತೀರಿ.
- ಅಕ್ಷಾಂಶ - ಇದು ನಿಮ್ಮ ಅಕ್ಷಾಂಶದ ಕ್ಷೇತ್ರ.
- ರೇಖಾಂಶ - ಇದು ನಿಮ್ಮ ರೇಖಾಂಶದ ಕ್ಷೇತ್ರ.
ನಾನು ಈ ಕೋಡ್ ಅನ್ನು ಎಂಟರ್ಪ್ರೈಸ್ ಮ್ಯಾಪಿಂಗ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನಲ್ಲಿ ಬಳಸಿದ್ದೇನೆ, ಅದನ್ನು ನಾವು ಚಿಲ್ಲರೆ ಅಂಗಡಿಗಾಗಿ ಉತ್ತರ ಅಮೆರಿಕಾದಾದ್ಯಂತ 1,000 ಕ್ಕೂ ಹೆಚ್ಚು ಸ್ಥಳಗಳೊಂದಿಗೆ ಬಳಸಿದ್ದೇವೆ ಮತ್ತು ಅದು ಸುಂದರವಾಗಿ ಕೆಲಸ ಮಾಡಿದೆ.
ಮೈಕ್ರೋಸಾಫ್ಟ್ SQL ಸರ್ವರ್ ಭೌಗೋಳಿಕ ದೂರ: STDistance
ನೀವು ಮೈಕ್ರೋಸಾಫ್ಟ್ SQL ಸರ್ವರ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಅವರು ತಮ್ಮದೇ ಆದ ಕಾರ್ಯವನ್ನು ನೀಡುತ್ತಾರೆ, ಎಸ್ಟಿಡಿಸ್ಟನ್ಸ್ ಭೌಗೋಳಿಕ ಡೇಟಾ ಪ್ರಕಾರವನ್ನು ಬಳಸಿಕೊಂಡು ಎರಡು ಬಿಂದುಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು.
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 ಮತ್ತು ವಾಸ್ತುಶಿಲ್ಪಿ ಮನಶ್ ಸಾಹೂ ಅವರಿಗೆ ಹ್ಯಾಟ್ ಟಿಪ್ Highbridge.
ಹಂಚಿಕೊಂಡಿದ್ದಕ್ಕಾಗಿ ತುಂಬಾ ಧನ್ಯವಾದಗಳು. ಇದು ಸುಲಭವಾದ ನಕಲು ಮತ್ತು ಪೇಸ್ಟ್ ಕೆಲಸ ಮತ್ತು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ನೀವು ನನಗೆ ಸಾಕಷ್ಟು ಸಮಯವನ್ನು ಉಳಿಸಿದ್ದೀರಿ.
C ಗೆ ಪೋರ್ಟ್ ಮಾಡುವ ಯಾರಿಗಾದರೂ FYI:
ಡಬಲ್ deg2rad(ಡಬಲ್ ಡಿಗ್ರಿ) {ರಿಟರ್ನ್ ಡಿಗ್ರಿ*(3.14159265358979323846/180.0); }
ಪೋಸ್ಟ್ನ ತುಂಬಾ ಒಳ್ಳೆಯ ತುಣುಕು - ತುಂಬಾ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡಿದೆ - ನಾನು ಲ್ಯಾಟ್-ಲಾಂಗ್ ಅನ್ನು ಹಿಡಿದಿರುವ ಮೇಜಿನ ಹೆಸರನ್ನು ಮಾತ್ರ ಬದಲಾಯಿಸಬೇಕಾಗಿತ್ತು. ಇದು ಬಹಳ ವೇಗವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ.. ನನ್ನ ಬಳಿ ಸಮಂಜಸವಾಗಿ ಕಡಿಮೆ ಸಂಖ್ಯೆಯ ಲ್ಯಾಟ್-ಲಾಂಗ್ಗಳಿವೆ (< 400) ಆದರೆ ಇದು ಚೆನ್ನಾಗಿ ಅಳೆಯುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ಉತ್ತಮ ಸೈಟ್ ಕೂಡ - ನಾನು ಅದನ್ನು ನನ್ನ del.icio.us ಖಾತೆಗೆ ಸೇರಿಸಿದ್ದೇನೆ ಮತ್ತು ನಿಯಮಿತವಾಗಿ ಪರಿಶೀಲಿಸುತ್ತೇನೆ.
ತುಂಬಾ ಧನ್ಯವಾದಗಳು ಪೀಟರ್ ಮತ್ತು ಕೆರ್ರಿ! ನೀವು GIS ಯೋಜನೆಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಬಯಸಿದರೆ, ನಾನು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ:
ತುಂಬಾ ಧನ್ಯವಾದಗಳು… 😀
ನಾನು ದೂರದ ಲೆಕ್ಕಾಚಾರಗಳಿಗಾಗಿ ಇಡೀ ದಿನ ಹುಡುಕಿದೆ ಮತ್ತು ಹಾರ್ವರ್ಸೈನ್ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ, ಅದನ್ನು sql ಹೇಳಿಕೆಯಲ್ಲಿ ಹೇಗೆ ಹಾಕಬೇಕು ಎಂಬುದಕ್ಕೆ ಉದಾಹರಣೆಯನ್ನು ನೀಡಿದ್ದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು. ಧನ್ಯವಾದಗಳು ಮತ್ತು ಶುಭಾಶಯಗಳು, ಡೇನಿಯಲ್
ಸಹಾಯ ಮಾಡಲು ಸಂತೋಷವಾಗಿದೆ, ಹಳಿಗಳ ಸ್ನೇಹಿತ!
ಈಗ ನಾನು 'ಇನ್ ಪಾಲಿಗಾನ್' PHP ಫಂಕ್ಷನ್ನ ಹುಡುಕಾಟದಲ್ಲಿದ್ದೇನೆ ಅದು ಅನುಕ್ರಮವಾದ ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶದ ನಿರ್ದೇಶಾಂಕಗಳ ಒಂದು ಶ್ರೇಣಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಇನ್ನೊಂದು ಬಿಂದು ಬಹುಭುಜಾಕೃತಿಯ ಒಳಗೆ ಅಥವಾ ಹೊರಗೆ ಇದೆಯೇ ಎಂದು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ.
ನಾನು ಕಂಡುಕೊಂಡೆ ಬಹುಭುಜಾಕೃತಿಯಲ್ಲಿ ಒಂದು ಬಿಂದುವಿದೆಯೇ ಎಂದು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಸಮೀಕರಣ!
ನಿಮ್ಮ SQL ಗೆ ಹೇಳಿಕೆ ಅಗತ್ಯವಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.
ಬದಲಿಗೆ WHERE ಅಂತರ <= $distance ನಿಮಗೆ ಬೇಕಾಗಬಹುದು
HAVING ಅಂತರವನ್ನು ಬಳಸಿ <= $distance
ಇಲ್ಲದಿದ್ದರೆ ನನಗೆ ಸಾಕಷ್ಟು ಸಮಯ ಮತ್ತು ಶಕ್ತಿಯನ್ನು ಉಳಿಸಿದ್ದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು.
ಹಾಯ್ ಡೇವಿಡ್,
ನೀವು ಯಾವುದೇ ರೀತಿಯ ಗ್ರೂಪ್ ಬೈ ಸ್ಟೇಟ್ಮೆಂಟ್ ಮಾಡುತ್ತಿದ್ದರೆ, ನಿಮಗೆ ಹೊಂದುವ ಅಗತ್ಯವಿದೆ. ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ನಾನು ಹಾಗೆ ಮಾಡುತ್ತಿಲ್ಲ.
ಡೌಗ್
MySQL 5.x ನಂತೆ, ನೀವು ಎಲ್ಲಿ ಷರತ್ತಿನಲ್ಲಿ ಅಲಿಯಾಸ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ ನೋಡಿ http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
ಮೇಲಿನ ಪ್ರಶ್ನೆಗಳಲ್ಲಿ WHERE ಬದಲಿಗೆ HAVING ಅನ್ನು ಬಳಸಿ
ತುಂಬ ಧನ್ಯವಾದಗಳು. ನೀವು ಉತ್ತಮ ಕೆಲಸ ಮಾಡಿದ್ದೀರಿ ಅದು ನನಗೆ ನಿಜವಾಗಿಯೂ ಬೇಕಾಗಿರುವುದು. ತುಂಬಾ ಧನ್ಯವಾದಗಳು.
ಈ ಕೋಡ್ ಹಂಚಿಕೊಂಡಿದ್ದಕ್ಕಾಗಿ ತುಂಬಾ ಧನ್ಯವಾದಗಳು. ಇದು ನನಗೆ ಸಾಕಷ್ಟು ಅಭಿವೃದ್ಧಿ ಸಮಯವನ್ನು ಉಳಿಸಿದೆ. ಅಲ್ಲದೆ, MySQL 5.x ಗೆ HAVING ಹೇಳಿಕೆ ಅಗತ್ಯ ಎಂದು ಸೂಚಿಸಿದ್ದಕ್ಕಾಗಿ ನಿಮ್ಮ ಓದುಗರಿಗೆ ಧನ್ಯವಾದಗಳು. ತುಂಬಾ ಸಹಾಯಕವಾಗಿದೆ.
ನನಗಿಂತ ಹೆಚ್ಚು ಬುದ್ಧಿವಂತ ಓದುಗರನ್ನು ಹೊಂದಲು ನಾನು ಆಶೀರ್ವದಿಸಿದ್ದೇನೆ!
🙂
ಮೇಲಿನ ಸೂತ್ರವು ನನಗೆ ಸಾಕಷ್ಟು ಸಮಯವನ್ನು ಉಳಿಸುತ್ತಿದೆ. ತುಂಬ ಧನ್ಯವಾದಗಳು.
ನಾನು NMEA ಫಾರ್ಮ್ಯಾಟ್ ಮತ್ತು ಡಿಗ್ರಿಗಳ ನಡುವೆ ಬದಲಾಯಿಸಬೇಕಾಗಿದೆ. ಪುಟದ ಕೆಳಭಾಗದಲ್ಲಿರುವ ಈ URL ನಲ್ಲಿ ನಾನು ಸೂತ್ರವನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ. http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html
ಇದನ್ನು ಪರಿಶೀಲಿಸುವುದು ಹೇಗೆ ಎಂದು ಯಾರಿಗಾದರೂ ತಿಳಿದಿದೆಯೇ?
ಧನ್ಯವಾದಗಳು!
ಹ್ಯಾರಿ
ಹಲೋ,
ಇನ್ನೊಂದು ಪ್ರಶ್ನೆ. ಕೆಳಗಿನಂತೆ NMEA ಸ್ಟ್ರಿಂಗ್ಗಳಿಗೆ ಸೂತ್ರವಿದೆಯೇ?
1342.7500,N,10052.2287,E
$GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B
ಧನ್ಯವಾದಗಳು,
ಹ್ಯಾರಿ
ಎಲ್ಲಿ ನನಗೆ ಕೆಲಸ ಮಾಡಿಲ್ಲ ಎಂದು ನಾನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ. ಅದನ್ನು ಹೊಂದಲು ಬದಲಾಯಿಸಲಾಗಿದೆ ಮತ್ತು ಎಲ್ಲವೂ ಪರಿಪೂರ್ಣವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಮೊದಲಿಗೆ ನಾನು ಕಾಮೆಂಟ್ಗಳನ್ನು ಓದಲಿಲ್ಲ ಮತ್ತು ನೆಸ್ಟೆಡ್ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಅದನ್ನು ಪುನಃ ಬರೆಯಲಿಲ್ಲ. ಎರಡೂ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
mysql ನಲ್ಲಿ ಬರೆದ ಸ್ಕ್ರಿಪ್ಟ್ಗಾಗಿ ತುಂಬಾ ಧನ್ಯವಾದಗಳು, ಕೆಲವು ಸಣ್ಣ ಹೊಂದಾಣಿಕೆಗಳನ್ನು ಮಾಡಬೇಕಾಗಿದೆ (ಹೊಂದಿದೆ) 🙂
ಗ್ರೇಟ್ ಕೆಲಸ
ನಂಬಲಾಗದಷ್ಟು ಸಹಾಯಕವಾಗಿದೆ, ತುಂಬಾ ಧನ್ಯವಾದಗಳು! "ಎಲ್ಲಿ" ಗಿಂತ ಹೊಸ "ಹೊಂದಿರುವುದು" ದಲ್ಲಿ ನನಗೆ ಕೆಲವು ಸಮಸ್ಯೆಗಳಿವೆ, ಆದರೆ ಒಮ್ಮೆ ನಾನು ಇಲ್ಲಿ ಕಾಮೆಂಟ್ಗಳನ್ನು ಓದಿದ್ದೇನೆ (ಹತಾಶೆಯಿಂದ ನನ್ನ ಹಲ್ಲುಗಳನ್ನು ರುಬ್ಬಿದ ಸುಮಾರು ಅರ್ಧ ಘಂಟೆಯ ನಂತರ =P), ನಾನು ಅದನ್ನು ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡಿದೆ. ಧನ್ಯವಾದಗಳು ^_^
ಧನ್ಯವಾದಗಳು ತುಂಬಾ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ
ಅಂತಹ ಆಯ್ದ ಹೇಳಿಕೆಯು ತುಂಬಾ ಕಂಪ್ಯೂಟೇಶನಲ್ ಆಗಿ ತೀವ್ರವಾಗಿರುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ನಿಧಾನವಾಗಿರುತ್ತದೆ ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ. ನೀವು ಅಂತಹ ಹೆಚ್ಚಿನ ಪ್ರಶ್ನೆಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಅದು ತ್ವರಿತವಾಗಿ ವಿಷಯಗಳನ್ನು ತಗ್ಗಿಸಬಹುದು.
ಹೆಚ್ಚು ಕಡಿಮೆ ತೀವ್ರತೆಯ ವಿಧಾನವೆಂದರೆ, ಲೆಕ್ಕಾಚಾರದ ದೂರದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಚದರ ಪ್ರದೇಶವನ್ನು ಬಳಸಿಕೊಂಡು ಮೊದಲ (ಕಚ್ಚಾ) ಆಯ್ಕೆಯನ್ನು ಚಲಾಯಿಸುವುದು ಅಂದರೆ "ಟೇಬಲ್ಹೆಸರಿನಿಂದ * ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿ ಅಲ್ಲಿ ಲ್ಯಾಟಿಟ್ಯೂಡ್ lat1 ಮತ್ತು lat2 ಮತ್ತು ರೇಖಾಂಶವು lon1 ಮತ್ತು lon2 ನಡುವೆ ಇರುತ್ತದೆ". lat1 = ಗುರಿಯ ಅಕ್ಷಾಂಶ – latdiff, lat2 = ಗುರಿಯ ಅಕ್ಷಾಂಶ + latdiff, lon ನೊಂದಿಗೆ ಹೋಲುತ್ತದೆ. ಲ್ಯಾಟ್ಡಿಫ್ ~= ದೂರ / 111 (ಕಿಮೀಗೆ), ಅಥವಾ ಮೈಲುಗಳಿಗೆ ದೂರ/69 ಅಕ್ಷಾಂಶದ 1 ಡಿಗ್ರಿ ~ 111 ಕಿಮೀ ಆಗಿರುವುದರಿಂದ (ಭೂಮಿಯು ಸ್ವಲ್ಪ ಅಂಡಾಕಾರದಲ್ಲಿರುವುದರಿಂದ ಸ್ವಲ್ಪ ವ್ಯತ್ಯಾಸ, ಆದರೆ ಈ ಉದ್ದೇಶಕ್ಕಾಗಿ ಸಾಕಷ್ಟು). londiff = ದೂರ / (abs(cos(deg2rad(latitude))*111)) — ಅಥವಾ 69 ಮೈಲುಗಳಿಗೆ (ನೀವು ನಿಜವಾಗಿಯೂ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಪರಿಗಣಿಸಲು ಸ್ವಲ್ಪ ದೊಡ್ಡ ಚೌಕವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು). ನಂತರ ಅದರ ಫಲಿತಾಂಶವನ್ನು ತೆಗೆದುಕೊಂಡು ಅದನ್ನು ರೇಡಿಯಲ್ ಆಯ್ಕೆಗೆ ಫೀಡ್ ಮಾಡಿ. ಮಿತಿ ಮೀರಿದ ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಲೆಕ್ಕ ಹಾಕಲು ಮರೆಯಬೇಡಿ - ಅಂದರೆ ಸ್ವೀಕಾರಾರ್ಹ ರೇಖಾಂಶದ ವ್ಯಾಪ್ತಿಯು -180 ರಿಂದ +180 ಮತ್ತು ಸ್ವೀಕಾರಾರ್ಹ ಅಕ್ಷಾಂಶದ ವ್ಯಾಪ್ತಿಯು -90 ರಿಂದ +90 - ಒಂದು ವೇಳೆ ನಿಮ್ಮ ಲ್ಯಾಡಿಫ್ ಅಥವಾ ಲೋಂಡಿಫ್ ಈ ವ್ಯಾಪ್ತಿಯ ಹೊರಗೆ ಚಲಿಸಿದರೆ . ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಇದು ಅನ್ವಯಿಸುವುದಿಲ್ಲ ಏಕೆಂದರೆ ಇದು ಧ್ರುವದಿಂದ ಧ್ರುವಕ್ಕೆ ಪೆಸಿಫಿಕ್ ಸಾಗರದ ಮೂಲಕ ಒಂದು ರೇಖೆಯ ಮೇಲಿನ ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ಮಾತ್ರ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ, ಆದರೂ ಇದು ಚುಕೊಟ್ಕಾ ಮತ್ತು ಅಲಾಸ್ಕಾದ ಭಾಗವನ್ನು ಛೇದಿಸುತ್ತದೆ.
ಈ ಮೂಲಕ ನಾವು ಸಾಧಿಸುವುದು ನೀವು ಈ ಲೆಕ್ಕಾಚಾರವನ್ನು ಮಾಡುವ ಪಾಯಿಂಟ್ಗಳ ಸಂಖ್ಯೆಯಲ್ಲಿ ಗಮನಾರ್ಹವಾದ ಕಡಿತವಾಗಿದೆ. ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ನೀವು ಸ್ಥೂಲವಾಗಿ ಸಮಾನವಾಗಿ ವಿತರಿಸಲಾದ ಒಂದು ಮಿಲಿಯನ್ ಜಾಗತಿಕ ಅಂಕಗಳನ್ನು ಹೊಂದಿದ್ದರೆ ಮತ್ತು ನೀವು 100 ಕಿಮೀ ಒಳಗೆ ಹುಡುಕಲು ಬಯಸಿದರೆ, ನಿಮ್ಮ ಮೊದಲ (ವೇಗದ) ಹುಡುಕಾಟವು 10000 ಚದರ ಕಿಮೀ ಪ್ರದೇಶವಾಗಿದೆ ಮತ್ತು ಬಹುಶಃ ಸುಮಾರು 20 ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡುತ್ತದೆ (ಸಮಾನ ವಿತರಣೆಯ ಆಧಾರದ ಮೇಲೆ ಸುಮಾರು 500M ಚದರ ಕಿಮೀ ಮೇಲ್ಮೈ ವಿಸ್ತೀರ್ಣ), ಇದರರ್ಥ ನೀವು ಸಂಕೀರ್ಣ ದೂರದ ಲೆಕ್ಕಾಚಾರವನ್ನು ಈ ಪ್ರಶ್ನೆಗೆ ಮಿಲಿಯನ್ ಬಾರಿ ಬದಲಿಗೆ 20 ಬಾರಿ ರನ್ ಮಾಡುತ್ತೀರಿ.
ಉದಾಹರಣೆಯಲ್ಲಿ ಸಣ್ಣ ತಪ್ಪು... ಅದು 50 ಕಿಮೀ (100 ಅಲ್ಲ) ಒಳಗೆ ಇರುತ್ತದೆ ಏಕೆಂದರೆ ನಾವು ನಮ್ಮ… ಚೌಕದ “ತ್ರಿಜ್ಯ” ವನ್ನು ನೋಡುತ್ತಿದ್ದೇವೆ.
ಅದ್ಭುತ ಸಲಹೆ! ನಾನು ವಾಸ್ತವವಾಗಿ ಡೆವಲಪರ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿದ್ದೇನೆ, ಅವರು ಒಳಗಿನ ಚೌಕವನ್ನು ಎಳೆಯುವ ಕಾರ್ಯವನ್ನು ಬರೆದಿದ್ದಾರೆ ಮತ್ತು ನಂತರ ಉಳಿದಿರುವ ಬಿಂದುಗಳನ್ನು ಸೇರಿಸಲು ಮತ್ತು ಹೊರಗಿಡಲು ಪರಿಧಿಯ ಸುತ್ತಲೂ 'ಚೌಕಗಳನ್ನು' ಮಾಡುವ ಪುನರಾವರ್ತಿತ ಕಾರ್ಯವನ್ನು ಮಾಡಿದರು. ಫಲಿತಾಂಶವು ನಂಬಲಾಗದಷ್ಟು ವೇಗದ ಫಲಿತಾಂಶವಾಗಿದೆ - ಅವರು ಮೈಕ್ರೋಸೆಕೆಂಡ್ಗಳಲ್ಲಿ ಲಕ್ಷಾಂತರ ಅಂಕಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು.
ಮೇಲಿನ ನನ್ನ ವಿಧಾನವು ಖಂಡಿತವಾಗಿಯೂ 'ಕಚ್ಚಾ' ಆದರೆ ಸಮರ್ಥವಾಗಿದೆ. ಮತ್ತೊಮ್ಮೆ ಧನ್ಯವಾದಗಳು!
ಡೌಗ್,
ಲ್ಯಾಟ್ ಲಾಂಗ್ ಪಾಯಿಂಟ್ ಬಹುಭುಜಾಕೃತಿಯಲ್ಲಿದೆಯೇ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ನಾನು mysql ಮತ್ತು php ಅನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದೇನೆ. ನಿಮ್ಮ ಡೆವಲಪರ್ ಸ್ನೇಹಿತರು ಈ ಕಾರ್ಯವನ್ನು ಹೇಗೆ ಸಾಧಿಸಬೇಕು ಎಂಬುದರ ಕುರಿತು ಯಾವುದೇ ಉದಾಹರಣೆಗಳನ್ನು ಪ್ರಕಟಿಸಿದ್ದಾರೆಯೇ ಎಂದು ನಿಮಗೆ ತಿಳಿದಿದೆಯೇ. ಅಥವಾ ನಿಮಗೆ ಯಾವುದಾದರೂ ಉತ್ತಮ ಉದಾಹರಣೆಗಳು ತಿಳಿದಿದೆಯೇ. ಮುಂಚಿತವಾಗಿ ಧನ್ಯವಾದಗಳು.
ಎಲ್ಲರಿಗೂ ನಮಸ್ಕಾರ ಇದು ನನ್ನ ಪರೀಕ್ಷಾ 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
ಮತ್ತು MySQL ದೂರವು ಕಾಲಮ್ ಆಗಿ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ ಎಂದು ಹೇಳುತ್ತಿದೆ, ನಾನು ಆದೇಶವನ್ನು ಬಳಸಬಹುದು, ನಾನು ಅದನ್ನು ಎಲ್ಲಿ ಇಲ್ಲದೆ ಮಾಡಬಹುದು, ಮತ್ತು ಅದು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ ಅದರೊಂದಿಗೆ ಅಲ್ಲ…
"ಎಲ್ಲಿ ದೂರ" ಅನ್ನು "ಅಂತರವಿದೆ" ಎಂದು ಬದಲಾಯಿಸಿ.
ಮೋಡಿಯಂತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಧನ್ಯವಾದಗಳು, ಡೌಗ್ಲಾಸ್!
ಇದು ಅದ್ಭುತವಾಗಿದೆ, ಆದಾಗ್ಯೂ ಇದು ಪಕ್ಷಿಗಳು ಹಾರುವಂತೆಯೇ ಇರುತ್ತದೆ. google maps API ಅನ್ನು ಹೇಗಾದರೂ ಮಾಡಿ (ರಸ್ತೆಗಳನ್ನು ಬಳಸಿ ಇತ್ಯಾದಿ.) ವಿಭಿನ್ನ ರೀತಿಯ ಸಾರಿಗೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಕಲ್ಪನೆಯನ್ನು ನೀಡಲು ಪ್ರಯತ್ನಿಸುವುದು ಮತ್ತು ಸಂಯೋಜಿಸುವುದು ಉತ್ತಮವಾಗಿದೆ. ನಾನು ಇನ್ನೂ PHP ಯಲ್ಲಿ ಸಿಮ್ಯುಲೇಟೆಡ್ ಅನೆಲಿಂಗ್ ಕಾರ್ಯವನ್ನು ಮಾಡಬೇಕಾಗಿದೆ ಅದು ಪ್ರಯಾಣಿಸುವ ಮಾರಾಟಗಾರರ ಸಮಸ್ಯೆಗೆ ಸಮರ್ಥ ಪರಿಹಾರವನ್ನು ನೀಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಆದರೆ ನಾನು ಹಾಗೆ ಮಾಡಲು ನಿಮ್ಮ ಕೆಲವು ಕೋಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.
ಹಾಯ್ ಡೌಗ್ಲಾಸ್,
ಈ ಲೇಖನಕ್ಕಾಗಿ ತುಂಬಾ ಧನ್ಯವಾದಗಳು - ನೀವು ನನಗೆ ಸಾಕಷ್ಟು ಸಮಯವನ್ನು ಉಳಿಸಿದ್ದೀರಿ.
ನೋಡಿಕೊಳ್ಳಿ,
ನಿಮ್ರೋಡ್ @ ಇಸ್ರೇಲ್
ಒಳ್ಳೆಯ ಲೇಖನ! ಎರಡು ಬಿಂದುಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಹೇಗೆ ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು ಎಂಬುದನ್ನು ವಿವರಿಸುವ ಬಹಳಷ್ಟು ಲೇಖನಗಳನ್ನು ನಾನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ ಆದರೆ ನಾನು ನಿಜವಾಗಿಯೂ SQL ತುಣುಕನ್ನು ಹುಡುಕುತ್ತಿದ್ದೇನೆ.
ಧನ್ಯವಾದಗಳು ತುಂಬಾ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ
ಈ ಸೂತ್ರಕ್ಕಾಗಿ ತುಂಬಾ ಧನ್ಯವಾದಗಳು. ಇದು ನನಗೆ ತಿನ್ನುತ್ತಿದ್ದ ಅಂಗಡಿಯ ಸ್ಥಳ ಯೋಜನೆಯಲ್ಲಿ ಸ್ವಲ್ಪ ಸಮಯವನ್ನು ಶೇವ್ ಮಾಡಿತು.
ಒಂದು ಬಂಡಲ್ ಧನ್ಯವಾದಗಳು. ಈ ಚಿಕ್ಕ ಕೋಡ್ ಲೈನ್ ಸ್ಟೋರ್ ಸ್ಥಳ ಯೋಜನೆಯಲ್ಲಿ ನನಗೆ ಸ್ವಲ್ಪ ಸಮಯವನ್ನು ಉಳಿಸಿದೆ!
#1054 – 'ಎಲ್ಲಿ ಷರತ್ತು' ದಲ್ಲಿ ಅಜ್ಞಾತ ಕಾಲಮ್ 'ದೂರ'
ಅನುಮೋದಿಸಿ
ಇಲ್ಲಿಯೂ ಅದೇ! ಸಮಸ್ಯೆ ಏನು :-/? "ದೂರ" - ಕಾಲಮ್ ಸಮಸ್ಯೆಯನ್ನು ಹೇಗೆ ಪರಿಹರಿಸುವುದು? ದಯವಿಟ್ಟು ನಮಗೆ ಸಹಾಯ ಮಾಡಿ!! 🙂
WHERE ಬದಲಿಗೆ HAVING ಅನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿ
ನನ್ನ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಈ ಪುಟವನ್ನು ಅಂತಿಮವಾಗಿ ಹುಡುಕಲು 2 ದಿನಗಳ ಸಂಶೋಧನೆ. ನಾನು ನನ್ನ ವೋಲ್ಫ್ರಾಮ್ ಆಲ್ಫಾವನ್ನು ಹೊರಹಾಕುವುದು ಉತ್ತಮ ಮತ್ತು ನನ್ನ ಗಣಿತದ ಮೇಲೆ ಬ್ರಷ್ ಮಾಡುವಂತೆ ತೋರುತ್ತಿದೆ. WHERE ನಿಂದ HAVING ಗೆ ಬದಲಾವಣೆಯು ನನ್ನ ಸ್ಕ್ರಿಪ್ಟ್ ಕಾರ್ಯ ಕ್ರಮದಲ್ಲಿದೆ. ಧನ್ಯವಾದಗಳು
ಬದಲಿಗೆ ಎಲ್ಲಿ ಷರತ್ತು ಬಳಕೆ:
< 50 ಅಂತರವನ್ನು ಹೊಂದಿದೆ
ಧನ್ಯವಾದಗಳು ಜಾರ್ಜಿ. ನನಗೆ ಅಂಕಣ 'ದೂರ' ಸಿಗುತ್ತಲೇ ಇರಲಿಲ್ಲ. ಒಮ್ಮೆ ನಾನು ಎಲ್ಲಿಗೆ ಬದಲಾಯಿಸಿದರೆ ಅದು ಮೋಡಿಯಾಗಿ ಕೆಲಸ ಮಾಡಿದೆ!
ನಾನು ಇದರಲ್ಲಿ ಕಂಡುಕೊಂಡ ಮೊದಲ ಪುಟ ಇದಾಗಿದೆ ಎಂದು ನಾನು ಬಯಸುತ್ತೇನೆ. ಹಲವಾರು ವಿಭಿನ್ನ ಆಜ್ಞೆಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದ ನಂತರ ಇದು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಒಂದೇ ಒಂದು, ಮತ್ತು ನನ್ನ ಸ್ವಂತ ಡೇಟಾಬೇಸ್ಗೆ ಹೊಂದಿಕೊಳ್ಳಲು ಅಗತ್ಯವಿರುವ ಕನಿಷ್ಠ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ.
ಬಹಳಷ್ಟು ಧನ್ಯವಾದಗಳು!
ನಾನು ಇದರಲ್ಲಿ ಕಂಡುಕೊಂಡ ಮೊದಲ ಪುಟ ಇದಾಗಿದೆ ಎಂದು ನಾನು ಬಯಸುತ್ತೇನೆ. ಹಲವಾರು ವಿಭಿನ್ನ ಆಜ್ಞೆಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದ ನಂತರ ಇದು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಒಂದೇ ಒಂದು, ಮತ್ತು ನನ್ನ ಸ್ವಂತ ಡೇಟಾಬೇಸ್ಗೆ ಹೊಂದಿಕೊಳ್ಳಲು ಅಗತ್ಯವಿರುವ ಕನಿಷ್ಠ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ.
ಬಹಳಷ್ಟು ಧನ್ಯವಾದಗಳು!
ತುಂಬಾ ಧನ್ಯವಾದಗಳು!
ತುಂಬಾ ಧನ್ಯವಾದಗಳು!
ಕೋಡ್ ಇನ್ನು ಮುಂದೆ ಕಾಣಿಸುತ್ತಿಲ್ಲ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ಬಹುಶಃ ಇದು ಫೈರ್ಫಾಕ್ಸ್?
ನಾನು Firefox ಮತ್ತು Chrome ಎರಡನ್ನೂ ಪರೀಕ್ಷಿಸಿದ್ದೇನೆ ಮತ್ತು ಅದು ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು?
ನಮಸ್ತೆ. ತುಂಬಾ ಧನ್ಯವಾದಗಳು. ಇದು ಮೋಡಿಯಂತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ತುಂಬಾ ಧನ್ಯವಾದಗಳು ಡೌಗ್ಲಾಸ್. ಇದು ಪರಿಪೂರ್ಣವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ.
ಈ ಸೂತ್ರವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನನಗೆ ತಿಳಿದಿದೆ, ಆದರೆ ಭೂಮಿಯ ತ್ರಿಜ್ಯವನ್ನು ಎಲ್ಲಿ ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತದೆ ಎಂದು ನನಗೆ ನೋಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ಯಾರಾದರೂ ನನಗೆ ಜ್ಞಾನೋದಯ ಮಾಡಬಹುದೇ?
ಟಿಮ್, ಹ್ಯಾವರ್ಸಿನ್ ಸೂತ್ರದ ಸಂಪೂರ್ಣ ವಿವರಣೆಗಾಗಿ (ಅದು ಕೋಡ್ ಅಲ್ಲ), ವಿಕಿಪೀಡಿಯಾದ ಲೇಖನವನ್ನು ಪರಿಶೀಲಿಸಿ: http://en.wikipedia.org/wiki/Haversine_formula
ಸುಂದರ! ಇದು ನನಗೆ ಅಪಾರವಾಗಿ ಸಹಾಯ ಮಾಡಿದೆ!
ಗ್ರೇಟ್ ಸ್ಟಫ್ ಡೌಗ್ಲಾಸ್. ಎರಡು ಬಿಂದುಗಳ ಲಾಂಗ್/ಲ್ಯಾಟ್/ಬೇರಿಂಗ್ ನೀಡಲಾದ ಛೇದಕ ಬಿಂದುವನ್ನು ಪಡೆಯಲು ನೀವು ಪ್ರಯತ್ನಿಸಿದ್ದೀರಾ?
ಅದನ್ನು ಇನ್ನೂ ಮಾಡಿಲ್ಲ, ಖಾನ್!
ಧನ್ಯವಾದಗಳು ಡೌಗ್ಲಾಸ್, SQL ಪ್ರಶ್ನೆಯು ನನಗೆ ಬೇಕಾಗಿರುವುದು ನಿಖರವಾಗಿ, ಮತ್ತು ಅದನ್ನು ನಾನೇ ಬರೆಯಬೇಕೆಂದು ನಾನು ಭಾವಿಸಿದೆ. ನೀವು ಬಹುಶಃ ಗಂಟೆಗಳ ಅಕ್ಷಾಂಶ ರೇಖಾಂಶದ ಕಲಿಕೆಯ ರೇಖೆಯಿಂದ ನನ್ನನ್ನು ಉಳಿಸಿದ್ದೀರಿ!
ನಾನು ದೋಷಸಂದೇಶವನ್ನು ಪಡೆಯುತ್ತಿದ್ದೇನೆ: MySQL ಪ್ರಶ್ನೆಯಲ್ಲಿ 'ಎಲ್ಲಿ ಷರತ್ತು' ನಲ್ಲಿ ಅಜ್ಞಾತ ಕಾಲಮ್ 'ದೂರ'.
ಪೀಟರ್, ದಯವಿಟ್ಟು ಇತರ ಕಾಮೆಂಟ್ಗಳನ್ನು ಓದಿ. ಕೆಲವು ಜನರು ಎಲ್ಲಿ/ಹೊಂದಿದ್ದಾರೆ ಎಂಬುದಕ್ಕೆ ಬೇರೆ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಬಳಸಬೇಕಾಗಿರುವುದು ಕಂಡುಬರುತ್ತದೆ.
ಈ ಉತ್ತಮ ಲೇಖನಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು! ನನ್ನ ಡಿಬಿಯಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಪರೀಕ್ಷಿಸಲಾಗಿದೆ ಮತ್ತು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಿದೆ!
ಡೌಗ್ಲಾಸ್, ಈ ಅದ್ಭುತ ಕೋಡ್ಗಾಗಿ ಧನ್ಯವಾದಗಳು. ನನ್ನ GPS ಸಮುದಾಯ ಪೋರ್ಟಲ್ನಲ್ಲಿ ಇದನ್ನು ಹೇಗೆ ಮಾಡಬೇಕೆಂದು ನನ್ನ ತಲೆಯನ್ನು ಭೇದಿಸುತ್ತಿದ್ದೇನೆ. ನೀವು ನನಗೆ ಗಂಟೆಗಳನ್ನು ಉಳಿಸಿದ್ದೀರಿ.
ಕೇಳಲು ಅದ್ಭುತವಾಗಿದೆ, ಆಶ್!
ಈ ಉಪಯುಕ್ತ ಲೇಖನವನ್ನು ಪೋಸ್ಟ್ ಮಾಡಿದ್ದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು,
ಆದರೆ ಕೆಲವು ಕಾರಣಗಳಿಗಾಗಿ ನಾನು ಕೇಳಲು ಬಯಸುತ್ತೇನೆ
mysql db ಒಳಗಿನ ಕೋರ್ಡ್ಗಳು ಮತ್ತು ಬಳಕೆದಾರರಿಂದ php ಗೆ ಸೇರಿಸಲಾದ ಕೋರ್ಡ್ಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಹೇಗೆ ಪಡೆಯುವುದು?
ಹೆಚ್ಚು ಸ್ಪಷ್ಟವಾಗಿ ವಿವರಿಸಲು:
1. ಬಳಕೆದಾರನು ಡಿಬಿ ಮತ್ತು ಸ್ವತಃ ಬಳಕೆದಾರರ ಕೋರ್ಡ್ಗಳಿಂದ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಡೇಟಾವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು [ಐಡಿ] ಅನ್ನು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ
2. php ಫೈಲ್ [id] ಅನ್ನು ಬಳಸಿಕೊಂಡು ಗುರಿ ಡೇಟಾವನ್ನು (ಕೋರ್ಡ್ಸ್) ಪಡೆಯುತ್ತದೆ ಮತ್ತು ನಂತರ ಬಳಕೆದಾರ ಮತ್ತು ಗುರಿ ಪಾಯಿಂಟ್ ನಡುವಿನ ಅಂತರವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ
ಅಥವಾ ಕೆಳಗಿನ ಕೋಡ್ನಿಂದ ಸರಳವಾಗಿ ದೂರವನ್ನು ಪಡೆಯಬಹುದೇ?
$qry = “SELECT *,((acos(“.$latitude.”*pi())/180)) * sin((`Latitude`*pi()/180))+cos((“. $latitude.”*pi()/180)) * cos((`Latitude`*pi()/180)) * cos((“.$longitude.”- `Langitude`)*pi()/180) )))*180/pi())*60*1.1515*1.609344) `MyTable` ಎಲ್ಲಿಂದ ದೂರ >= ".$distance." >>>>ನಾನು ಇಲ್ಲಿಂದ ದೂರವನ್ನು "ತೆಗೆದುಕೊಳ್ಳಬಹುದೇ"?
ಮತ್ತೊಮ್ಮೆ ಧನ್ಯವಾದಗಳು,
ಟಿಮ್ಮಿ ಎಸ್
ಪರವಾಗಿಲ್ಲ, php ನಲ್ಲಿ "ಕಾರ್ಯ" ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ನಾನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಿದ್ದೇನೆ
$dis=getDistanceBetweenPointsNew($userLati, $userLongi, $lati, $longi, $unit = 'Km')
ತುಂಬಾ ಧನ್ಯವಾದಗಳು!!
ಸರಿ, ನಾನು ಪ್ರಯತ್ನಿಸಿದ ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡುತ್ತಿಲ್ಲ. ನನ್ನ ಪ್ರಕಾರ, ನಾನು ಏನು ಕೆಲಸ ಮಾಡಿದ್ದೇನೆ, ಆದರೆ ದೂರವು ದೂರದಲ್ಲಿದೆ.
ಈ ಕೋಡ್ನಲ್ಲಿ ಏನು ತಪ್ಪಾಗಿದೆ ಎಂದು ಯಾರಾದರೂ ನೋಡಬಹುದೇ?
if(isset($_POST['submitted'])){ $z = $_POST['zipcode']; $r = $_POST['ತ್ರಿಜ್ಯ']; ಪ್ರತಿಧ್ವನಿ ". $z ಗಾಗಿ ಫಲಿತಾಂಶಗಳು; $sql = mysql_query(“ಸೆಲೆಕ್ಟ್ DISTINCT m.zipcode, m.MktName,m.LocAddSt,m.LocAddCity,m.LocAddState,m.x1,m.y1,m.verified,z1.lat,z2.lon,z1. mrk m ನಿಂದ city,z1.state, zip z1, zip z2 ಎಲ್ಲಿ m.zipcode = z1.zipcode ಮತ್ತು z2.zipcode = $z ಮತ್ತು (3963 * acos( trincate( sin( z2.lat / 57.2958 ) * sin( m. y1 / 57.2958 (mysql_error()); while($row = mysql_fetch_array($sql)) {$store2 = $row['MktName'].""; $store = $row['LocAddSt'].””; $store .= $row['LocAddCity'].”, “.$row['LocAddState'].” “.$ರೋ['ಜಿಪ್ಕೋಡ್']; $latitude57.2958 = $row['lat']; $longitude1 = $row['lon']; $latitude57.2958 = $row['y1']; $longitude57.2958 = $row['x2']; $ನಗರ = $ರೋ['ನಗರ']; $state = $row['state']; $dis = getnew($latitude57.2958, $longitude8, $latitude1, $longitude1, $unit = 'Mi'); // $dis = ದೂರ ($lat1, $lon2, $lat1, $lon2); $verified = $row['verified']; if($verified == '1'){ 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)) ); $ ದೂರ = acos ($ ದೂರ); $distance = rad2deg($distance); $ ದೂರ = $ ದೂರ * 60 * 1.1515; ಸ್ವಿಚ್ ($ ಯೂನಿಟ್) {ಕೇಸ್ 'ಮಿ': ಬ್ರೇಕ್; ಪ್ರಕರಣ 'ಕಿಮೀ' : $ ದೂರ = $ ದೂರ * 1.609344; } ಹಿಂತಿರುಗಿ (ಸುತ್ತಿನ ($ ದೂರ,2)); }
ಮುಂಚಿತವಾಗಿ ಧನ್ಯವಾದಗಳು
ಈ ಲೇಖನಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು. ನನ್ನ ಕೋಡ್ನೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ. 🙂
ಹೇ ಡೌಗ್ಲಾಸ್, ಉತ್ತಮ ಲೇಖನ. ಭೌಗೋಳಿಕ ಪರಿಕಲ್ಪನೆಗಳು ಮತ್ತು ಕೋಡ್ನ ನಿಮ್ಮ ವಿವರಣೆಯು ನಿಜವಾಗಿಯೂ ಆಸಕ್ತಿದಾಯಕವಾಗಿದೆ ಎಂದು ನಾನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ. ನನ್ನ ಏಕೈಕ ಸಲಹೆಯೆಂದರೆ ಡಿಸ್ಪ್ಲೇಗಾಗಿ ಕೋಡ್ ಅನ್ನು ಸ್ಪೇಸ್ ಮತ್ತು ಇಂಡೆಂಟ್ ಮಾಡುವುದು (ಉದಾಹರಣೆಗೆ ಸ್ಟಾಕ್ಓವರ್ಫ್ಲೋ ನಂತಹ). ನೀವು ಜಾಗವನ್ನು ಉಳಿಸಲು ಬಯಸುತ್ತೀರಿ ಎಂದು ನಾನು ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೇನೆ, ಆದರೆ ಸಾಂಪ್ರದಾಯಿಕ ಕೋಡ್ ಸ್ಪೇಸಿಂಗ್ / ಇಂಡೆಂಟೇಶನ್ ನನಗೆ ಪ್ರೋಗ್ರಾಮರ್ ಆಗಿ ಓದಲು ಮತ್ತು ವಿಭಜಿಸಲು ತುಂಬಾ ಸುಲಭವಾಗುತ್ತದೆ. ಹೇಗಾದರೂ, ಇದು ಒಂದು ಸಣ್ಣ ವಿಷಯ. ಉತ್ತಮ ಕೆಲಸವನ್ನು ಮುಂದುವರಿಸಿ.
ಧನ್ಯವಾದಗಳು! ನಾನು ಪೋಸ್ಟ್ ಅನ್ನು ಸ್ವಲ್ಪ ಮಾರ್ಪಡಿಸಿದ್ದೇನೆ… ಆದರೆ ಸಮೀಕರಣಗಳು ತುಂಬಾ ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ ಮತ್ತು ಅದು ತುಂಬಾ ಹೆಚ್ಚು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಎಂದು ನನಗೆ ಖಚಿತವಿಲ್ಲ.
ತುಂಬಾ ಧನ್ಯವಾದಗಳು.
ಇಲ್ಲಿ ಕಾರ್ಯವನ್ನು ಬಳಸುವಾಗ ನಾವು ಒಂದು ರೀತಿಯ ದೂರವನ್ನು ಪಡೆಯುತ್ತೇವೆ
ನಾನು ಎರಡು ರಾಜ್ಯಗಳ ನಡುವಿನ ಅಂತರವನ್ನು ಲೆಕ್ಕ ಹಾಕುವುದಿಲ್ಲ
ಮುಚಾಸ್ ಗ್ರ್ಯಾಸಿಯಾಸ್ ಪೋರ್ ಟ್ಯಾನ್ ಹರ್ಮೋಸೊ ಕೊಡಿಗೋ…
ಇದು ಉತ್ತಮ ಕೊಸಿನಸ್ ಕಾರ್ಯಗಳನ್ನು ಹೊಂದಿದೆ. ನನಗೆ ಗಣಿತ ಗೊತ್ತಿಲ್ಲ, ಆದರೆ ಧನ್ಯವಾದಗಳು!
ಉತ್ತಮ ಕೆಲಸ… 🙂 (y)
ಆಯ್ಕೆ ಮತ್ತು ಎಲ್ಲಿ ಸೂತ್ರವನ್ನು ಎರಡು ಬಾರಿ ಬಳಸಲು ಇದು ವೇಗವಾಗಿ ತೋರುತ್ತದೆ (mysql 5.9):
$formula = "((acos(sin(".$latitude."*pi()/180))) * sin((`Latitude`*pi()/180))+cos((".$latitude. ”*pi()/180)) * cos((`Latitude`*pi()/180)) * cos((“.$ರೇಖಾಂಶ.”- `ರೇಖಾಂಶ`)*pi()/180)))) *180/pi())*60*1.1515*1.609344)";
$sql = 'SELECT *, '.$formula.' ಟೇಬಲ್ನಿಂದ ದೂರದಲ್ಲಿ '..$ಫಾರ್ಮುಲಾ.' <= '.$ ದೂರ;
ಧನ್ಯವಾದಗಳು…
ಒಂದು ವೇಳೆ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ
"ಎಲ್ಲಿ ದೂರ"
ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರೆ
"ಅಂತರವಿದೆ"
ಈ ಲೇಖನವನ್ನು ಕತ್ತರಿಸಿದ್ದಕ್ಕಾಗಿ ತುಂಬಾ ಧನ್ಯವಾದಗಳು.ಇದು ತುಂಬಾ ಸಹಾಯಕವಾಗಿದೆ.
PHP ಅನ್ನು ಮೊದಲಿಗೆ "ವೈಯಕ್ತಿಕ ಮುಖಪುಟ" ಎಂಬ ಸರಳ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ವೇದಿಕೆಯಾಗಿ ರಚಿಸಲಾಗಿದೆ. ಇತ್ತೀಚಿನ ದಿನಗಳಲ್ಲಿ PHP (ಹೈಪರ್ಟೆಕ್ಸ್ಟ್ ಪ್ರಿಪ್ರೊಸೆಸರ್ಗೆ ಚಿಕ್ಕದಾಗಿದೆ) ಮೈಕ್ರೋಸಾಫ್ಟ್ನ ಸಕ್ರಿಯ ಸರ್ವರ್ ಪುಟಗಳ (ASP) ತಂತ್ರಜ್ಞಾನದ ಪರ್ಯಾಯವಾಗಿದೆ.
PHP ಎಂಬುದು ಓಪನ್ ಸೋರ್ಸ್ ಸರ್ವರ್-ಸೈಡ್ ಭಾಷೆಯಾಗಿದ್ದು, ಇದನ್ನು ಡೈನಾಮಿಕ್ ವೆಬ್ ಪುಟಗಳನ್ನು ರಚಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಇದನ್ನು HTML ನಲ್ಲಿ ಎಂಬೆಡ್ ಮಾಡಬಹುದು. PHP ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ Linux/UNIX ವೆಬ್ ಸರ್ವರ್ಗಳಲ್ಲಿ MySQL ಡೇಟಾಬೇಸ್ ಜೊತೆಯಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ಇದು ಬಹುಶಃ ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಭಾಷೆಯಾಗಿದೆ.
ಮೇಲಿನ ಪರಿಹಾರವು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ ಎಂದು ನಾನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ.
ನಾನು ಇದಕ್ಕೆ ಬದಲಾಯಿಸಬೇಕಾಗಿದೆ:
$qqq = “SELECT *,((acos(“.$latitude.”*pi())/180)) * sin((`latt`*pi()/180))+cos((” . $latitude . "*pi()/180)) * cos((`latt`*pi()/180)) * cos(((" . $ರೇಖಾಂಶ . "- `longt`)*pi()/180) )))*180/pi())*60*1.1515) `ರಿಜಿಸ್ಟರ್` ನಿಂದ ದೂರವಾಗಿ ";
ಧನ್ಯವಾದಗಳು ಕುಪೇಂದ್ರ!
ಧನ್ಯವಾದಗಳು ಸರ್ ಪರಿಪೂರ್ಣವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೀರಿ.. ಆದರೆ ನಾನು ದಶಮಾಂಶ ಬಿಂದುವಿಲ್ಲದೆ ಔಟ್ಪುಟ್ ಮಾಡಲು ಬಯಸಿದರೆ ನಾನು ಏನು ಮಾಡಬಹುದು..?
ಮುಂಚಿತವಾಗಿ ಧನ್ಯವಾದಗಳು.
ಹಲೋ, ದಯವಿಟ್ಟು ನನಗೆ ಈ ಬಗ್ಗೆ ನಿಮ್ಮ ಸಹಾಯ ಬೇಕು.
ನನ್ನ ವೆಬ್-ಸರ್ವರ್ಗೆ ನಾನು ಪಡೆಯಲು ವಿನಂತಿಯನ್ನು ಮಾಡಿದ್ದೇನೆ http://localhost:8000/users/findusers/53.47792/-2.23389/20/
53.47792 = $ಅಕ್ಷಾಂಶ
-2.23389 = $ರೇಖಾಂಶ
ಮತ್ತು 20 = ನಾನು ಹಿಂಪಡೆಯಲು ಬಯಸುವ ದೂರ
ಆದಾಗ್ಯೂ ನಿಮ್ಮ ಸೂತ್ರವನ್ನು ಬಳಸಿದರೆ, ಅದು ನನ್ನ ಡಿಬಿಯಲ್ಲಿನ ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ
$ಫಲಿತಾಂಶಗಳು = DB::select( DB::raw("SELECT *, ((acos(".$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) ಮಾರ್ಕರ್ಗಳಿಂದ ದೂರವಿದೆ >= “.$distance ));
[{“id”:1,”name”:”Frankie Johnnie & Luigo Too”,”address”:”939 W El Camino Real, Mountain View, CA”,”lat”:37.386337280273,”lng”:-122.08582305908, ”distance”:16079.294719663},{“id”:2,”name”:”Amici's East Coast Pizzeria”,”address”:”790 Castro St, Mountain View, CA”,”lat”:37.387138366699,”lng”: -122.08323669434,”distance”:16079.175940152},{“id”:3”name”:”Kapp's Pizza Bar & Grill”,”address”:”191 Castro St, Mountain View, CA””lat”:37.393886566162 ”lng”:-122.07891845703,”distance”:16078.381373826},{“id”:4,”name”:”Round Table Pizza: Mountain View”,”address”:”570 N Shoreline Blvd, Mountain View, CA”, ”lat”:37.402652740479,”lng”:-122.07935333252”distance”:16077.420540582},{“id”:5”name”:”Tony & Alba's Pizza & Pasta””619, Ecutain:” ವೀಕ್ಷಿಸಿ, CA”,”lat”:37.394012451172,”lng”:-122.09552764893”distance”:16078.563225154},{“id”:6”name”:”Oregano's Wood-Fired Pizza””4546 ಎಲ್ ಕ್ಯಾಮಿನೊ ರಿಯಲ್, ಲಾಸ್ ಆಲ್ಟೋಸ್, ಸಿಎ”,”ಲ್ಯಾಟ್”:37.401725769043,”lng”:-122.11464691162”ದೂರ”:16077.937560795},{“ ಐಡಿ”:7,”ಹೆಸರು”:”ದಿ ಬಾರ್ಗಳು ಮತ್ತು ಗ್ರಿಲ್ಸ್”,”ವಿಳಾಸ”:”24 ವೈಟ್ಲಿ ಸ್ಟ್ರೀಟ್, ಮ್ಯಾಂಚೆಸ್ಟರ್”,”ಲ್ಯಾಟ್”:53.485118865967,”lng”:-2.1828699111938,”ದೂರ”:8038.7620112314}
ನಾನು 20 ಮೈಲುಗಳಿರುವ ಸಾಲುಗಳನ್ನು ಮಾತ್ರ ಹಿಂಪಡೆಯಲು ಬಯಸುತ್ತೇನೆ ಆದರೆ ಅದು ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು ತರುತ್ತದೆ. ದಯವಿಟ್ಟು ನಾನು ಏನು ತಪ್ಪು ಮಾಡುತ್ತಿದ್ದೇನೆ
ನಾನು ಇದೇ ರೀತಿಯ ಪ್ರಶ್ನೆಯನ್ನು ಹುಡುಕುತ್ತಿದ್ದೇನೆ ಆದರೆ ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಹೆಜ್ಜೆ ಹಾಕಿದೆ - ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಇದು ಪ್ರತಿ ನಿರ್ದೇಶಾಂಕದ 2 ಮೈಲುಗಳ ಒಳಗೆ ಎಲ್ಲಾ ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಗುಂಪು ಮಾಡುವುದು ಮತ್ತು ನಂತರ ಪ್ರತಿ ಗುಂಪಿನಲ್ಲಿ ಎಷ್ಟು ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಎಣಿಕೆ ಮಾಡುವುದು ಮತ್ತು ಹೆಚ್ಚಿನ ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಹೊಂದಿರುವ ಒಂದು ಗುಂಪನ್ನು ಮಾತ್ರ ಔಟ್ಪುಟ್ ಮಾಡುವುದು - ನೀವು ಹೆಚ್ಚು ಸಂಖ್ಯೆಯ ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಹೊಂದಿರುವ ಗುಂಪುಗಳಲ್ಲಿ ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಗುಂಪನ್ನು ಹೊಂದಿದ್ದೀರಿ - ಒಂದೇ ದೊಡ್ಡ ಸಂಖ್ಯೆಯ ಗುಂಪುಗಳಿಂದ ಯಾದೃಚ್ಛಿಕ ಗುಂಪನ್ನು ಸರಳವಾಗಿ ಔಟ್ಪುಟ್ ಮಾಡಿ -