cahyadsn

haversine great circle query

Sep 27th, 2017
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.11 KB | None | 0 0
  1. <?php
  2. //  111.045 -- kms
  3. //  69.0 -- miles
  4.  
  5. $sql=
  6. "
  7.   SELECT
  8.    id, nama, lat, lng, distance
  9.   FROM (
  10.     SELECT a.id,
  11.            a.nama,
  12.            a.poskode,
  13.            a.lat,
  14.            a.lng,
  15.            b.radius,
  16.            111.045
  17.             * DEGREES(ACOS(COS(RADIANS(b.latpoint))
  18.             * COS(RADIANS(a.lat))
  19.             * COS(RADIANS(b.longpoint - a.lng))
  20.             + SIN(RADIANS(b.latpoint))
  21.             * SIN(RADIANS(a.lat)))) AS distance
  22.      FROM
  23.        wilayah AS a
  24.        JOIN
  25.        (
  26.          SELECT
  27.            {$org_lat} AS latpoint,
  28.            {$org_lng} AS longpoint,
  29.            {$ini_rad} AS radius,
  30.        ) AS b ON 1=1
  31.      WHERE
  32.        a.lat BETWEEN
  33.            b.latpoint  - (b.radius / b.distance_unit)
  34.            AND b.latpoint  + (b.radius / b.distance_unit)
  35.        AND a.lng BETWEEN
  36.          b.longpoint - (b.radius / (b.distance_unit * COS(RADIANS(b.latpoint))))
  37.          AND b.longpoint + (b.radius / (b.distance_unit * COS(RADIANS(b.latpoint))))
  38.     ) AS d
  39.   WHERE distance <= radius
  40.   ORDER BY distance
  41.   LIMIT 15
  42. ";
Advertisement
Add Comment
Please, Sign In to add comment