חשב או שאילתה מרחק מעגל גדול בין נקודות קו רוחב וקו אורך באמצעות נוסחת Haversine (דוגמאות PHP, Python, MySQL, MSSQL)

Haversine Formula - מרחק מעגל גדול - PHP, Python, MySQL

החודש תכננתי לא מעט ב- PHP וב- MySQL ביחס ל- GIS. חיטטתי ברשת, התקשיתי למצוא חלק מה- חישובים גיאוגרפיים למצוא את המרחק בין שני מיקומים ולכן רציתי לשתף אותם כאן.

מפת טיסה אירופה עם מרחק מעגל גדול

הדרך הפשוטה לחישוב מרחק בין שתי נקודות היא באמצעות הנוסחה הפיתגוראית לחישוב ההיפוטנוזה של משולש (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 – משתנה עבור קו האורך של המיקום השני שלך.
  • $unit - ברירת המחדל קילומטרים. זה יכול להיות מעודכן או להעביר בתור קילומטרים.

פייתון: חשב מרחק בין 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 כדי לבצע חישוב כדי למצוא את כל הרשומות במרחק ספציפי. בדוגמה זו, אני אעבור שאילתה על MyTable ב- MySQL כדי למצוא את כל הרשומות שפחות או שוות למרחק $ המשתנה (במייל) למיקום שלי ברוחב $ ו longitude $:

השאילתה לאחזור כל הרשומות בתוך ספציפי מרחק על ידי חישוב המרחק במיילים בין שתי נקודות רוחב ואורך הם:

$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: אחזור כל הרשומות בטווח על ידי חישוב מרחק בקילומטרים באמצעות קו רוחב וקו אורך

והנה שאילתת SQL המשתמשת בקילומטרים ב- MySQL:

$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, הם מציעים פונקציה משלהם, STDistance לחישוב המרחק בין שתי נקודות באמצעות סוג הנתונים גיאוגרפיה.

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

טיפ כובע למנש סהו, סמנכ"ל ואדריכל של Highbridge.

תגובות 77

  1. 1

    תודה רבה על השיתוף. זו הייתה עבודת העתקה והדבקה קלה ועובדת נהדר. חסכת לי הרבה זמן.
    לידיעתך לכל מי שמעביר ל-C:
    double deg2rad(double deg) { return deg*(3.14159265358979323846/180.0); }

  2. 2

    פוסט נחמד מאוד - עבד מאוד יפה - הייתי צריך רק לשנות את שם השולחן שמחזיק את ה-lat-long. זה עובד די מהר ל.. יש לי מספר קטן למדי של אורך רוחב (<400) אבל אני חושב שזה יתאים בצורה יפה. גם אתר נחמד - זה עתה הוספתי אותו לחשבון del.icio.us שלי ואבדוק שוב באופן קבוע.

  3. 4
  4. 5
  5. 8
  6. 10
  7. 11
  8. 12

    תודה רבה על שיתוף הקוד הזה. זה חסך לי הרבה זמן פיתוח. כמו כן, תודה לקוראים שלך שציינו שהצהרת HAVING נחוצה עבור MySQL 5.x. עוזר מאוד.

  9. 14
  10. 15
  11. 16

    גיליתי גם ש-WHERE לא עבד בשבילי. שינית את זה ל-HAVING והכל עובד מושלם. בהתחלה לא קראתי את ההערות וכתבתי אותן מחדש באמצעות בחירה מקוננת. שניהם יעבדו בסדר גמור.

  12. 17
  13. 18

    מועיל להפליא, תודה רבה! היו לי כמה בעיות עם "HAVING" החדש ולא עם "WHERE", אבל ברגע שקראתי את התגובות כאן (אחרי כחצי שעה של חריקת שיניים בתסכול =P), הצלחתי לעבוד יפה. תודה לך ^_^

  14. 19
  15. 20

    זכור שהצהרה נבחרת כזו תהיה אינטנסיבית מאוד מבחינה חישובית ולכן איטית. אם יש לך הרבה מהשאילתות האלה, זה יכול לתקוע דברים די מהר.

    גישה הרבה פחות אינטנסיבית היא להפעיל בחירה ראשונה (גולמית) תוך שימוש בשטח SQUARE המוגדר על ידי מרחק מחושב כלומר "בחר * מתוך שם הטבלה שבו קו הרוחב בין lat1 ל-lat2 וקו אורך בין lon1 ל-lon2". lat1 = targetlatitude – latdiff, lat2 = targetlatitude + latdiff, דומה ל-lon. latdiff ~= מרחק / 111 (עבור ק"מ), או מרחק/69 עבור מיילים מכיוון שדרגת קו רוחב אחת היא ~ 1 ק"מ (שינוי קל מכיוון שכדור הארץ מעט סגלגל, אך מספיק למטרה זו). londiff = distance / (abs(cos(deg111rad(latitude))*2)) - או 111 עבור מיילים (אתה יכול למעשה לקחת ריבוע קצת יותר גדול כדי לקחת בחשבון שינויים). ואז קח את התוצאה של זה והזן אותה לתוך הבחירה הרדיאלית. רק אל תשכח לקחת בחשבון את הקואורדינטות מחוץ לתחום - כלומר טווח קו האורך המקובל הוא -69 עד +180 וטווח קו הרוחב המקובל הוא -180 עד +90 - למקרה שה-latdiff או הלונדיף שלך נמצאים מחוץ לטווח הזה . שימו לב שברוב המקרים זה עשוי שלא להיות ישים מכיוון שהוא משפיע רק על חישובים על קו דרך האוקיינוס ​​השקט מקוטב לקוטב, אם כי הוא חוצה חלק מצ'וקוטקה וחלק מאלסקה.

    מה שאנו משיגים בכך הוא הפחתה משמעותית במספר הנקודות שלפיהן אתה עושה את החישוב הזה. אם יש לך מיליון נקודות גלובליות במסד הנתונים המחולקות בערך באופן שווה ואתה רוצה לחפש בטווח של 100 ק"מ, אז החיפוש (המהיר) הראשון שלך הוא של שטח של 10000 ק"מ רבוע וכנראה יניב כ-20 תוצאות (בהתבסס על התפלגות שווה על פני שטח פנים של כ-500M קמ"ר), מה שאומר שאתה מפעיל את חישוב המרחק המורכב 20 פעמים עבור שאילתה זו במקום מיליון פעמים.

    • 21

      טעות קטנה בדוגמה... שתהיה בטווח של 50 ק"מ (לא 100) מכיוון שאנו מסתכלים על ה"רדיוס" של... הריבוע שלנו.

      • 22

        עצה פנטסטית! למעשה עבדתי עם מפתח שכתב פונקציה שמשכה את הריבוע הפנימי ולאחר מכן פונקציה רקורסיבית שיצרה 'ריבועים' סביב ההיקף כדי לכלול ולא לכלול את הנקודות הנותרות. התוצאה הייתה תוצאה מהירה להפליא - הוא יכול היה להעריך מיליוני נקודות במיקרו-שניות.

        הגישה שלי למעלה היא בהחלט 'גסה' אבל מסוגלת. שוב תודה!

        • 23

          דאג,

          ניסיתי להשתמש ב-mysql וב-php כדי להעריך אם נקודת lat long נמצאת בתוך מצולע. האם אתה יודע אם חבר המפתח שלך פרסם דוגמאות כלשהן כיצד לבצע משימה זו. או שאתה מכיר דוגמאות טובות. תודה מראש.

  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

    ו-Mysql אומר לי שמרחק, לא קיים כעמודה, אני יכול להשתמש ב- order by, אני יכול לעשות את זה בלי WHERE, וזה עובד, אבל לא איתו...

  17. 26

    זה נהדר, אבל זה בדיוק כמו הציפורים עפות. זה יהיה נהדר לנסות ולשלב את ה-API של גוגל מפות לזה איכשהו (אולי באמצעות כבישים וכו') רק כדי לתת רעיון באמצעות צורת תחבורה אחרת. עדיין לא יצרתי פונקציית חישול מדומה ב-PHP שתהיה מסוגלת להציע פתרון יעיל לבעיית המוכר הנוסע. אבל אני חושב שאולי אוכל לעשות שימוש חוזר בחלק מהקוד שלך כדי לעשות זאת.

  18. 27
  19. 28

    מאמר טוב! מצאתי הרבה מאמרים שמתארים איך מחשבים מרחק בין שתי נקודות אבל באמת חיפשתי את קטע ה-SQL.

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

    יומיים של מחקר כדי למצוא סוף סוף את הדף הזה שפותר לי את הבעיה. נראה שכדאי שאפרוץ את הוולפראם-אלפא שלי ואחדש את המתמטיקה שלי. השינוי מ-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
  38. 55
  39. 56
  40. 58

    תודה על פרסום המאמר המועיל הזה,  
    אבל משום מה אני רוצה לשאול
    כיצד לקבל את המרחק בין coords בתוך mysql db לבין coords שהוכנסו ל-php על ידי משתמש?
    לתיאור ברור יותר:
    1. על המשתמש להכניס [מזהה] לבחירת נתונים שצוינו מ-db ומהקוורדים של המשתמש עצמו
    2. קובץ ה-php קבל את נתוני היעד (קוורדים) באמצעות [id] ולאחר מכן חשב את המרחק בין המשתמש לנקודת היעד

    או יכול פשוט לקבל מרחק מהקוד למטה?

    $qry = “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) כמרחק FROM `MyTable` WHERE distance >= ".$distance." >>>>אני יכול "להוציא" את המרחק מכאן?
    שוב תודה,
    טימי ס

  41. 60

    בסדר, כל מה שניסיתי לא עובד. כלומר, מה שיש לי עובד, אבל המרחקים רחוקים.

    מישהו יכול לראות מה לא בסדר בקוד הזה?

    if(isset($_POST['submitted'])){ $z = $_POST['zipcode']; $r = $_POST['radius']; echo "תוצאות עבור ".$z; $sql = mysql_query(“SELECT DISTINCT m.zipcode, m.MktName,m.LocAddSt,m.LocAddCity,m.LocAddState,m.x1,m.y1,m.verified,z1.lat,z2.lon,z1. city,z1.state FROM mrk m, zip z1, zip z2 WHERE m.zipcode = z1.zipcode AND 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()); while($row = mysql_fetch_array( $sql )) { $store1 = $row['MktName'].""; $store = $row['LocAddSt'].""; $store .= $row['LocAddCity'].", ".$row['LocAddState']." ".$row['מיקוד']; $latitude1 = $row['lat']; $longitude1 = $row['lon']; $latitude2 = $row['y1']; $longitude2 = $row['x1']; $city = $row['city']; $state = $row['state']; $dis = getnew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi'); // $dis = distance($lat1, $lon1, $lat2, $lon2); $verified = $row['verified']; if($verified == '1'){ echo ""; echo "".$store.""; echo $dis . " רחוק מאוד"; הד ""; } else { echo "".$store.""; echo $dis . " רחוק מאוד"; הד ""; } }}

    קוד functions.php שלי
    function 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); $distance = rad2deg($distance); $distance = $distance * 60 * 1.1515; switch($unit) { case 'Mi': break; מקרה 'Km' : $distance = $distance * 1.609344; } return (round($distance,2)); }

    תודה מראש

  42. 61
  43. 62

    היי דאגלס, מאמר מעולה. מצאתי את ההסבר שלך על המושגים הגיאוגרפיים והקוד ממש מעניין. ההצעה היחידה שלי תהיה לרווח ולהכניס את הקוד לתצוגה (כמו Stackoverflow, למשל). אני מבין שאתה רוצה לחסוך במקום, אבל מרווח קוד / הזחה קונבנציונלי יקל עליי, כמתכנת, לקרוא ולנתח. בכל מקרה, זה דבר קטן. תמשיך בעבודה הנהדרת.

  44. 64
  45. 65
  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    נראה מהיר יותר (mysql 5.9) להשתמש פעמיים בנוסחה ב-select והיכן:
    $formula = "(((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 = 'בחר *, '.$formula.' כמרחק מטבלה WHERE '..$formula.' <= '.$distance;

  51. 71
  52. 72

    תודה רבה על גזירת המאמר הזה. זה מאוד מועיל.
    PHP נוצרה בהתחלה כפלטפורמת סקריפטים פשוטה בשם "דף בית אישי". כיום PHP (הקיצור של Hypertext Preprocessor) היא חלופה לטכנולוגיית Active Server Pages (ASP) של מיקרוסופט.

    PHP היא שפת קוד פתוח בצד השרת המשמשת ליצירת דפי אינטרנט דינמיים. ניתן להטמיע ב-HTML. בדרך כלל נעשה שימוש ב-PHP בשילוב עם מסד נתונים של MySQL בשרתי אינטרנט של Linux/UNIX. זו כנראה שפת הסקריפט הפופולרית ביותר.

  53. 73

    מצאתי שהפתרון למעלה לא עובד כמו שצריך.
    אני צריך לשנות ל:

    $qqq = “SELECT *,(((acos(sin((“.$latitude.”*pi()/180)) * sin((`latt`*pi()/180))+cos((” . $latitude . "*pi()/180)) * cos((`latt`*pi()/180)) * cos(((" . $longitude . "- `longt`)*pi()/180) )))*180/pi())*60*1.1515) כמרחק FROM `register` ";

  54. 75
  55. 76

    שלום, בבקשה אני באמת אצטרך את עזרתכם בנושא.

    הגשתי בקשת קבל לשרת האינטרנט שלי http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $Latitude
    -2.23389 = $אורך
    ו-20 = המרחק שאני רוצה לאחזר

    עם זאת באמצעות הנוסחה שלך, הוא מאחזר את כל השורות ב-db שלי

    $results = DB::select( DB::raw(“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) כמרחק FROM markers HAVING distance >= ".$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":"Pizza Round Table: 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","address":"619 Mountain Escuela" View, CA”,”lat”:37.394012451172,”lng”:-122.09552764893,”distance”:16078.563225154},{“id”:6,”name”:”Oregano's Wood-Fired Pizza”,,”address”:”4546 El Camino Real, Los Altos, CA”,”lat”:37.401725769043,”lng”:-122.11464691162,”distance”:16077.937560795},{“ id”:7,”name”:”הברים והגריל”,,”address”:”24 Whiteley Street, Manchester”,,”lat”:53.485118865967,”lng”:-2.1828699111938,”distance”:8038.7620112314}]

    אני רוצה לאחזר רק שורות עם 20 מייל אבל זה מביא את כל השורות. בבקשה מה אני עושה לא בסדר

  56. 77

    אני מחפש שאילתה דומה אבל התגברתי קצת - בקיצור זה לקבץ את כל הקואורדינטות בטווח של 2 מייל מכל קואורדינטה ואז לספור כמה קואורדינטות בכל קבוצה ולהוציא רק קבוצה אחת שיש לה הכי הרבה קואורדינטות - גם אם יש לך יותר מקבוצה אחת בין קבוצות שיש להן את מספר הקואורדינטות הרב ביותר - פשוט פלט את הקבוצה האקראית מהקבוצות עם אותו המספר הגדול ביותר -

מה אתה חושב?

אתר זה משתמש Akismet כדי להפחית דואר זבל. למד כיצד הנתונים שלך מעובדים.