Explorar el Código

Merge branch 'master' of ssh://biuro.biall-net.pl:2222/plabudda/se

Mariusz Muszyński hace 9 años
padre
commit
6ff409e29a
Se han modificado 2 ficheros con 160 adiciones y 1 borrados
  1. 159 0
      SE/dev/php-cli/biale_plamy.php_
  2. 1 1
      SE/superedit-SYNC_DATABASES.php

+ 159 - 0
SE/dev/php-cli/biale_plamy.php_

@@ -0,0 +1,159 @@
+<?php
+$_SERVER['SERVER_NAME'] = 'prezes.procesy5.pl';
+require("../../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);
+}
+//
+//phpinfo();
+}
+
+init_sh_check();
+
+die();
+
+
+$query = "select astext(the_geom) as multiway from Rozdzielcza_test_bzyk_drogi where numpoints(the_geom)>1";
+$result = DB::getPDO()->fetchall($query);
+$joins = array();
+foreach ($result as $row) {
+	$multiway = Vendor_Geophp::load($row['multiway'], 'wkt');
+//echo $multiway->length();
+	for ($i = 1; $i < $n = $multiway->numPoints(); $i++) {
+		$ways[] = new LineString(array($multiway->pointN($i), $multiway->pointN($i+1)));
+		if (!in_array($multiway->pointN($i)->asText(), $joins)) $joins[] = $multiway->pointN($i)->asText();
+	}
+	if (!in_array($multiway->pointN($n)->asText(), $joins)) $joins[] = $multiway->pointN($n)->asText();
+}
+
+// todo relacje ways <-> joins
+
+$query = "select ID, astext(the_geom) as point, astext(the_geom_nearest_way) as way, astext(the_geom_xpoint) as xpoint 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');
+
+        $xpoint = Vendor_Geophp::load($row['xpoint'], 'wkt');
+	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');
+
+	if (!(in_array($xpoint->asText(), $joins))) {
+		if (@!in_array($key, $ways2cut[array_search($way, $ways)])) {
+			$ways2cut[array_search($way, $ways)][] = $key;
+		}
+	};
+}
+
+function pointsDistance($a, $b) {
+	$line = new LineString(array($a, $b));
+	return $line->length();
+}
+
+foreach ($ways2cut as $way_key => $xpoint_keys) {
+	$distances = array();
+	foreach ($xpoint_keys as $xpoint_key) {
+		$xpoint = Vendor_Geophp::load($xpoints[$xpoint_key], 'wkt');
+		$joins[] = $xpoint;
+		$distances[$xpoint_key] = pointsDistance($ways[$way_key]->startPoint(), $xpoint);
+	}
+	asort($distances);
+
+	$sub_xpoints = array();
+	foreach (array_keys($distances) as $xpoint_key) {
+		$sub_xpoints[] = Vendor_Geophp::load($xpoints[$xpoint_key]);
+	}
+
+	$startPoint = $ways[$way_key]->startPoint();
+	$endPoint = $ways[$way_key]->endPoint();
+	$ways[$way_key] = new LineString(array($startPoint, $sub_xpoints[0]));
+	for ($i = 0; $i < $n = count($sub_xpoints) - 1; $i++) {
+		$ways[] = new LineString(array($sub_xpoints[$i], $sub_xpoints[$i+1]));
+	}
+	$ways[] = new LineString(array($sub_xpoints[$n], $endPoint));
+		
+}
+
+//print_r($ways);
+
+/*
+$db = DB::getDB();
+$db->query("truncate table Rozdzielcza_test_bzyk_ways");
+$db->query("truncate table Rozdzielcza_test_bzyk_joins");
+
+
+foreach ($ways as $way) {
+	$query = "insert into Rozdzielcza_test_bzyk_ways (the_geom) values (linefromtext('".$way->asText()."'))";
+	$db->query($query);
+}
+
+foreach ($xpoints as $xpoint) {
+	$xpoint2 = Vendor_Geophp::load($xpoint, 'wkt');
+	$query = "insert into Rozdzielcza_test_bzyk_joins (the_geom) values (pointfromtext('".$xpoint2->asText()."'))";
+	$db->query($query);
+}
+*/

+ 1 - 1
SE/superedit-SYNC_DATABASES.php

@@ -229,7 +229,7 @@ $sd->set_remote_db_id(13102);
 //$sd->set_table_to_sync('Rozdzielcza_wezly'); //
 
 $sd->set_table_to_sync('solectwa_poligon'); //
-$sd->set_table_to_sync('Kabel_TPSA_dzierzawa'); //
+//$sd->set_table_to_sync('Kabel_TPSA_dzierzawa'); //
 //$sd->set_table_to_sync('Rozdzielcza_Przeciski_110mm');
 //$sd->set_table_to_sync('Rozdzielcza_Wykop_przedmiar_na_mikrorurki');
 //$sd->set_table_to_sync('Rozdzielcza_Zabruki');