|
|
@@ -1,6 +1,13 @@
|
|
|
<?php
|
|
|
$_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");
|
|
|
|
|
|
|
|
|
@@ -68,6 +75,38 @@ $joins_asText = unserialize(file_get_contents('joins_asText.txt'));
|
|
|
$ways_asText = unserialize(file_get_contents('ways_asText.txt'));
|
|
|
$points_asText = unserialize(file_get_contents('points_asText.txt'));
|
|
|
|
|
|
+$edge_joins=simplexml_load_file("edge_joins.xml");
|
|
|
+$edge_joins->registerXPathNamespace('bp', 'https://procesy5.pl/biale_plamy-schema.xsd');
|
|
|
+
|
|
|
+//print_r($edge_joins);
|
|
|
+foreach($edge_joins->children() as $child) {
|
|
|
+ // echo "\n<br>";
|
|
|
+ //$attrs=$child->attributes("ID_Way");
|
|
|
+
|
|
|
+ foreach($child->attributes() as $a=>$b) {
|
|
|
+ // echo "#87Child";print_r($b[0]);
|
|
|
+ $ID_Way=$b[0];
|
|
|
+ }
|
|
|
+ //echo $child->getName() . ": " . " ID_Way: ".$ID_Way. " : ";
|
|
|
+
|
|
|
+ $id_j=0;
|
|
|
+ settype($ID_Way, "integer");
|
|
|
+ //$ID_Way=var_dump($ID_Way);
|
|
|
+
|
|
|
+ // echo "#88Child:"; print_r($ID_Way);
|
|
|
+ //$edge_joins_path['ID_Way'][$attrs['ID_Way']]=array();
|
|
|
+ foreach($child->children('https://procesy5.pl/biale_plamy-schema.xsd') as $edge_joins_xml) {
|
|
|
+ $id_j++;
|
|
|
+ $attrs_join=$edge_joins_xml->attributes();
|
|
|
+ //echo " #93 ID_Join ".$attrs_join["Joins"]." ";
|
|
|
+ $Join=$attrs_join["Joins"][0];
|
|
|
+ settype($Join, "integer");
|
|
|
+ $edge_joins_path[$ID_Way][$id_j]=$attrs_join["Joins"][0];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//print_r($edge_joins_path);
|
|
|
+
|
|
|
|
|
|
|
|
|
function joins2lineString($joins_keys) {
|
|
|
@@ -130,23 +169,155 @@ function findJoinInDB($id) {
|
|
|
} else return null;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+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 {
|
|
|
+ // $test_expl=explode(" ", $value);
|
|
|
+ //preg_match('/[a-zA-Z]/', $value[0])
|
|
|
+ //if($key_=="" and !isset($test_expl[1]) ) $key_=htmlspecialchars("$value");
|
|
|
+ //czy nie jest jeden element array
|
|
|
+ if($key_=="" and count($data[$key]==1)) {
|
|
|
+ $subnode=$xml_data->addChild("$key",htmlspecialchars("$value"));
|
|
|
+ } else
|
|
|
+ $subnode=$xml_data->addChild("$key_",htmlspecialchars("$value"));
|
|
|
+ if( is_numeric($key) ){
|
|
|
+ $subnode->addAttribute('id', $key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
#echo joins2lineString($res = findWay(100,110))->asText();
|
|
|
#echo joins2lineString($res = findWay(25690,20134))->asText();
|
|
|
-$timeStart = microtime();
|
|
|
#$path = joins2lineString(findWay(25690,23039));
|
|
|
-$path = joins2lineString(findWay(findJoinInDB(142),findJoinInDB(147)));
|
|
|
-$timeEnd = microtime();
|
|
|
-
|
|
|
-if ($path) {
|
|
|
- echo $path->asText()."\n";
|
|
|
- echo "Dlugosc: ".$path->greatCircleLength()."\n";
|
|
|
-} else echo "Brak drogi";
|
|
|
-echo $ways_asText[141];
|
|
|
-
|
|
|
-list($usecStart, $secStart) = explode(" ", $timeStart);
|
|
|
-list($usecEnd, $secEnd) = explode(" ", $timeEnd);
|
|
|
-$diff = $secEnd - $secStart + $usecEnd - $usecStart;
|
|
|
-echo "\n\nCzas liczenia: ".$diff." s\n";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//$path = joins2lineString(findWay(findJoinInDB(49),findJoinInDB(50)));
|
|
|
+
|
|
|
+
|
|
|
+//generujemy path do $edge_joins_filled_paths
|
|
|
+ DB::getPDO()->query("truncate table Rozdzielcza_test_bzyk_paths");
|
|
|
+
|
|
|
+unset($ID_Way);
|
|
|
+
|
|
|
+$edge_joins_filled_paths=array();
|
|
|
+foreach($edge_joins_path as $ID_Way=>$Joins_arr) {
|
|
|
+ settype($ID_Way, "integer");
|
|
|
+ $edge_joins_filled_paths[$ID_Way]['tried']=1;
|
|
|
+ if(isset($Joins_arr[1]) and isset($Joins_arr[2])) {
|
|
|
+ $pkt_A=$Joins_arr[1];$pkt_B=$Joins_arr[2];
|
|
|
+ settype($pkt_A, "integer"); settype($pkt_B, "integer");
|
|
|
+
|
|
|
+ echo "\n<br> Generuje dla ID_Way:".$ID_Way." i joins ".$pkt_A." , ".$pkt_B." ";
|
|
|
+ unset($res);unset($path);
|
|
|
+ $res = findWay($pkt_A,$pkt_B);
|
|
|
+ $path = joins2lineString($res)->asText();
|
|
|
+ // joins2lineString(findWay(389,404));
|
|
|
+ settype($path, "string");
|
|
|
+ $edge_joins_filled_paths[$ID_Way]['asText'] = $path;
|
|
|
+ $distance = 0;
|
|
|
+ foreach ($res as $way_key) {
|
|
|
+ if(isset($ways_asText[$way_key]))
|
|
|
+ $distance += Vendor_Geophp::load($ways_asText[$way_key], 'wkt')->greatCircleLength();
|
|
|
+ }
|
|
|
+ $edge_joins_filled_paths[$ID_Way]['distance'] = $distance;
|
|
|
+ //joins2lineString(findWay($Joins_arr[1],$Joins_arr[2]));
|
|
|
+ //joins2lineString($res = findWay($joinAB['A'],$joinAB['B']))->asText();
|
|
|
+ $sql_insert_path="insert into Rozdzielcza_test_bzyk_paths (the_geom,ID_Way)
|
|
|
+ values (ST_GeomFromText('".$edge_joins_filled_paths[$ID_Way]['asText']."'),'".$ID_Way."' ) ";
|
|
|
+ echo "#216Query path ins:: ".$sql_insert_path." , distance:".$distance." ";
|
|
|
+ if(strlen($edge_joins_filled_paths[$ID_Way]['asText'])>2)
|
|
|
+ DB::getPDO()->query($sql_insert_path);
|
|
|
+ else echo "#296 path nie wygenerowalo sie !! dla ".$ID_Way." i pkt ".$pkt_A." , ".$pkt_B." \n";
|
|
|
+
|
|
|
+ } else echo "\n#220 droga nie ma koncow ID_Way::".$ID_Way;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+echo "<br>\n edge_joins_filled_paths:";
|
|
|
+print_r($edge_joins_filled_paths);
|
|
|
+
|
|
|
+
|
|
|
+//save
|
|
|
+ unset($xml_data);
|
|
|
+
|
|
|
+file_put_contents('edge_joins_filled_paths.txt',serialize($edge_joins_filled_paths));
|
|
|
+ ob_start();print_r($edge_joins_filled_paths); $contents = ob_get_contents();ob_end_clean();
|
|
|
+ file_put_contents('edge_joins_filled_paths_print_r.txt',$contents);
|
|
|
+ $xml_data = new SimpleXMLElement('<?xml version="1.0"?><edge_joins_filled_paths></edge_joins_filled_paths>');
|
|
|
+ array_to_xml($edge_joins_filled_paths,$xml_data);
|
|
|
+ print $xml_data->asXML("edge_joins_filled_paths.xml");
|
|
|
+ unset($xml_data);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//test
|
|
|
+ $timeStart = microtime();
|
|
|
+ $res = findWay(389,404);
|
|
|
+ $path=joins2lineString($res)->asText();
|
|
|
+ $timeEnd = microtime();
|
|
|
+
|
|
|
+ if ($path) {
|
|
|
+ echo $path."\n";
|
|
|
+ } else echo "Brak drogi";
|
|
|
+
|
|
|
+ list($usecStart, $secStart) = explode(" ", $timeStart);
|
|
|
+ list($usecEnd, $secEnd) = explode(" ", $timeEnd);
|
|
|
+ $diff = $secEnd - $secStart + $usecEnd - $usecStart;
|
|
|
+ echo "\n\nCzas liczenia: ".$diff." s\n";
|
|
|
+
|
|
|
+
|
|
|
+ $distance = 0;
|
|
|
+ foreach ($res as $way_key) {
|
|
|
+ $distance += Vendor_Geophp::load($ways_asText[$way_key], 'wkt')->greatCircleLength();
|
|
|
+ }
|
|
|
+ print_r($res);
|
|
|
+ echo "Distance: ".$distance."m\n";
|
|
|
+//eof test
|
|
|
+echo "\n<br>test2";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//test
|
|
|
+ $timeStart = microtime();
|
|
|
+ $res = findWay(389,404);
|
|
|
+ $path=joins2lineString($res)->asText();
|
|
|
+ $timeEnd = microtime();
|
|
|
+
|
|
|
+ if ($path) {
|
|
|
+
|
|
|
+ echo $path."\n";
|
|
|
+ } else echo "Brak drogi";
|
|
|
+
|
|
|
+ list($usecStart, $secStart) = explode(" ", $timeStart);
|
|
|
+ list($usecEnd, $secEnd) = explode(" ", $timeEnd);
|
|
|
+ $diff = $secEnd - $secStart + $usecEnd - $usecStart;
|
|
|
+ echo "\n\nCzas liczenia: ".$diff." s\n";
|
|
|
+
|
|
|
+
|
|
|
+ $distance = 0;
|
|
|
+ foreach ($res as $way_key) {
|
|
|
+ $distance += Vendor_Geophp::load($ways_asText[$way_key], 'wkt')->greatCircleLength();
|
|
|
+ }
|
|
|
+ print_r($res);
|
|
|
+ echo "Distance: ".$distance."m\n";
|
|
|
+//eof test
|
|
|
+
|
|
|
+
|
|
|
|
|
|
//$distance = 0;
|
|
|
//foreach ($res as $way_key) {
|