Message ID | 20170526102546.24611-2-tk+ff@meskal.net |
---|---|
State | Accepted |
Headers | show |
diff --git a/index.php b/index.php index 936e29b..514e1ae 100644 --- a/index.php +++ b/index.php @@ -53,112 +53,6 @@ function showError($code,$msg){ print_r(json_encode($errorObject)); } -/** - * Haversine distance function in km - * https://en.wikipedia.org/wiki/Haversine_formula - * - * @param double $lat1 - * latitude point 1 - * @param double $lon1 - * longitude point 1 - * @param double $lat2 - * latitude point 2 - * @param double $lon2 - * longitude point 2 - * @return integer distance between the points in km - */ -const EARTH_RADIUS = 6371; - -function distance_haversine($lat1,$lon1,$lat2,$lon2){ - $delta_lat = $lat1-$lat2; - $delta_lon = $lon1-$lon2; - $alpha = $delta_lat/2; - $beta = $delta_lon/2; - $a = sin(deg2rad($alpha))*sin(deg2rad($alpha))+cos(deg2rad($lat1))*cos(deg2rad($lat2))*sin(deg2rad($beta))*sin(deg2rad($beta)); - $c = asin(min(1,sqrt($a))); - $distance = 2*EARTH_RADIUS*$c; - $distance = round($distance,3); - return $distance; -} - -/** - * Try to read the geo coodinates from netmon and - * return them as an array [lat, lon]. - * In case of error return empty array. - * - * @param $mac search for the router by the mac adress or by name - * @return array[lat, lon] or [] - */ -function getLocationByMacOrName($mac){ - require('config.inc.php'); - $url = $netmon_server.'/api/rest/router/'.$mac; - - if(!$netmon_response = simplexml_load_file($url)) { - debug('ERROR: Failed to open '.$url); - return []; - } - - if($netmon_response->request->error_code > 0){ - debug('WARN: '.$netmon_response->request->error_message); - return []; - } - - // get geo-location - $nodeLat = floatval($netmon_response->router->latitude); - $nodeLon = floatval($netmon_response->router->longitude); - if ($nodeLat == 0 || $nodeLon == 0){ - debug('WARN nodeLat: '.$nodeLat.', nodeLon: '.$nodeLon); - return []; - } - - debug('nodeLat: '.$nodeLat.', nodeLon: '.$nodeLon); - return array($nodeLat,$nodeLon); -} - -/** - * Check is the given geo coordinates are within one of the hoods. - * - * @param double $lat - * latitude point 1 - * @param double $lon - * longitude point 1 - * @return integer hood-id - */ -function getHoodByGeo($lat,$lon){ - $current_hood_dist=99999999; - $current_hood=DEFAULT_HOOD_ID; - - // load hoods from DB - try { - $rs = db::getInstance()->prepare('SELECT * FROM `hoods`'); - $rs->execute(); - } - catch(PDOException $e) { - exit(showError(500,$e)); - } - - // check for every hood if it's nearer than the hood before - while($result = $rs->fetch(PDO::FETCH_ASSOC)){ - debug("\n\nhood: ".$result['name']); - - if(is_null($result['lat']) || is_null($result['lon'])) - continue; - - debug('hoodCenterLat: '.$result['lat'].', hoodCenterLon: '.$result['lon'].', hoodID: '.$result['ID']); - - $distance = distance_haversine($result['lat'],$result['lon'],$lat,$lon); - debug('distance: $distance'); - - if ($distance <= $current_hood_dist) { - debug('Node belongs to Hood '.$result['ID'].'('.$result['name'].')'); - $current_hood_dist = $distance; - $current_hood = $result['ID']; - } - } - - return $current_hood; -} - function debug($msg){ if(DEBUG) print_r($msg."\n"); @@ -223,21 +117,10 @@ if(isset($ip) && $ip && isset($name) && $name && isset($key) && $key) { if (!$result['readonly'] && !$result['notrain']) { $updateHood=false; if (!$result['isgateway']) { - // discover the best hood-id from netmons geo-location - //$location = getLocationByMacOrName($mac == INVALID_MAC ? $name : $mac); - - //if($location && $location[0] && $location[1]) { - // $hood = getHoodByGeo($location[0],$location[1]); - - // if ($hood != $result['hood_ID']) { - // $updateHood=true; - // } - //} - if ($result['hood_ID'] != 0) - { - $updateHood=true; - $hood = 0; - } + if ($result['hood_ID'] != 0) { + $updateHood=true; + $hood = 0; + } } if ($updateHood) @@ -262,11 +145,6 @@ if(isset($ip) && $ip && isset($name) && $name && isset($key) && $key) { } } else{ - //$location = getLocationByMacOrName($mac == INVALID_MAC ? $name : $mac); - - //if($location && $location[0] && $location[1]) - // $hood = getHoodByGeo($location[0],$location[1]); - $sql = 'INSERT INTO nodes(ip,mac,name,`key`,port,readonly,isgateway,hood_ID) VALUES (:ip,:mac,:name,:key,:port,0,0,:hood);'; try{ $rs = db::getInstance()->prepare($sql);
Hi Tobias Gern kannst du das applien. Bitte stecke da aber nicht so viel Zeit rein. Die index.php ist nur noch für die alten Knoten, die ihre Koordinaten nicht mitschicken. Diese landen dann eh in der Trainstation. Und danke fürs Aufräumen des Repos. Tim Am Freitag, den 26.05.2017, 12:25 +0200 schrieb Tobias Klaus: > Signed-off-by: Tobias Klaus <tk+ff@meskal.net> > --- > index.php | 130 ++------------------------------------------------------------ > 1 file changed, 4 insertions(+), 126 deletions(-) > > diff --git a/index.php b/index.php > index 936e29b..514e1ae 100644 > --- a/index.php > +++ b/index.php > @@ -53,112 +53,6 @@ function showError($code,$msg){ > print_r(json_encode($errorObject)); > } > > -/** > - * Haversine distance function in km > - * https://en.wikipedia.org/wiki/Haversine_formula > - * > - * @param double $lat1 > - * latitude point 1 > - * @param double $lon1 > - * longitude point 1 > - * @param double $lat2 > - * latitude point 2 > - * @param double $lon2 > - * longitude point 2 > - * @return integer distance between the points in km > - */ > -const EARTH_RADIUS = 6371; > - > -function distance_haversine($lat1,$lon1,$lat2,$lon2){ > - $delta_lat = $lat1-$lat2; > - $delta_lon = $lon1-$lon2; > - $alpha = $delta_lat/2; > - $beta = $delta_lon/2; > - $a = sin(deg2rad($alpha))*sin(deg2rad($alpha))+cos(deg2rad($lat1))*cos(deg2rad($lat2))*sin(deg2rad($beta))*sin(deg2rad($beta)); > - $c = asin(min(1,sqrt($a))); > - $distance = 2*EARTH_RADIUS*$c; > - $distance = round($distance,3); > - return $distance; > -} > - > -/** > - * Try to read the geo coodinates from netmon and > - * return them as an array [lat, lon]. > - * In case of error return empty array. > - * > - * @param $mac search for the router by the mac adress or by name > - * @return array[lat, lon] or [] > - */ > -function getLocationByMacOrName($mac){ > - require('config.inc.php'); > - $url = $netmon_server.'/api/rest/router/'.$mac; > - > - if(!$netmon_response = simplexml_load_file($url)) { > - debug('ERROR: Failed to open '.$url); > - return []; > - } > - > - if($netmon_response->request->error_code > 0){ > - debug('WARN: '.$netmon_response->request->error_message); > - return []; > - } > - > - // get geo-location > - $nodeLat = floatval($netmon_response->router->latitude); > - $nodeLon = floatval($netmon_response->router->longitude); > - if ($nodeLat == 0 || $nodeLon == 0){ > - debug('WARN nodeLat: '.$nodeLat.', nodeLon: '.$nodeLon); > - return []; > - } > - > - debug('nodeLat: '.$nodeLat.', nodeLon: '.$nodeLon); > - return array($nodeLat,$nodeLon); > -} > - > -/** > - * Check is the given geo coordinates are within one of the hoods. > - * > - * @param double $lat > - * latitude point 1 > - * @param double $lon > - * longitude point 1 > - * @return integer hood-id > - */ > -function getHoodByGeo($lat,$lon){ > - $current_hood_dist=99999999; > - $current_hood=DEFAULT_HOOD_ID; > - > - // load hoods from DB > - try { > - $rs = db::getInstance()->prepare('SELECT * FROM `hoods`'); > - $rs->execute(); > - } > - catch(PDOException $e) { > - exit(showError(500,$e)); > - } > - > - // check for every hood if it's nearer than the hood before > - while($result = $rs->fetch(PDO::FETCH_ASSOC)){ > - debug("\n\nhood: ".$result['name']); > - > - if(is_null($result['lat']) || is_null($result['lon'])) > - continue; > - > - debug('hoodCenterLat: '.$result['lat'].', hoodCenterLon: '.$result['lon'].', hoodID: '.$result['ID']); > - > - $distance = distance_haversine($result['lat'],$result['lon'],$lat,$lon); > - debug('distance: $distance'); > - > - if ($distance <= $current_hood_dist) { > - debug('Node belongs to Hood '.$result['ID'].'('.$result['name'].')'); > - $current_hood_dist = $distance; > - $current_hood = $result['ID']; > - } > - } > - > - return $current_hood; > -} > - > function debug($msg){ > if(DEBUG) > print_r($msg."\n"); > @@ -223,21 +117,10 @@ if(isset($ip) && $ip && isset($name) && $name && isset($key) && $key) { > if (!$result['readonly'] && !$result['notrain']) { > $updateHood=false; > if (!$result['isgateway']) { > - // discover the best hood-id from netmons geo-location > - //$location = getLocationByMacOrName($mac == INVALID_MAC ? $name : $mac); > - > - //if($location && $location[0] && $location[1]) { > - // $hood = getHoodByGeo($location[0],$location[1]); > - > - // if ($hood != $result['hood_ID']) { > - // $updateHood=true; > - // } > - //} > - if ($result['hood_ID'] != 0) > - { > - $updateHood=true; > - $hood = 0; > - } > + if ($result['hood_ID'] != 0) { > + $updateHood=true; > + $hood = 0; > + } > } > > if ($updateHood) > @@ -262,11 +145,6 @@ if(isset($ip) && $ip && isset($name) && $name && isset($key) && $key) { > } > } > else{ > - //$location = getLocationByMacOrName($mac == INVALID_MAC ? $name : $mac); > - > - //if($location && $location[0] && $location[1]) > - // $hood = getHoodByGeo($location[0],$location[1]); > - > $sql = 'INSERT INTO nodes(ip,mac,name,`key`,port,readonly,isgateway,hood_ID) VALUES (:ip,:mac,:name,:key,:port,0,0,:hood);'; > try{ > $rs = db::getInstance()->prepare($sql); > -- > 2.13.0 >
Hey, Am Freitag, 26. Mai 2017, 13:29:43 CEST schrieb Tim Niemeyer: > Hi Tobias > > Gern kannst du das applien. Ich hab das mal als Reviewed by aufgepasst und entsprechend gepusht. github und server sollten jetzt auch wieder synchron sein. > Bitte stecke da aber nicht so viel Zeit > rein. Sowieso nicht. War eher ein Versehen, dass ich mir die Datei zu lange an geschaut hab. Und da ich schonmal gemacht hab wollt ich nicht, dass das geo- Zeug noch jemand verwirrt ;-) Grüße Tobias > Die index.php ist nur noch für die alten Knoten, die ihre > Koordinaten nicht mitschicken. Diese landen dann eh in der Trainstation. > > Und danke fürs Aufräumen des Repos. > > Tim > > Am Freitag, den 26.05.2017, 12:25 +0200 schrieb Tobias Klaus: > > Signed-off-by: Tobias Klaus <tk+ff@meskal.net> > > --- > > > > index.php | 130 > > ++------------------------------------------------------------ 1 file > > changed, 4 insertions(+), 126 deletions(-) > > > > diff --git a/index.php b/index.php > > index 936e29b..514e1ae 100644 > > --- a/index.php > > +++ b/index.php > > @@ -53,112 +53,6 @@ function showError($code,$msg){ > > > > print_r(json_encode($errorObject)); > > > > } > > > > -/** > > - * Haversine distance function in km > > - * https://en.wikipedia.org/wiki/Haversine_formula > > - * > > - * @param double $lat1 > > - * latitude point 1 > > - * @param double $lon1 > > - * longitude point 1 > > - * @param double $lat2 > > - * latitude point 2 > > - * @param double $lon2 > > - * longitude point 2 > > - * @return integer distance between the points in km > > - */ > > -const EARTH_RADIUS = 6371; > > - > > -function distance_haversine($lat1,$lon1,$lat2,$lon2){ > > - $delta_lat = $lat1-$lat2; > > - $delta_lon = $lon1-$lon2; > > - $alpha = $delta_lat/2; > > - $beta = $delta_lon/2; > > - $a = > > sin(deg2rad($alpha))*sin(deg2rad($alpha))+cos(deg2rad($lat1))*cos(deg2rad > > ($lat2))*sin(deg2rad($beta))*sin(deg2rad($beta)); - $c = > > asin(min(1,sqrt($a))); > > - $distance = 2*EARTH_RADIUS*$c; > > - $distance = round($distance,3); > > - return $distance; > > -} > > - > > -/** > > - * Try to read the geo coodinates from netmon and > > - * return them as an array [lat, lon]. > > - * In case of error return empty array. > > - * > > - * @param $mac search for the router by the mac adress or by name > > - * @return array[lat, lon] or [] > > - */ > > -function getLocationByMacOrName($mac){ > > - require('config.inc.php'); > > - $url = $netmon_server.'/api/rest/router/'.$mac; > > - > > - if(!$netmon_response = simplexml_load_file($url)) { > > - debug('ERROR: Failed to open '.$url); > > - return []; > > - } > > - > > - if($netmon_response->request->error_code > 0){ > > - debug('WARN: '.$netmon_response->request->error_message); > > - return []; > > - } > > - > > - // get geo-location > > - $nodeLat = floatval($netmon_response->router->latitude); > > - $nodeLon = floatval($netmon_response->router->longitude); > > - if ($nodeLat == 0 || $nodeLon == 0){ > > - debug('WARN nodeLat: '.$nodeLat.', nodeLon: '.$nodeLon); > > - return []; > > - } > > - > > - debug('nodeLat: '.$nodeLat.', nodeLon: '.$nodeLon); > > - return array($nodeLat,$nodeLon); > > -} > > - > > -/** > > - * Check is the given geo coordinates are within one of the hoods. > > - * > > - * @param double $lat > > - * latitude point 1 > > - * @param double $lon > > - * longitude point 1 > > - * @return integer hood-id > > - */ > > -function getHoodByGeo($lat,$lon){ > > - $current_hood_dist=99999999; > > - $current_hood=DEFAULT_HOOD_ID; > > - > > - // load hoods from DB > > - try { > > - $rs = db::getInstance()->prepare('SELECT * FROM `hoods`'); > > - $rs->execute(); > > - } > > - catch(PDOException $e) { > > - exit(showError(500,$e)); > > - } > > - > > - // check for every hood if it's nearer than the hood before > > - while($result = $rs->fetch(PDO::FETCH_ASSOC)){ > > - debug("\n\nhood: ".$result['name']); > > - > > - if(is_null($result['lat']) || is_null($result['lon'])) > > - continue; > > - > > - debug('hoodCenterLat: '.$result['lat'].', hoodCenterLon: > > '.$result['lon'].', hoodID: '.$result['ID']); - > > - $distance = > > distance_haversine($result['lat'],$result['lon'],$lat,$lon); - > > debug('distance: $distance'); > > - > > - if ($distance <= $current_hood_dist) { > > - debug('Node belongs to Hood > > '.$result['ID'].'('.$result['name'].')'); - $current_hood_dist = > > $distance; > > - $current_hood = $result['ID']; > > - } > > - } > > - > > - return $current_hood; > > -} > > - > > > > function debug($msg){ > > > > if(DEBUG) > > > > print_r($msg."\n"); > > > > @@ -223,21 +117,10 @@ if(isset($ip) && $ip && isset($name) && $name && > > isset($key) && $key) {> > > if (!$result['readonly'] && !$result['notrain']) { > > > > $updateHood=false; > > if (!$result['isgateway']) { > > > > - // discover the best hood-id from netmons geo-location > > - //$location = getLocationByMacOrName($mac == INVALID_MAC ? $name > > : $mac); - > > - //if($location && $location[0] && $location[1]) { > > - // $hood = getHoodByGeo($location[0],$location[1]); > > - > > - // if ($hood != $result['hood_ID']) { > > - // $updateHood=true; > > - // } > > - //} > > - if ($result['hood_ID'] != 0) > > - { > > - $updateHood=true; > > - $hood = 0; > > - } > > + if ($result['hood_ID'] != 0) { > > + $updateHood=true; > > + $hood = 0; > > + } > > > > } > > > > if ($updateHood) > > > > @@ -262,11 +145,6 @@ if(isset($ip) && $ip && isset($name) && $name && > > isset($key) && $key) {> > > } > > > > } > > else{ > > > > - //$location = getLocationByMacOrName($mac == INVALID_MAC ? $name : > > $mac); - > > - //if($location && $location[0] && $location[1]) > > - // $hood = getHoodByGeo($location[0],$location[1]); > > - > > > > $sql = 'INSERT INTO > > nodes(ip,mac,name,`key`,port,readonly,isgateway,hood_ID) VALUES > > (:ip,:mac,:name,:key,:port,0,0,:hood);'; try{ > > > > $rs = db::getInstance()->prepare($sql);
Signed-off-by: Tobias Klaus <tk+ff@meskal.net> --- index.php | 130 ++------------------------------------------------------------ 1 file changed, 4 insertions(+), 126 deletions(-)