"Rozdzielcza_test2_bzyk_punkty_adresowe", "origWaysTable"=>"Rozdzielcza_test2_bzyk_drogi"));
//$test->enableShowProgress();
$test->loadCache();
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);
}
}
}
}
$ways2joins = unserialize(file_get_contents('/tmp/save_ways2joins.txt'));
$joins2ways = unserialize(file_get_contents('/tmp/save_joins2ways.txt'));
$points2joins = unserialize(file_get_contents('/tmp/save_points2joins.txt'));
$joins_asText = unserialize(file_get_contents('/tmp/save_joins_asText.txt'));
$ways_asText = unserialize(file_get_contents('/tmp/save_ways_asText.txt'));
$points_asText = unserialize(file_get_contents('/tmp/save_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
";
//$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];
}
}
/////////
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
Generuje dla ID_Way:".$ID_Way." i joins ".$pkt_A." , ".$pkt_B." ";
unset($res);unset($path);
$res = $test->findWay($pkt_A, $pkt_B);
$lineStringObj = $test->joins2lineString($res);
if($lineStringObj) {
$path = $lineStringObj->asText();
//$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, A_RECORD_CREATE_DATE )
values (ST_GeomFromText('".$edge_joins_filled_paths[$ID_Way]['asText']."'),'".$ID_Way."' , now() ) ";
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 "ERROR 131 dla pkt: ID_WAY:".$ID_Way;
print_r($Joins_arr);
}
} else echo "\n#220 droga nie ma koncow ID_Way::".$ID_Way;
}
echo "
\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('');
array_to_xml($edge_joins_filled_paths,$xml_data);
print $xml_data->asXML("edge_joins_filled_paths.xml");
unset($xml_data);