|
|
@@ -1,361 +0,0 @@
|
|
|
-<?php
|
|
|
-
|
|
|
- ini_set('display_errors', 'On');
|
|
|
-error_reporting(E_ALL);
|
|
|
-
|
|
|
-
|
|
|
-$_SERVER['SERVER_NAME'] = 'biuro.biall-net.pl';
|
|
|
-//when used in /Library/Server/Web/Data/Sites/bzyk-biale-plamy-php-temp/SE/dev on biuro.biall-net.pl
|
|
|
-if( file_exists ( "../../se-lib/bootstrap.php"))
|
|
|
-require("../../se-lib/bootstrap.php");
|
|
|
-//when used in in native SE
|
|
|
-else require("../../../../SE-production-git/SE/se-lib/bootstrap.php");
|
|
|
-
|
|
|
-Lib::loadClass("Vendor_Geophp");
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-function init_sh_check() {
|
|
|
- //check if run from bash
|
|
|
- if(isset($_SERVER["argv"])) {
|
|
|
- if(@$_SERVER["argv"][1]=='--help') {
|
|
|
- echo "
|
|
|
- Options are:
|
|
|
- php ".$_SERVER["argv"][0]." --check - control if we have needed tables/data
|
|
|
-
|
|
|
- .EOF
|
|
|
- ";
|
|
|
- } else if(@$_SERVER["argv"][1]=='--check') {
|
|
|
- check();
|
|
|
- } else echo " bad option, try:
|
|
|
- php ".$_SERVER["argv"][0]." --help
|
|
|
-
|
|
|
- .EOF
|
|
|
- ";
|
|
|
- } else {
|
|
|
- echo "<br> this script could be run from bash e.g. php biale_plamy.php --help <br>" ;
|
|
|
- check();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-function check() {
|
|
|
- echo "<br>\n i run check()";
|
|
|
- //todo to set arguments to rebuild tables etc:
|
|
|
- $check_tbls=array('Rozdzielcza_test_bzyk_drogi','Rozdzielcza_test_bzyk_joins','Rozdzielcza_test_bzyk_przylacza_HIST',
|
|
|
- 'Rozdzielcza_test_bzyk_przylacza','Rozdzielcza_test_bzyk_punkty_adresowe','Rozdzielcza_test_bzyk_ways');
|
|
|
-
|
|
|
- //$tables = DB::getPDO()->list_tables();
|
|
|
- foreach($check_tbls as $tbl) {
|
|
|
- $query = "select ID from ".$tbl." limit 1 ";
|
|
|
- echo "<br>\nresult chk for tbl:".$tbl." ;";
|
|
|
-
|
|
|
- try{
|
|
|
- $result = DB::getPDO()->fetchall($query);
|
|
|
- } catch(Exception $exception) {
|
|
|
- // return $exception;
|
|
|
- echo "<br>\n jest blad z tbl:".$tbl." i get sample table structure with data from ../sql/".$tbl.".sql - it should be manually replaced by correct/newer!";
|
|
|
- $sql = file_get_contents('../sql/'.$tbl.'.sql');
|
|
|
-
|
|
|
- try{
|
|
|
- $result = DB::getPDO()->fetchall($sql);
|
|
|
- } catch(Exception $exception2) {
|
|
|
- echo "<br>\n jest blad dump dla tbl:".$tbl;
|
|
|
- }
|
|
|
- }
|
|
|
- // print_r($exception);
|
|
|
- print_r($result);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-init_sh_check();
|
|
|
-
|
|
|
-$query = "select astext(the_geom) as multiway ,ID as ID_Way from Rozdzielcza_test_bzyk_drogi where numpoints(the_geom)>1";
|
|
|
-$result = DB::getPDO()->fetchall($query);
|
|
|
-$joins_asText = array();
|
|
|
-foreach ($result as $row) {
|
|
|
- $multiway = Vendor_Geophp::load($row['multiway'], 'wkt');
|
|
|
-//echo $multiway->length();
|
|
|
- for ($i = 1; $i < $n = $multiway->numPoints(); $i++) {
|
|
|
- $way = new LineString(array($multiway->pointN($i), $multiway->pointN($i+1)));
|
|
|
- $ways_asText[] = $way->asText();
|
|
|
- $ways_2ID_Way[]=$row['ID_Way'];
|
|
|
- if (!in_array($multiway->pointN($i)->asText(), $joins_asText)) $joins_asText[] = $multiway->pointN($i)->asText();
|
|
|
- }
|
|
|
- if (!in_array($multiway->pointN($n)->asText(), $joins_asText)) $joins_asText[] = $multiway->pointN($n)->asText();
|
|
|
-}
|
|
|
-
|
|
|
-$query = "select ID, astext(the_geom) as point, astext(the_geom_nearest_way) as way, astext(the_geom_xpoint) as xpoint, ID_Way from Rozdzielcza_test_bzyk_punkty_adresowe";
|
|
|
-$result = DB::getPDO()->fetchall($query);
|
|
|
-$xpoints = array();
|
|
|
-foreach ($result as $row) {
|
|
|
- $points[$row['ID']] = Vendor_Geophp::load($row['point'], 'wkt');
|
|
|
- $points2ID_Way[$row['ID']] = $row['ID_Way'] ;
|
|
|
- $points_asText[$row['ID']] = $points[$row['ID']]->asText();
|
|
|
- $xpoint = Vendor_Geophp::load($row['xpoint'], 'wkt');
|
|
|
- //blad dziwny sqix
|
|
|
- if($xpoints) {
|
|
|
- if (!($key = array_search($xpoint->asText(), $xpoints))) $key = array_push($xpoints, $xpoint->asText())-1;
|
|
|
- $xpoints2points[$key][] = $row['ID'];
|
|
|
- $points2xpoints[$row['ID']] = $key;
|
|
|
-
|
|
|
- $way = Vendor_Geophp::load($row['way'], 'wkt');
|
|
|
- }
|
|
|
- //errory sieje z die
|
|
|
- if($xpoint) {
|
|
|
- if (!(in_array($xpoint->asText(), $joins_asText))) {
|
|
|
- if (@!in_array($key, $ways2cut[array_search($way->asText(), $ways_asText)])) {
|
|
|
- $ways2cut[array_search($way->asText(), $ways_asText)][] = array('key'=>$key,'ID_Way'=>$row['ID_Way']);
|
|
|
- } else echo ".";
|
|
|
- };
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-function pointsDistance($a, $b) {
|
|
|
- $line = new LineString(array($a, $b));
|
|
|
- return $line->length();
|
|
|
-}
|
|
|
-
|
|
|
-foreach ($ways2cut as $way_key => $xpoint_keys) {
|
|
|
- $distances = array();
|
|
|
- //$xpoint_keys=$value_arr['key'];
|
|
|
- $way = Vendor_Geophp::load($ways_asText[$way_key], 'wkt');
|
|
|
- foreach ($xpoint_keys as $xpoint_key_arr) {
|
|
|
-
|
|
|
- if($joins_asText ) {
|
|
|
- $xpoint_key=$xpoint_key_arr['key'];
|
|
|
- $ID_Way=$xpoint_key_arr['ID_Way'];
|
|
|
- if($xpoints[$xpoint_key]) //error sypie
|
|
|
- $xpoint = Vendor_Geophp::load($xpoints[$xpoint_key], 'wkt');
|
|
|
- if($xpoint) { ///sypie errorem
|
|
|
- $key = array_push($joins_asText, $xpoint->asText())-1; //blad
|
|
|
- foreach ($xpoints2points[$xpoint_key] as $point_key) {
|
|
|
- $points2joins[$point_key] = $key;
|
|
|
- }
|
|
|
- }
|
|
|
- $distances[$xpoint_key] = pointsDistance($way->startPoint(), $xpoint);
|
|
|
- }
|
|
|
- }
|
|
|
- asort($distances);
|
|
|
-
|
|
|
- $sub_xpoints = array();
|
|
|
- foreach (array_keys($distances) as $xpoint_key) {
|
|
|
- if($xpoints[$xpoint_key]) // if sypie errorami
|
|
|
- $sub_xpoints[] = Vendor_Geophp::load($xpoints[$xpoint_key]);
|
|
|
- }
|
|
|
-
|
|
|
- $startPoint = $way->startPoint();
|
|
|
- $endPoint = $way->endPoint();
|
|
|
- if($sub_xpoints[0] and $startPoint) { // sypie erorrami
|
|
|
- $way = new LineString(array($startPoint, $sub_xpoints[0]));
|
|
|
- $ways_asText[$way_key] = $way->asText();
|
|
|
- $ways_2ID_Way[$way_key]=$ID_Way;
|
|
|
- }
|
|
|
-
|
|
|
- for ($i = 0; $i < $n = count($sub_xpoints) - 1; $i++) {
|
|
|
- $way = new LineString(array($sub_xpoints[$i], $sub_xpoints[$i+1]));
|
|
|
- $ways_asText[] = $way->asText();
|
|
|
- $ways_2ID_Way[]=$ID_Way;
|
|
|
- }
|
|
|
- if($sub_xpoints[$n] and $endPoint) {
|
|
|
- $way = new LineString(array($sub_xpoints[$n], $endPoint));
|
|
|
- $ways_asText[] = $way->asText();
|
|
|
- $ways_2ID_Way[]=$ID_Way;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-foreach (array_keys($ways_asText) as $way_key) {
|
|
|
- $way = Vendor_Geophp::load($ways_asText[$way_key], 'wkt');
|
|
|
- $ways_lenghts[$way_key] = $way->length();
|
|
|
- for ($i = 1; $i <= 2; $i++) {
|
|
|
- $join = $way->pointN($i)->asText();
|
|
|
- $join_key = array_search($join, $joins_asText);
|
|
|
-//if (!$join_key) echo ".";
|
|
|
- $ways2joins[$way_key][] = $join_key;
|
|
|
- $joins2ways[$join_key][] = $way_key;
|
|
|
- }
|
|
|
-}
|
|
|
-/*
|
|
|
-// $val=array(A=>asd,B=>cos) ---
|
|
|
-// <xml>
|
|
|
-// <A>cos</A>
|
|
|
- <B>cos></B>
|
|
|
- </xml>
|
|
|
- array(0=asd,1=asd)
|
|
|
- <xml>
|
|
|
- <item id=0>asd</>
|
|
|
- <item id=2>asd</>
|
|
|
-
|
|
|
- array(A=>asd,B=>array(0=>asd,1=>asd))
|
|
|
- <xml>
|
|
|
- <A>asd</>
|
|
|
- <B><item id=0>asd</>
|
|
|
- <item id=1>asd</>
|
|
|
-
|
|
|
-// $pozA[1]=dupa
|
|
|
-// $pozA[2]=jasiu
|
|
|
-*/
|
|
|
-// function defination to convert array to xml
|
|
|
-function array_to_xml( $data, &$xml_data ) {
|
|
|
- foreach( $data as $key => $value ) {
|
|
|
- $key_="";
|
|
|
-
|
|
|
- if( is_numeric($key) ){
|
|
|
- $key_ = 'item';
|
|
|
- }
|
|
|
-
|
|
|
- if( is_array($value) ) {
|
|
|
- $subnode = $xml_data->addChild($key_);
|
|
|
- $subnode->addAttribute('id', $key);
|
|
|
- array_to_xml($value, $subnode);
|
|
|
- } else {
|
|
|
- $subnode=$xml_data->addChild("$key_",htmlspecialchars("$value"));
|
|
|
- if( is_numeric($key) ){
|
|
|
- $subnode->addAttribute('id', $key);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-file_put_contents('points2ID_Way.txt',serialize($points2ID_Way));
|
|
|
-//for better debug to see variables in editor i make also print_r
|
|
|
- ob_start();print_r($points2ID_Way); $contents = ob_get_contents();ob_end_clean();
|
|
|
- file_put_contents('points2ID_Way_print_r.txt',$contents);
|
|
|
-
|
|
|
- $xml_data = new SimpleXMLElement('<?xml version="1.0"?><points2ID_Way></points2ID_Way>');
|
|
|
- array_to_xml($points2ID_Way,$xml_data);
|
|
|
- print $xml_data->asXML("points2ID_Way.xml");
|
|
|
- unset($xml_data);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-file_put_contents('ways_2ID_Way.txt',serialize($ways_2ID_Way));
|
|
|
-//for better debug to see variables in editor i make also print_r
|
|
|
- ob_start();print_r($ways_2ID_Way); $contents = ob_get_contents();ob_end_clean();
|
|
|
- file_put_contents('ways_2ID_Way_print_r.txt',$contents);
|
|
|
-
|
|
|
- $xml_data = new SimpleXMLElement('<?xml version="1.0"?><ways_2ID_Way></ways_2ID_Way>');
|
|
|
- array_to_xml($ways_2ID_Way,$xml_data);
|
|
|
- print $xml_data->asXML("ways_2ID_Way.xml");
|
|
|
- unset($xml_data);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-file_put_contents('ways2joins.txt',serialize($ways2joins));
|
|
|
-//for better debug to see variables in editor i make also print_r
|
|
|
- ob_start();print_r($ways2joins); $contents = ob_get_contents();ob_end_clean();
|
|
|
- file_put_contents('ways2joins_print_r.txt',$contents);
|
|
|
-
|
|
|
- $xml_data = new SimpleXMLElement('<?xml version="1.0"?><ways2joins></ways2joins>');
|
|
|
- array_to_xml($ways2joins,$xml_data);
|
|
|
- print $xml_data->asXML("ways2joins.xml");
|
|
|
- unset($xml_data);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-file_put_contents('joins2ways.txt',serialize($joins2ways));
|
|
|
- ob_start();print_r($joins2ways); $contents = ob_get_contents();ob_end_clean();
|
|
|
- file_put_contents('joins2ways_print_r.txt',$contents);
|
|
|
- $xml_data = new SimpleXMLElement('<?xml version="1.0"?><joins2ways></joins2ways>');
|
|
|
- array_to_xml($joins2ways,$xml_data);
|
|
|
- print $xml_data->asXML("joins2ways.xml");
|
|
|
- unset($xml_data);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-file_put_contents('points2joins.txt',serialize($points2joins));
|
|
|
- ob_start();print_r($points2joins); $contents = ob_get_contents();ob_end_clean();
|
|
|
- file_put_contents('points2joins_print_r.txt',$contents);
|
|
|
- $xml_data = new SimpleXMLElement('<?xml version="1.0"?><points2joins></points2joins>');
|
|
|
- array_to_xml($points2joins,$xml_data);
|
|
|
- print $xml_data->asXML("points2joins.xml");
|
|
|
- unset($xml_data);
|
|
|
-
|
|
|
-file_put_contents('joins_asText.txt',serialize($joins_asText));
|
|
|
- ob_start();print_r($joins_asText); $contents = ob_get_contents();ob_end_clean();
|
|
|
- file_put_contents('joins_asText_print_r.txt',$contents);
|
|
|
- $xml_data = new SimpleXMLElement('<?xml version="1.0"?><joins_asText></joins_asText>');
|
|
|
- array_to_xml($joins_asText,$xml_data);
|
|
|
- print $xml_data->asXML("joins_asText.xml");
|
|
|
- unset($xml_data);
|
|
|
-
|
|
|
-
|
|
|
-file_put_contents('ways_asText.txt',serialize($ways_asText));
|
|
|
- ob_start();print_r($ways_asText); $contents = ob_get_contents();ob_end_clean();
|
|
|
- file_put_contents('ways_asText_print_r.txt',$contents);
|
|
|
- $xml_data = new SimpleXMLElement('<?xml version="1.0"?><ways_asText></ways_asText>');
|
|
|
- array_to_xml($ways_asText,$xml_data);
|
|
|
- print $xml_data->asXML("ways_asText.xml");
|
|
|
- unset($xml_data);
|
|
|
-
|
|
|
-
|
|
|
-file_put_contents('points_asText.txt',serialize($points_asText));
|
|
|
- ob_start();print_r($points_asText); $contents = ob_get_contents();ob_end_clean();
|
|
|
- file_put_contents('points_asText_print_r.txt',$contents);
|
|
|
- $xml_data = new SimpleXMLElement('<?xml version="1.0"?><points_asText></points_asText>');
|
|
|
- array_to_xml($points_asText,$xml_data);
|
|
|
- print $xml_data->asXML("points_asText.xml");
|
|
|
- unset($xml_data);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-/*
|
|
|
-function findWay($join_key, $point_key, $path = array()) {
|
|
|
- global $ways2joins, $joins2ways, $points2joins, $ways_asText, $joins2ways, $points, $points2xpoints, $xpoints2joins, $ways_lengths, $res;
|
|
|
-//echo implode('->',$path)."\n\n";
|
|
|
- if ($join_key == $points2joins[$point_key]) $res[] = $path;
|
|
|
- else {
|
|
|
- foreach ($joins2ways[$join_key] as $way_key) {
|
|
|
- if (!in_array($way_key, $path)) {
|
|
|
-// $joins = $ways2joins[$way_key];
|
|
|
-// $back_join_subkey = array_search($join_key, $joins);
|
|
|
-// $new_join_subkey = 1 - $back_join_subkey;
|
|
|
-// $new_join = $joins[$new_join_subkey];
|
|
|
- $new_join = $ways2joins[$way_key][1 - array_search($join_key, $ways2joins[$way_key])];
|
|
|
- findWay($new_join, $point_key, array_merge($path,array($way_key)));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-*/
|
|
|
-//print_r($ways2joins);
|
|
|
-//for ($i = 0; $i < count($points); $i++) {
|
|
|
-// if (isset($res)) unset($res);
|
|
|
-// findWay(2000, $i);
|
|
|
-// print_r($res);
|
|
|
-//}
|
|
|
-//print_r($ways);
|
|
|
-
|
|
|
-echo "ways count: ".count($ways_asText)."\n";
|
|
|
-
|
|
|
-
|
|
|
-$db = DB::getDB();
|
|
|
-$db->query("truncate table Rozdzielcza_test_bzyk_ways");
|
|
|
-$db->query("truncate table Rozdzielcza_test_bzyk_joins");
|
|
|
-
|
|
|
-
|
|
|
-foreach ($ways_asText as $way) {
|
|
|
- $query = "insert into Rozdzielcza_test_bzyk_ways (the_geom) values (linefromtext('".$way."'))";
|
|
|
- $db->query($query);
|
|
|
- //echo $query."\n";
|
|
|
-}
|
|
|
-
|
|
|
-foreach ($joins_asText as $join) {
|
|
|
- $query = "insert into Rozdzielcza_test_bzyk_joins (the_geom) values (pointfromtext('".$join."'))";
|
|
|
- $db->query($query);
|
|
|
-}
|
|
|
-
|