<?php | <?php |
$conn = pg_connect("dbname=bus user=postgres password=snmc"); | $conn = pg_connect("dbname=bus user=postgres password=snmc"); |
if (!$conn) { | if (!$conn) { |
echo "An error occured.\n"; | echo "An error occured.\n"; |
exit; | exit; |
} | } |
if ($_REQUEST['oldgeopo']) { | if ($_REQUEST['oldgeopo']) { |
$sql = " DELETE from stops WHERE geohash = '{$_REQUEST['oldgeopo']}'"; | $sql = " DELETE from stops WHERE geohash = '{$_REQUEST['oldgeopo']}'"; |
$result = pg_query($conn, $sql); | $result = pg_query($conn, $sql); |
if (!$result) { | if (!$result) { |
echo("Error in SQL query: " . pg_last_error() . "<br>\n"); | echo("Error in SQL query: " . pg_last_error() . "<br>\n"); |
} else { | } else { |
echo "Deleted {$_REQUEST['oldgeopo']}<br>"; | echo "Deleted {$_REQUEST['oldgeopo']}<br>"; |
$updatedroutes = 0; | |
$result_outdatedroutes = pg_query($conn, "Select * FROM between_stops where points LIKE '%" . $_REQUEST['oldgeopo'] . ";%'"); | |
while ($outdatedroute = pg_fetch_assoc($result_outdatedroutes)) { | |
$newpoints = str_replace($_REQUEST['oldgeopo'].';', '', $outdatedroute['points']); | |
$sql = "UPDATE between_stops set points='$newpoints' where fromlocation = '{$outdatedroute['fromlocation']}' AND tolocation = '{$outdatedroute['tolocation']}' "; | |
$result = pg_query($conn, $sql); | |
if (!$result) { | |
echo("Error in SQL query: " . pg_last_error() . "<br>\n"); | |
} | |
echo "updated ".$outdatedroute['fromlocation']."->".$outdatedroute['tolocation']."<br>"; | |
$updatedroutes++; | |
} | |
echo "updated $updatedroutes routes<br>"; | |
} | } |
} | } |
flush(); | flush(); |
?> | ?> |
<?php | <?php |
/* | /* |
* GeoPo Encode in PHP | * GeoPo Encode in PHP |
* @author : Shintaro Inagaki | * @author : Shintaro Inagaki |
* @param $location (Array) | * @param $location (Array) |
* @return $geopo (String) | * @return $geopo (String) |
*/ | */ |
function geopoEncode($lat, $lng) | function geopoEncode($lat, $lng) |
{ | { |
// 64characters (number + big and small letter + hyphen + underscore) | // 64characters (number + big and small letter + hyphen + underscore) |
$chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; | $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; |
$geopo = ""; | $geopo = ""; |
$scale = 7; | $scale = 7; |
// Change a degree measure to a decimal number | // Change a degree measure to a decimal number |
$lat = ($lat + 90) / 180 * pow(8, 10); | $lat = ($lat + 90) / 180 * pow(8, 10); |
$lng = ($lng + 180) / 360 * pow(8, 10); | $lng = ($lng + 180) / 360 * pow(8, 10); |
// Compute a GeoPo code from head and concatenate | // Compute a GeoPo code from head and concatenate |
for ($i = 0; $i < $scale; $i++) { | for ($i = 0; $i < $scale; $i++) { |
$geopo .= substr($chars, floor($lat / pow(8, 9 - $i) % 8) + floor($lng / pow(8, 9 - $i) % 8) * 8, 1); | $geopo .= substr($chars, floor($lat / pow(8, 9 - $i) % 8) + floor($lng / pow(8, 9 - $i) % 8) * 8, 1); |
} | } |
return $geopo; | return $geopo; |
} | } |
/* | /* |
* GeoPo Decode in PHP | * GeoPo Decode in PHP |
* @author : Shintaro Inagaki | * @author : Shintaro Inagaki |
* @param $geopo (String) | * @param $geopo (String) |
* @return $location (Array) | * @retu |