Преглед изворни кода

Narzędzia do synchronizacji w tym i GIS

Arkadiusz Binder пре 11 година
родитељ
комит
b4075dc352

Разлика између датотеке није приказан због своје велике величине
+ 681 - 626
SE/superedit-SQIX_STRUCTURE_DB_SYNC.php


+ 222 - 0
SE/superedit-SYNC_DATABASES.php

@@ -0,0 +1,222 @@
+<?php
+//
+// synchronizacja do serwera postgres GIS
+//
+
+include_once('se-lib/DB_Dump.php');
+include_once('se-lib/UsersHelper.php');
+include_once('se-lib/Data_Source.php');
+
+
+
+class SYNC_DATABASES {
+	//plan
+	// jakie tabele
+	// synchronizujemy struktury - pierw nasze do gis, potem z gis do nas
+	// dodajemy triggery do remote dla A_RECORD_UPDATE_DATE i A_RECORD_UPDATE_AUTHOR i CREATE_DATE i CREATE_AUTHOR + do HISTA? potem
+	// ewentualnie do tabeli mowiacej o stanie synchronizacji 	_SYNC_DATABASE_TABLE_STATE
+	// todo
+	
+	
+	function set_table_to_sync($table) {
+		$this->set_table_to_sync[]=$table;
+	}
+	
+	
+	function set_local_db_id($id) {
+		$this->local_db_id=$id;
+		$this->db = DB::getDB($id);
+
+	}
+	
+	function set_remote_db_id($id) {
+		$this->remote_db_id=$id;
+		$this->gdb = DB::getDB($id);
+	}
+		
+		
+		
+		
+	function get_last_sync_date($table) {
+		$sql="select TABLE_NAME, unix_timestamp(LAST_SYNCED) as LAST_SYNCED from _SYNC_DATABASE_TABLE_STATE 
+		where DATABASE_SYNCED_ID='".$this->remote_db_id."' and DATABASE_LOCAL_ID='".$this->local_db_id."' and TABLE_NAME='".$table."'
+		order by ID desc limit 1
+		";
+		$res=DB::query($sql);
+		DEBUG_S(-3,'Get date',$sql,__FILE__,__FUNCTION__,__LINE__);
+		while($h=DB::fetch($res)) {
+			return $h->LAST_SYNCED;
+			
+		}
+		return 0;
+	}
+	
+	
+	function set_last_sync_date($table,$now) {
+		$sql="insert  into _SYNC_DATABASE_TABLE_STATE ( TABLE_NAME, LAST_SYNCED , DATABASE_SYNCED_ID , DATABASE_LOCAL_ID )
+		values ('".$table."' , from_unixtime('".$now."') , '".$this->remote_db_id."' , '".$this->local_db_id."')";
+		DEBUG_S(-3,'update sync date',$sql,__FILE__,__FUNCTION__,__LINE__);
+		DB::query($sql);
+		$sql="update  _SYNC_DATABASE_TABLE_STATE set  LAST_SYNCED=from_unixtime('".$now."') where TABLE_NAME='".$table."' 
+			and DATABASE_SYNCED_ID='".$this->remote_db_id."' and DATABASE_LOCAL_ID='".$this->local_db_id."' ";
+		DEBUG_S(-3,'update sync date',$sql,__FILE__,__FUNCTION__,__LINE__);
+
+
+
+
+	}
+	function sync_struct() {
+		
+			$struct_rem=$this->gdb->STRUCTURE_GENERATE($this->set_table_to_sync,null,null);
+			DEBUG_S(-3,'Structure rem',$struct_rem,__FILE__,__FUNCTION__,__LINE__);
+			$this->db->STRUCTURE_GENERATE_PARSE($struct_rem,array('SKIP-PROCEDURE','SKIP-FUNCTION','SKIP-VIEW','SKIP-PRIMARY-KEY','getDB'=>$this->local_db_id));
+		
+
+			$struct_loc=$this->db->STRUCTURE_GENERATE($this->set_table_to_sync,null,null);
+			DEBUG_S(-3,'Structure local',$struct_loc,__FILE__,__FUNCTION__,__LINE__);
+			$this->gdb->STRUCTURE_GENERATE_PARSE($struct_loc,array('SKIP-PROCEDURE','SKIP-FUNCTION','SKIP-VIEW','SKIP-PRIMARY-KEY','getDB'=>$this->remote_db_id));
+		foreach($this->set_table_to_sync as $table) {
+			$this->db->MAKE_SE_AND_HIST_FIELDS_FOR_TABLE($table);
+			$this->gdb->MAKE_SE_AND_HIST_FIELDS_FOR_TABLE($table);			
+		}
+		
+			
+	}
+	
+	
+	function get_current_time() {
+		$this->currtime_loc=$this->db->get_current_time();
+		$this->currtime_rem=$this->gdb->get_current_time();
+		DEBUG_S(-3,'Times curr',array($this->currtime_loc,$this->currtime_rem),__FILE__,__FUNCTION__,__LINE__);
+	}
+	
+	
+	function sync_data() {
+
+		//	$struct_loc=$this->db->STRUCTURE_GENERATE(array('_SYNC_DATABASE_TABLE_STATE'),null,null);
+		//	$this->gdb->STRUCTURE_GENERATE_PARSE($struct_loc,array('SKIP-PROCEDURE','SKIP-FUNCTION','SKIP-VIEW'));
+
+		
+
+
+			foreach($this->set_table_to_sync as $table) {
+			unset($this->ids_rem);
+			unset($this->ids_loc);
+			//Przegrywamy danych ktorych nie ma
+			//Synchronizujemy zmiany
+			 //Zaznaczmy poczatkowa zakresu synchronizacji (wszystko co potem, bedzie znowu musialo isc do synchronizacji)
+			 //To samo po stronie lokalnej i zdalnej 
+			 //Wez dane z jednej i drugiej strony po dacie i wrzuc na druga strone zawsze (lecimy po historii)
+			  	//$LAST_SYNCED=$this->db->get_last_sync_date($table);
+			  	$LAST_SYNCED_loc=$this->db->get_last_sync_date($table,$this->remote_db_id,$this->local_db_id);
+			  	$LAST_SYNCED_rem=$this->gdb->get_last_sync_date($table,$this->local_db_id,$this->remote_db_id);
+
+
+			  	self::get_current_time();
+			  	$loc_key=$this->db->show_index_value($table);
+			  	$rem_key=$this->gdb->show_index_value($table);
+			  	DEBUG_S(-3,'Last synced for '.$table,array($LAST_SYNCED_loc,$LAST_SYNCED_rem),__FILE__,__FUNCTION__,__LINE__);
+			  	$ids_rem=$this->gdb->get_by_data_column($table,'A_RECORD_UPDATE_DATE',$LAST_SYNCED_rem,$this->currtime_rem,$loc_key);
+			  	while($h=$this->gdb->fetch($ids_rem)) {
+				  	$this->ids_rem[$h->$rem_key]=$h;
+			  	}
+			  	$ids_loc=$this->db->get_by_data_column($table,'A_RECORD_UPDATE_DATE',$LAST_SYNCED_loc,$this->currtime_loc,$rem_key);
+			  	while($h=$this->db->fetch($ids_loc)) {
+				  	$this->ids_loc[$h->$loc_key]=$h;
+			  	}
+			 // 	DEBUG_S(-3,'this->ids_rem',$this->ids_rem,__FILE__,__FUNCTION__,__LINE__);
+			 // 	DEBUG_S(-3,'this->ids_loc',$this->ids_loc,__FILE__,__FUNCTION__,__LINE__);
+			  	DEBUG_S(-3,'structure',$this->db->describe_table_value($table),__FILE__,__FUNCTION__,__LINE__);
+
+
+			  //	$ds_loc = new Data_Source($this->local_db_id);
+			  //	$ds_loc->setTable($table);
+
+			  	//1) insert new data (data without remote primary key) and vice_versa
+			  
+			  	DEBUG_S(-3,'Jade z REM do LOCAL',null,__FILE__,__FUNCTION__,__LINE__);
+			  	foreach($this->ids_rem as $ind=>$val) {
+				  	if(empty($val->$loc_key)) {
+				  		//nowe rekordy ze zdalnego 
+				  	//	echo "<br> Adding to ".$table." ".print_r($val);
+				  		//DEBUG_S(-3,'Dodajemy to tabeli',$val,__FILE__,__FUNCTION__,__LINE__);
+					  	$last_id=$this->db->ADD_NEW_OBJ($table,$this->db->MAKE_DB_OBJ($table,$val)) or die('Blad dodania: '.$sql);
+						  	$sql='update "'.$table.'" set "'.$loc_key.'"=\''.$last_id.'\' where "'.$rem_key.'"='.$val->$rem_key;
+						  	DEBUG_S(-3,'notified new obj to rem',$sql,__FILE__,__FUNCTION__,__LINE__);
+						  	$this->gdb->query($sql);
+					  //	echo "<br>";
+					  	
+					  	
+				  	} else {
+				  		if(empty($this->ids_loc[$val->$loc_key]))  {
+				  			DEBUG_S(-3,"Brak klucza w loc ".$loc_key." (".$val->$loc_key.") - robie UPDATE w LOC ",$val,__FILE__,__FUNCTION__,__LINE__);
+				  			$res=$this->db->UPDATE_OBJ($table,$this->db->MAKE_DB_OBJ($table,$val)) ;
+				  			DEBUG_S(-3,'Res od aktualizacji',$res,__FILE__,__FUNCTION__,__LINE__);
+
+				  		}
+					  	
+				  	}
+			  	}
+			  	DEBUG_S(-3,'Jade z LOCAL do REM',null,__FILE__,__FUNCTION__,__LINE__);
+			  	//insert lokalnych nowych do zdalnego
+			  	foreach($this->ids_loc as $ind=>$val) {
+				  	if(!($val->$rem_key)) {
+				  		//nowe rekordy ze zdalnego 
+				  		$val_loc_key=$val->$loc_key;
+				  		//echo "<br> Adding to ".$table." local key of(".$loc_key.") is ".$val->$loc_key." " .print_r($val);
+					  	//DEBUG_S(-3,'Dodajemy to tabeli',$val,__FILE__,__FUNCTION__,__LINE__);
+					  	$last_id=$this->gdb->ADD_NEW_OBJ($table,$this->gdb->MAKE_DB_OBJ($table,$val),'dieonerror');
+						  	$sql='update `'.$table.'` set `'.$rem_key.'`=\''.$last_id.'\' where `'.$loc_key.'`='.$val_loc_key;
+						  	DEBUG_S(-3,'notified new obj to rem',array($sql,$last_id),__FILE__,__FUNCTION__,__LINE__);
+						  	$this->db->query($sql);
+					  //	echo "<br>";
+					  	
+					  	
+				  	} else {
+				  		if(empty($this->ids_rem[$val->$rem_key]))  {
+				  			DEBUG_S(-3,"Brak klucza w rem ".$rem_key." (".$val->$rem_key.") - robie UPDATE w REM",array($val,$this->gdb->MAKE_DB_OBJ($table,$val)),__FILE__,__FUNCTION__,__LINE__);
+				  			
+				  			$res=$this->gdb->UPDATE_OBJ($table,$this->gdb->MAKE_DB_OBJ($table,$val)) ;
+				  			DEBUG_S(-3,'Res od aktualizacji',$res,__FILE__,__FUNCTION__,__LINE__);
+
+				  		}					  	
+					  	
+				  	}
+			  	}
+			  	
+			  	
+			  	//self::set_last_sync_date($table,$this->currtime_loc);
+			  	$this->db->set_last_sync_date($table,$this->currtime_loc,$this->remote_db_id,$this->local_db_id);
+			  	$this->gdb->set_last_sync_date($table,$this->currtime_rem,$this->local_db_id,$this->remote_db_id);
+
+
+			}
+
+	}
+	
+	
+	
+}
+
+
+
+$sd = new SYNC_DATABASES;
+$sd->set_local_db_id(36);
+$sd->set_remote_db_id(13102);
+$sd->set_table_to_sync('Rozdzielcza_PionyKablowe');
+$sd->set_table_to_sync('Rozdzielcza_Mikrokanalizacja_do_klienta');
+$sd->set_table_to_sync('BUILDINGS');
+
+$sd->set_table_to_sync('IN7_MK_BAZA_DYSTRYBUCJI');
+$sd->set_table_to_sync('TELBOXES');
+$sd->set_table_to_sync('Rozdzielcza_rurociag_wsg84');
+$sd->set_table_to_sync('MK_Rewiry');
+
+//$sd->sync_struct();
+$sd->sync_data();
+
+
+die('Temporary die at line 19 call bindera');
+
+
+

+ 31 - 15
SE/superedit-SYNC_GIS_GEOPORTAL_IMPORT.php

@@ -11,11 +11,23 @@ include_once('se-lib/UsersHelper.php');
 function get_data($url) {
 	$ch = curl_init();
 	$timeout = 5;
+	
+	$User_Agent = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31';
+
+	$request_headers = array();
+	$request_headers[] = 'User-Agent: '. $User_Agent;
+	$request_headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
+	curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
+	
 	curl_setopt($ch, CURLOPT_URL, $url);
 	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 	$data = curl_exec($ch);
+	$error=curl_error ( $ch);
+	
+	echo $error;
 	curl_close($ch);
+	
 	return $data;
 }
 
@@ -56,12 +68,12 @@ $step_x=0.01;
 
 
 //dla gdanska
-$bbox_y0=54.29; //dol
-$bbox_x0=18.43; //lewo
-$bbox_y1=54.50; //gora
-$bbox_x1=19.00;//prawo
-$step_y=0.05;
-$step_x=0.05;
+$bbox_x0=23.32; //lewo
+$bbox_y0=50.39; //dol
+$bbox_x1=23.43;//prawo
+$bbox_y1=50.52; //gora
+$step_y=0.01;
+$step_x=0.01;
 
 
 /*
@@ -141,7 +153,7 @@ echo "<br> bede jechac ".$url_get;
 			
 			//var_dump($result);
 			
-			//DEBUG_S(-3,'x',array($url_get,$xml_,$xml,$element,$result,$ind,$count,$exp),__FILE__,__FUNCTION__,__LINE__);
+			DEBUG_S(-3,'x',array($url_get,$xml_,$xml,$element,$result,$ind,$count,$exp),__FILE__,__FUNCTION__,__LINE__);
 			
 			
 			
@@ -164,15 +176,19 @@ echo "<br> bede jechac ".$url_get;
 				$WKT=implode(",", $WKT_);
 				//print_r($WKT);
 				
-				$sql='delete from  "'.$tbl_dest.'" where "REM_SYSTEM"=\''.$url.'\' and "REM_ID"=\''.$exp_['ID'].'\'';
-				$gdb->query($sql);
-			
+				//$sql='delete from  "'.$tbl_dest.'" where "REM_SYSTEM"=\''.$url.'\' and "REM_ID"=\''.$exp_['ID'].'\'';
+				//$gdb->query($sql);
+				//nie kasujemy istniejaych obiektow - TODO 
+				$sql='select "REM_ID" from "'.$tbl_dest.'" where "REM_SYSTEM"=\''.$url.'\' and "REM_ID"=\''.$exp_['ID'].'\' ';
+				$res=$gdb->query($sql);
+				if($gdb->count($res)<1) {
 				
-				$sql='insert  into "'.$tbl_dest.'" ( "REM_SYSTEM","REM_ID","IDENTYFIKATOR","POWIERZCHNIA","posList","A_RECORD_CREATE_DATE" ) values 
-				(\''.$url.'\',\''.$exp_['ID'].'\',\''.$exp_['IDENTYFIKATOR'].'\' , \''.$exp_['POWIERZCHNIA'].'\',ST_GeomFromEWKT(\'SRID=4326;POLYGON(('.$WKT.'))\') ,now() ) 
-				';
-				echo "\n<br>".$sql;	
-				$gdb->query($sql);
+					$sql='insert  into "'.$tbl_dest.'" ( "REM_SYSTEM","REM_ID","IDENTYFIKATOR","POWIERZCHNIA","posList","A_RECORD_CREATE_DATE" ) values 
+					(\''.$url.'\',\''.$exp_['ID'].'\',\''.$exp_['IDENTYFIKATOR'].'\' , \''.$exp_['POWIERZCHNIA'].'\',ST_GeomFromEWKT(\'SRID=4326;POLYGON(('.$WKT.'))\') ,now() ) 
+					';
+					echo "\n<br>".$sql;	
+					$gdb->query($sql);
+				} else echo " | Obj ".$exp_['ID']." already exists in DB";
 			}
 			
 			unset($exp);

+ 433 - 47
SE/superedit-SYNC_GIS_TABLES.php

@@ -20,6 +20,8 @@ function SYNC_GIS_TABLES() {
 	
 	
 	
+	
+	
 	DEBUG_S(-3,'db',$db);
 		DEBUG_S(-3,'gis',$gdb);
 		
@@ -56,13 +58,42 @@ function SYNC_GIS_TABLES() {
 			
 			echo "<br> aktualziacja relacji obiektow do paszportyzacji optycznej";
 			
-		 function gis_opto_relations($table_to_set,$field_index,$field_to_set,$table_from,$field_from,$ST_Relate='******F**',$filter_sql='') {
+			
+		 function gis_opto_intersect($table_to_set,$field_index,$field_to_set,$table_from,$field_from,$filter_table_from='') {
+			global $gdb;
+
+			 $sql='drop table if exists gis_opto_relations;
+			 	-- gis_opto_intersect
+			 	select t1."'.$field_index.'" as "field_index", t2."'.$field_from.'" as "field_from"
+			 	, 1
+			 	as if_true , t2.*
+			 	into temporary table gis_opto_relations 
+			 	FROM "'.$table_to_set.'" as t1 
+			 	INNER JOIN "'.$table_from.'"  as t2 ON ST_Intersects(t1.the_geom, t2.the_geom) '.$filter_table_from.' ;
+			 	
+			 	 CREATE  INDEX myfield ON gis_opto_relations ("field_from");
+			 	
+			 	update "'.$table_to_set.'"  t1
+			 	set "'.$field_to_set.'"=t2.field_from 
+			 	
+			 	from  gis_opto_relations t2
+			 	where   t1."'.$field_index.'"=t2.field_index and t2.if_true=1
+			 	 '.$filter_sql.'
+			 	;
+			 	
+			    drop table gis_opto_relations;';
+			 DEBUG_S(-3,"Zapytanie sql aktualizujace ".$table_to_set,$sql,__FILE__,__FUNCTION__,__LINE__);
+			 $gdb->query($sql);
+
+		 }
+			
+		 function gis_opto_relations($table_to_set,$field_index,$field_to_set,$table_from,$field_from,$ST_Relate='******F**',$filter_sql='',$filter_table_from=' on 1=1 ') {
 			 global $gdb;
 			 $sql='
-			 
+			 	-- gis_opto_relations
 			 	drop table if exists gis_opto_relations;
 
-			 	select t1.'.$field_index.' as "field_index", t2."'.$field_from.'" as "field_from"
+			 	select t1."'.$field_index.'" as "field_index", t2."'.$field_from.'" as "field_from"
 			 	
 			 	, case ST_Relate(t1."the_geom",t2."the_geom",\''.$ST_Relate.'\') when true then
 			 	1
@@ -70,7 +101,7 @@ function SYNC_GIS_TABLES() {
 			 	as if_true , t2.*
 			 	into temporary table gis_opto_relations 
 			 	FROM "'.$table_to_set.'" as t1 
-			 	CROSS JOIN "'.$table_from.'"  as t2;
+			 	LEFT JOIN "'.$table_from.'"  as t2 '.$filter_table_from.' ;
 			 	
 			 	 CREATE  INDEX myfield ON gis_opto_relations (field_from);
 			 	
@@ -94,14 +125,36 @@ function SYNC_GIS_TABLES() {
 		 
 		 
 		 
-		 function gis_opto_calculations($table_to_set,$field_index,$field_to_set,$table_from,$field_from_geom,$ST_Relate='******F**',$filter_sql='') {
+		 function gis_opto_calculations($table_to_set,$field_index,$field_to_set,$table_from,$field_from_geom,$ST_Relate='******F**',$filter_sql='',$price_column='',$lenght_column='') {
 			 			 global $gdb;
+			 			 $sql_select='';$sql_price='';
+			 			 if(is_array($field_index)) {
+				 			 $field_index_t1=$field_index[0];
+				 			 $field_index_t2=$field_index[1];
+			 			 } else {
+				 			 $field_index_t1=$field_index;
+				 			 $field_index_t2=$field_index;
+			 			 }
+			 			 
+			 			 if(strlen($price_column)>0) { $sql_select=', t2."'.$price_column.'"';
+				 			 						   $sql_price='*t2."'.$price_column.'"';
+			 			 }
+			 			// if(!empty($filter_sql)) {
+				 		//	 $ST_Relate=" 1=1 ";
+				 		//	 $ST_Intersects=" 1=1 ";
+			 			// } else {
+				 			 $ST_Relate='ST_Relate(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'",\''.$ST_Relate.'\')';
+				 			 $ST_Intersects='ST_Intersects(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'")';
+			 			// }
+
+
 
 			 $sql='
+			 -- gis_opto_calculations
 			 drop table if exists "'.$table_from.'_AGR" ;
-			 select t1.'.$field_index.'  , t2.'.$field_index.' as gid_t2
-				, ST_Intersects(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'")
-				, case ST_Relate(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'",\''.$ST_Relate.'\') when true then
+			 select t1."'.$field_index_t1.'" as field_index '.$sql_select.'
+				, '.$ST_Intersects.'
+				, case '.$ST_Relate.' '.$filter_sql.' when true then
 				 ST_Length_Spheroid(t2."'.$field_from_geom.'",\'SPHEROID["WGS 84",6378137,298.257223563]\')
 				 else \'0\' end
 				as length
@@ -109,28 +162,50 @@ function SYNC_GIS_TABLES() {
 				 FROM "'.$table_to_set.'" as t1 
 				CROSS JOIN "'.$table_from.'"  as t2
 				;
-				
+				CREATE INDEX ON "'.$table_from.'_AGR" ("field_index");
+
 				update  "'.$table_to_set.'"  t1
 				set "'.$field_to_set.'"=(
 				select 
-				 round(sum(t2.length)) 
-				 from "'.$table_from.'_AGR" as t2 where t2.'.$field_index.'=t1.'.$field_index.'
+				 round(sum(t2.length'.$sql_price.')) 
+				 from "'.$table_from.'_AGR" as t2 where t2."field_index"=t1."'.$field_index_t1.'"
 				)
 				
 				;';
 				
-				echo "<br>sql to :  ".$sql;
+				if(!empty($lenght_column)) { //wylicamy dlugosc
+					
+					
+					
+				}
+				
+
+				
+				DEBUG_S(-3,'Zapyt gis_opt '.$table_to_set,$sql,__FILE__,__FUNCTION__,__LINE__);
+				flush();
 				$gdb->query($sql);
 		 }
 		 
-		 function gis_opto_calculations_count($table_to_set,$field_index,$field_to_set,$table_from,$field_from_geom,$ST_Relate='******F**',$filter_sql='') {
+		 function gis_opto_calculations_count($table_to_set,$field_index,$field_to_set,$table_from,$field_from_geom,$ST_Relate='******F**',$filter_sql='',$price_column='') {
 			 			 global $gdb;
+			 			 $sql_select='';$sql_price='';
+			 			 if(strlen($price_column)>0) { $sql_select=', t2."'.$price_column.'"';
+				 			 						   $sql_price='*t2."'.$price_column.'"';
+			 			 }
+			 			 if(is_array($field_index)) {
+				 			 $field_index_t1=$field_index[0];
+				 			 $field_index_t2=$field_index[1];
+			 			 } else {
+				 			 $field_index_t1=$field_index;
+				 			 $field_index_t2=$field_index;
+			 			 }
 
 			 $sql='
+			 -- gis_opto_calculations_count
 			 drop table if exists "'.$table_from.'_AGR" ;
-			 select t1.'.$field_index.' 
+			 select t1."'.$field_index_t1.'" as field_index '.$sql_select.'
 				, ST_Intersects(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'")
-				, case ST_Relate(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'",\''.$ST_Relate.'\') when true then
+				, case ST_Relate(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'",\''.$ST_Relate.'\') '.$filter_sql.' when true then
 				 1
 				 else 0 end
 				as length
@@ -139,50 +214,368 @@ function SYNC_GIS_TABLES() {
 				CROSS JOIN "'.$table_from.'"  as t2
 				;
 				
+				CREATE INDEX ON "'.$table_from.'_AGR" ("field_index");
+
+				update  "'.$table_to_set.'"  t1
+				set "'.$field_to_set.'"=(
+				select 
+				 sum(t2.length'.$sql_price.')
+				 from "'.$table_from.'_AGR" as t2 where t2."field_index"=t1."'.$field_index_t1.'"
+				)
+				
+				;';
+				
+				DEBUG_S(-3,'sql',array($sql,debug_backtrace()),__FILE__,__FUNCTION__,__LINE__);
+				
+				$gdb->query($sql);
+		 }
+		 
+		 
+		 	 function gis_opto_calculations_sum($table_to_set,$field_index,$field_to_set,$table_from,$field_from_geom,$ST_Relate='******F**',$filter_sql='',$field_to_sum) {
+			 			 global $gdb;
+			 			 if(is_array($field_index)) {
+				 			 $field_index_t1=$field_index[0];
+				 			 $field_index_t2=$field_index[1];
+			 			 } else {
+				 			 $field_index_t1=$field_index;
+				 			 $field_index_t2=$field_index;
+			 			 }
+
+			 $sql='
+			 -- gis_opto_calculations_sum
+			 drop table if exists "'.$table_from.'_AGR" ;
+			 select t1."'.$field_index_t1.'" as field_index
+				, ST_Intersects(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'")
+				, case ST_Relate(t1."'.$field_from_geom.'",t2."'.$field_from_geom.'",\''.$ST_Relate.'\') '.$filter_sql.' when true then
+				 t2."'.$field_to_sum.'"
+				 else 0 end
+				as length
+				 into  temporary table "'.$table_from.'_AGR" 
+				 FROM "'.$table_to_set.'" as t1 
+				CROSS JOIN "'.$table_from.'"  as t2
+				;
+				
+				CREATE INDEX ON "'.$table_from.'_AGR" ("field_index");
+
 				
 				update  "'.$table_to_set.'"  t1
 				set "'.$field_to_set.'"=(
 				select 
 				 sum(t2.length)
-				 from "'.$table_from.'_AGR" as t2 where t2.'.$field_index.'=t1.'.$field_index.'
+				 from "'.$table_from.'_AGR" as t2 where t2."field_index"=t1."'.$field_index_t1.'"
 				)
 				
 				;';
 				
-				echo "<br>sql to :  ".$sql;
+				DEBUG_S(-3,'sql calc_sum '.$table_to_set,$sql,__FILE__,__FUNCTION__,__LINE__);
 				$gdb->query($sql);
 		 }
 		 
-		gis_opto_calculations('Inwestycje_Planowane','gid','Agr_metrow_mikrorurek_5szt','Rozdzielcza_Pakiet5MikrorurekMagistrala_WSG84','the_geom','T********');
-		gis_opto_calculations('Inwestycje_Planowane','gid','Agr_metrow_mikrorurek','Rozdzielcza_Mikrokanalizacja_do_klienta','the_geom','T********');
-		gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_wykopu','Rozdzielcza_Wykop_przedmiar_na_mikrorurki','the_geom','******F**');
-		gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_przeciskow','Rozdzielcza_Przeciski_110mm','the_geom','******F**');
-		gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_zabrukow','Rozdzielcza_Zabruki','the_geom','******F**');
-		gis_opto_calculations_count('Inwestycje_Planowane','gid','Agr_ilosc_domow','MK_Mieszkania','the_geom','******F**');
-
-	    $sql_cena='update "Inwestycje_Planowane" set	"Agr_metrow_mikrorurek_5szt"=0 where "Agr_metrow_mikrorurek_5szt" is null;'; 
- 
+		 
+		 		function gis_opto_calculations_set_lenght($table_to_set,$field_to_set) {
+			 		global $gdb;
+			 		$sql='
+			 		-- gis_opto_calculations_set_lenght
+			 		update "'.$table_to_set.'" set "'.$field_to_set.'"=round(ST_Length_Spheroid("the_geom",\'SPHEROID["WGS 84",6378137,298.257223563]\')) ';
+			 		DEBUG_S(-3,'sql set_lenght '.$table_to_set,$sql,__FILE__,__FUNCTION__,__LINE__);
+			 		$gdb->query($sql);
+		 		}
+		 
+		 		function USERS2_MARKETING_OVERWIEV_to_MK_Budynki(){
+			 			global $db,$gdb;
+			 			  $sql='select t1.* ,  t2.A_STATUS as BUILDING_STATUS , t2.geoportal_gml_punkty_adr_gml_id  from USERS2_MARKETING_OVERWIEV  t1 inner join
+			 			  	    BUILDINGS as t2 on t2.S_ADDRESS_STREET=t1.T_TELBOX_BUILDING_IN where t2.geoportal_gml_punkty_adr_gml_id!=\'\' or S_ADDRESS_STREET!=\'\'';
+			 			  $res=$db->query($sql);
+			 			 
+			 			 echo "<br> To update USERS2_MARKETING_OVERWIEV use ?FUNCTION_INIT=STATYSTYKA_TABELE ".$sql;
+			 			 
+			 			 $row=0;
+			 			 
+			 			  while($h=$db->fetch($res)) {
+				 			  if($row==0) { //add columns
+					 			  foreach($h as $col=>$val) {
+						 			 $sql="SELECT column_name FROM information_schema.columns WHERE table_name='MK_Budynki' and column_name='".$col."'";
+						 			 $res2=$gdb->query($sql);
+						 			 if($gdb->count($res2)==0) {
+						 			 
+						 			  $sql='alter table "MK_Budynki" add "'.$col.'" char(255) not null default \'\' '; echo "<br> ".$sql; flush();
+						 			  $gdb->query($sql);
+						 			  } else echo " Field ".$col." exists. ";
+					 			  }
+				 			  }
+				 			  $set=array();
+				 			  foreach($h as $col=>$val) {
+					 			  $set[]="\"".$col."\"='".$val."'";
+				 			  }
+				 			  
+				 			  $sql='update "MK_Budynki" set '.implode(',', $set).' where ( geoportal_gml_punkty_adr_gml_id=\''.$h->geoportal_gml_punkty_adr_gml_id.'\' and geoportal_gml_punkty_adr_gml_id!=\'\' ) or ( "T_TELBOX_BUILDING_IN"=\''.$h->T_TELBOX_BUILDING_IN.'\' and (  geoportal_gml_punkty_adr_gml_id=\'\' or geoportal_gml_punkty_adr_gml_id is null ) )';
+				 			  echo "<br> ".$sql;
+				 			  $gdb->query($sql);
+
+				 			  $row++;
+				 			  
+			 			  }
+
+			 		
+		 		}
+		 
+		 
+		 		 	function PROCESY5_to_GIS($p5_table,$p5_key,$gis_table,$gis_key,$p5_what_extra='',$p5_join='',$p5_limit=''){
+			 			global $db,$gdb;
+			 			
+			 			//! pierw trigger
+			 			$trigger_psql_do_timestamp="CREATE OR REPLACE FUNCTION update_A_RECORD_UPDATE_DATE_column()
+								RETURNS TRIGGER AS $$
+								BEGIN
+								NEW.\"A_RECORD_UPDATE_DATE\" = now(); 
+								RETURN NEW;
+								END;
+								$$ language 'plpgsql';";
+								$gdb->query($sql);
+
+			 			  $sql='select t1.* '.$p5_what.' from '.$p5_table.' as t1 
+			 			  where t1.'.$p5_key.'!=\'\' or t1.'.$p5_key.' is not null ';
+			 			  $res=$db->query($sql);
+			 			 
+			 			 echo "<br> f.PROCESY5_to_GIS use  ".$sql;
+			 			 
+			 			 $row=0;
+			 			 
+			 			  while($h=$db->fetch($res)) {
+				 			  if($row==0) { //add columns
+					 			  foreach($h as $col=>$val) {
+						 			 $sql="SELECT column_name FROM information_schema.columns WHERE table_name='".$gis_table."' and column_name='".$col."'";
+						 			 $res2=$gdb->query($sql);
+						 			 if($gdb->count($res2)==0) {
+						 			 
+						 			  $sql='alter table "'.$gis_table.'" add "'.$col.'" char(255) not null default \'\' '; echo "<br> ".$sql; flush();
+						 			  $gdb->query($sql);
+						 			  
+						 			  if($col=='A_RECORD_UPDATE_DATE') {
+							 			  $gdb->query("CREATE TRIGGER update_A_RECORD_UPDATE_DATE BEFORE UPDATE
+							 			 			 ON \"".$gis_table."\" FOR EACH ROW EXECUTE PROCEDURE 
+							 			 			 update_A_RECORD_UPDATE_DATE_column();");
+						 			  }
+						 			  
+						 			  
+						 			  } else echo " Field ".$col." exists. ";
+					 			  }
+				 			  }
+				 			  $set=array();
+				 			  $insert=array();
+				 			  foreach($h as $col=>$val) {
+					 			  if($col=='the_geom') continue; //todo GEOM tez kopiowac trzeba ale inaczej
+					 			  if($col==$gis_key) continue;
+					 			  $set[]="\"".$col."\"='".$gdb->_($val)."'";
+					 			  $insert['row'][]='"'.$col.'"';
+					 			  $insert['vals'][]="'".$gdb->_($val)."'";
+				 			  }
+				 			  
+				 			  $sql='update "'.$gis_table.'" set '.implode(',', $set).' where ( "'.$gis_key.'"=\''.$h->$p5_key.'\' and "'.$gis_key.'"!=\'\'  )
+				 			  ';
+				 			 //			 			   --  and "A_RECORD_UPDATE_DATE"<\''.$h->A_RECORD_UPDATE_DATE.'\''; //Jak poprawi Piotr aktualizacje GIS to bedzie OK. 
+				 			//  echo "<br> ".$sql;
+
+				 			  $gdb->query($sql);
+
+				 			  if(!empty($h->the_geom)) { //new record dodajemy jak jest oznaczona geometria
+				 			  	$sql='insert into "'.$his_table.'" ( '.implode(',', $insert['row']).' values ( '.implode(',',$insert['vals']).' )';
+					 			// echo "<br> ".$sql;	  
+				 			  }
+
+				 			  $row++;
+				 			  
+			 			  }
+
+
+			 			  { //! teraz aktualizujemy po timestampie w prawo
+				 			  
+	  
+			 			  }
+			 			  
+			 		
+		 		}
+		 
+		 function POSTGIS_to_MYSQL_Tables($local_table_mysql,$local_key,$remote_table_postgis,$remote_key){
+			 	global $db,$gdb;
+			 		$sql='select "'.$remote_key.'", ST_AsText(the_geom) as the_geom from "'.$remote_table_postgis.'" where "'.$remote_key.'"!=\'\' and "'.$remote_key.'" is not null and the_geom!=\'\' and the_geom is not null ';
+			 		$res=$gdb->query($sql);
+			 		while($h=$gdb->fetch($res)) {
+				 		$sql2="update `".$local_table_mysql."` set `the_geom`=GeomFromText('".$h->the_geom."') where `".$local_key."`='".trim($h->$remote_key)."' and `".$local_key."`!='' and `".$local_key."` is not null
+				 		  and ( the_geom='' or the_geom is null )";
+				 		echo "<br> ".$sql2;
+				 		$db->query($sql2) or die('Problem with sql 228: '.$sql);
+			 		}
+  
+		 }
+
+		 
+		 		
+		
+		
+		
+		 gis_opto_calculations_set_lenght('Rozdzielcza_rurociag_wsg84','dlugosc');
+		 gis_opto_calculations_set_lenght('Rozdzielcza_Kabel_Swiatlowodowy_wsg84','Dlugosc');
+
+
+		
+		 gis_opto_intersect('geoportal_gml_punkty_adr','id_0','Mk_Rewir_set','MK_Rewiry','gid');
+		 gis_opto_intersect('Rozdzielcza_rurociag_wsg84','gid','Mk_Rewir_set','MK_Rewiry','gid');
+
+
+		 gis_opto_intersect('MK_Budynki','gid','geoportal_gml_punkty_adr_gml_id','geoportal_gml_punkty_adr','gml_id',' and t2."Mk_Rewir_set">0 ');
+
+//	gis_opto_intersect('Rozdzielcza_Wykop_przedmiar_na_mikrorurki','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+		 gis_opto_intersect('Rozdzielcza_Wykop_przedmiar_na_mikrorurki','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+
+//	gis_opto_intersect('Rozdzielcza_Mikrokanalizacja_do_klienta','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+		 gis_opto_intersect('Rozdzielcza_Mikrokanalizacja_do_klienta','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+		
+//	 gis_opto_intersect('Rozdzielcza_Pakiet5MikrorurekMagistrala_WSG84','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	   gis_opto_intersect('Rozdzielcza_Pakiet5MikrorurekMagistrala_WSG84','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+//	 gis_opto_intersect('Rozdzielcza_Przeciski_110mm','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	   gis_opto_intersect('Rozdzielcza_Przeciski_110mm','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+
+//	gis_opto_intersect('Rozdzielcza_Zabruki','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	   gis_opto_intersect('Rozdzielcza_Zabruki','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+
+//	gis_opto_intersect('Rozdzielcza_koszty_dodatkowe_wsg84','id_0','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	   gis_opto_intersect('Rozdzielcza_koszty_dodatkowe_wsg84','id_0','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+
+//	gis_opto_intersect('Rozdzielcza_rurociag_wsg84','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	   gis_opto_intersect('Rozdzielcza_rurociag_wsg84','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID','  and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+
+//	gis_opto_intersect('Rozdzielcza_wezly','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	   gis_opto_intersect('Rozdzielcza_wezly','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+
+//	gis_opto_intersect('Rozdzielcza_Kabel_Swiatlowodowy_wsg84','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	  gis_opto_intersect('Rozdzielcza_Kabel_Swiatlowodowy_wsg84','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+
+//	gis_opto_intersect('MK_Budynki','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	  gis_opto_intersect('MK_Budynki','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+//	gis_opto_intersect('MK_Mieszkania','gid','ID_PROJECT','Inwestycje_Planowane','ID_PROJECT',' and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+	  gis_opto_intersect('MK_Mieszkania','gid','ID_PROJECT','IN7_MK_BAZA_DYSTRYBUCJI','ID',' and t2."ID"!=0 and (  t1."ID_PROJECT"=\'0\' or t1."ID_PROJECT"=\'\' or t1."ID_PROJECT" is  null ) ');
+
+//		 gis_opto_intersect('MK_Budynki','gid','geoportal_gml_punkty_adr_gml_id','geoportal_gml_punkty_adr','gml_id','');
+	
+		 //gis_opto_relations('MK_Budynki','gid','geoportal_gml_punkty_adr_gml_id','geoportal_gml_punkty_adr','gml_id','T********',''," on t2.\"Mk_Rewir_set\" > 0 ");
+		
+
+		// die('celowe 228');
+
+
+		DEBUG_S(-3,'Agr rurociag',null,__FILE__,__FUNCTION__,__LINE__);
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_Rozdzielcza_rurociag_wsg84','Rozdzielcza_rurociag_wsg84','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+		gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI','ID','Agr_Rozdzielcza_rurociag_wsg84','Rozdzielcza_rurociag_wsg84','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0 ');
+//	die('431');
+
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_Rozdzielcza_rurociag_wsg84_koszt','Rozdzielcza_rurociag_wsg84','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ','cena_jedn');
+   		gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI','ID','Agr_Rozdzielcza_rurociag_wsg84_koszt','Rozdzielcza_rurociag_wsg84','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0 ','cena_jedn');
+
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_Rozdzielcza_Kabel_Swiatlowodowy_wsg84','Rozdzielcza_Kabel_Swiatlowodowy_wsg84','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+	    gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_Rozdzielcza_Kabel_Swiatlowodowy_wsg84','Rozdzielcza_Kabel_Swiatlowodowy_wsg84','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0');
+
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_Rozdzielcza_Kabel_Swiatlowodowy_wsg84_koszt','Rozdzielcza_Kabel_Swiatlowodowy_wsg84','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ','koszt_jedn');
+		gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_Rozdzielcza_Kabel_Swiatlowodowy_wsg84_koszt','Rozdzielcza_Kabel_Swiatlowodowy_wsg84','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0','koszt_jedn');
+	
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_metrow_mikrorurek_5szt','Rozdzielcza_Pakiet5MikrorurekMagistrala_WSG84','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+	    gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_metrow_mikrorurek_5szt','Rozdzielcza_Pakiet5MikrorurekMagistrala_WSG84','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0');
+DEBUG_S(-3,'CheckPoint',null,__FILE__,__FUNCTION__,__LINE__);
+
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_metrow_mikrorurek','Rozdzielcza_Mikrokanalizacja_do_klienta','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+	    gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_metrow_mikrorurek','Rozdzielcza_Mikrokanalizacja_do_klienta','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0');
+
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_wykopu','Rozdzielcza_Wykop_przedmiar_na_mikrorurki','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+		gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_ilosc_wykopu','Rozdzielcza_Wykop_przedmiar_na_mikrorurki','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0');
+DEBUG_S(-3,'CheckPoint Wykop prev',null,__FILE__,__FUNCTION__,__LINE__);
+	
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_przeciskow','Rozdzielcza_Przeciski_110mm','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+		gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_ilosc_przeciskow','Rozdzielcza_Przeciski_110mm','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0');
+
+//	gis_opto_calculations('Inwestycje_Planowane','gid','Agr_ilosc_zabrukow','Rozdzielcza_Zabruki','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+		gis_opto_calculations('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_ilosc_zabrukow','Rozdzielcza_Zabruki','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0');
+DEBUG_S(-3,'CheckPoint',null,__FILE__,__FUNCTION__,__LINE__);
+//	gis_opto_calculations_count('Inwestycje_Planowane','gid','Agr_ilosc_domow','MK_Mieszkania','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+		gis_opto_calculations_count('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_ilosc_domow','MK_Mieszkania','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0');
+
+//	gis_opto_calculations_count('Inwestycje_Planowane','gid','Agr_ilosc_wezlow','Rozdzielcza_wezly','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ');
+		gis_opto_calculations_count('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_ilosc_wezlow','Rozdzielcza_wezly','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0');
+
+//	gis_opto_calculations_count('Inwestycje_Planowane','gid','Agr_ilosc_wezlow_koszt','Rozdzielcza_wezly','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT" ','koszt_jedn');
+		gis_opto_calculations_count('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_ilosc_wezlow_koszt','Rozdzielcza_wezly','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0','koszt_jedn');
+	
+//	gis_opto_calculations_sum('Inwestycje_Planowane','gid','Agr_Rozdzielcza_koszty_dodatkowe_wsg84','Rozdzielcza_koszty_dodatkowe_wsg84','the_geom','******F**','and t1."ID_PROJECT"=t2."ID_PROJECT"','Wartosc_kosztu');
+		gis_opto_calculations_sum('IN7_MK_BAZA_DYSTRYBUCJI',array('ID','gid'),'Agr_Rozdzielcza_koszty_dodatkowe_wsg84','Rozdzielcza_koszty_dodatkowe_wsg84','the_geom','******F**','and t1."ID"::int=t2."ID_PROJECT"::int and t1."ID"!=0','Wartosc_kosztu');	
+		 
+		// PROCESY5_to_GIS('TELBOXES','ID','Rozdzielcza_lokalizacje','ID_TELBOXES');		
+		// PROCESY5_to_GIS('IN7_MK_BAZA_DYSTRYBUCJI','ID','Inwestycje_Planowane','ID_PROJECT');		
+	
+		// POSTGIS_to_MYSQL_Tables('BUILDINGS','geoportal_gml_punkty_adr_gml_id','MK_Budynki','geoportal_gml_punkty_adr_gml_id');
+		// POSTGIS_to_MYSQL_Tables('IN7_MK_BAZA_DYSTRYBUCJI','ID','Inwestycje_Planowane','ID_PROJECT');
+
+		// USERS2_MARKETING_OVERWIEV_to_MK_Budynki();
+	
+		
+
+//	  $sql_cena='update "Inwestycje_Planowane" set	"Agr_metrow_mikrorurek_5szt"=0 where "Agr_metrow_mikrorurek_5szt" is null;'; 
+//	  $gdb->query($sql_cena);
+
+	    $sql_cena='update "IN7_MK_BAZA_DYSTRYBUCJI" set	"Agr_metrow_mikrorurek_5szt"=0 where "Agr_metrow_mikrorurek_5szt" is null;'; 
 		$gdb->query($sql_cena);
-	    $sql_cena='update "Inwestycje_Planowane" set "Agr_ilosc_zabrukow"=0 where "Agr_ilosc_zabrukow" is null;';
+
+//	  $sql_cena='update "Inwestycje_Planowane" set "Agr_ilosc_zabrukow"=0 where "Agr_ilosc_zabrukow" is null;';
+//	  $gdb->query($sql_cena);
+
+		$sql_cena='update "IN7_MK_BAZA_DYSTRYBUCJI" set "Agr_ilosc_zabrukow"=0 where "Agr_ilosc_zabrukow" is null;';
 		$gdb->query($sql_cena);
 
-		$sql_cena='update "Inwestycje_Planowane" set 
-					koszt_wspolny="Agr_ilosc_wykopu"*10
-					+"Agr_metrow_mikrorurek"*3
-					+"Agr_metrow_mikrorurek_5szt"*7
-					+"Agr_ilosc_przeciskow"*80
-					+"Agr_ilosc_zabrukow"*40 
-					
+
+/*		$sql_cena='update "Inwestycje_Planowane" set 
+					koszt_wspolny="Agr_ilosc_wykopu"*"Agr_ilosc_wykopu_cena"
+					+"Agr_metrow_mikrorurek"*"Agr_metrow_mikrorurek_cena"
+					+"Agr_metrow_mikrorurek_5szt"*"Agr_metrow_mikrorurek_5szt_cena"
+					+"Agr_ilosc_przeciskow"*"Agr_ilosc_przeciskow_cena"
+					+"Agr_ilosc_zabrukow"*"Agr_ilosc_zabrukow_cena"
+					+"Agr_ilosc_wezlow_koszt"
+					+"Agr_Rozdzielcza_koszty_dodatkowe_wsg84"
+					+"Agr_Rozdzielcza_rurociag_wsg84_koszt"
+					+"Agr_Rozdzielcza_Kabel_Swiatlowodowy_wsg84_koszt"
+					+"Agr_ilosc_domow"*"Agr_MK_Mieszkania_cena_jedn"
 					;'; //"Agr_metrow_w_tpsa*3 +Agr_metrow_kabel*
-					//+ studnia +
+					////+ studnia1300 z pioh+ mufa 300 + spliter 200 = 1800 PLN za wezel 
+		 $gdb->query($sql_cena);
+*/
+		 $sql_cena='update "IN7_MK_BAZA_DYSTRYBUCJI" set 
+					koszt_wspolny="Agr_ilosc_wykopu"*"Agr_ilosc_wykopu_cena"
+					+"Agr_metrow_mikrorurek"*"Agr_metrow_mikrorurek_cena"
+					+"Agr_metrow_mikrorurek_5szt"*"Agr_metrow_mikrorurek_5szt_cena"
+					+"Agr_ilosc_przeciskow"*"Agr_ilosc_przeciskow_cena"
+					+"Agr_ilosc_zabrukow"*"Agr_ilosc_zabrukow_cena"
+					+"Agr_ilosc_wezlow_koszt"
+					+"Agr_Rozdzielcza_koszty_dodatkowe_wsg84"
+					+"Agr_Rozdzielcza_rurociag_wsg84_koszt"
+					+"Agr_Rozdzielcza_Kabel_Swiatlowodowy_wsg84_koszt"
+					+"Agr_ilosc_domow"*"Agr_MK_Mieszkania_cena_jedn"
+					;'; //"Agr_metrow_w_tpsa*3 +Agr_metrow_kabel*
+					////+ studnia1300 z pioh+ mufa 300 + spliter 200 = 1800 PLN za wezel 
+		  $gdb->query($sql_cena);
+
 		 
+//		 $sql_cena='update "Inwestycje_Planowane" set "Agr_MK_Mieszkania_koszt"=round("Agr_MK_Mieszkania_cena_jedn"*"Agr_ilosc_domow") where "Agr_ilosc_domow">0 '  ;
+//		 $gdb->query($sql_cena);
+//		 $sql_cena='update "Inwestycje_Planowane" set "koszt_na_dom"=round("koszt_wspolny"/"Agr_ilosc_domow") where "Agr_ilosc_domow">0 '  ;
+//		 $gdb->query($sql_cena);
+
+
+		 $sql_cena='update "IN7_MK_BAZA_DYSTRYBUCJI" set "Agr_MK_Mieszkania_koszt"=round("Agr_MK_Mieszkania_cena_jedn"*"Agr_ilosc_domow") where "Agr_ilosc_domow">0 '  ;
 		 $gdb->query($sql_cena);
-		$sql_cena='update "Inwestycje_Planowane" set "koszt_na_dom"=round("koszt_wspolny"/"Agr_ilosc_domow") where "Agr_ilosc_domow">0 '  ;
+		 $sql_cena='update "IN7_MK_BAZA_DYSTRYBUCJI" set "koszt_na_dom"=round("koszt_wspolny"/"Agr_ilosc_domow") where "Agr_ilosc_domow">0 '  ;
 		 $gdb->query($sql_cena);
 
-		 
-		 
-		 
+		 ///  	
+
+			 die("celowe zabicie zapytanie: ");
+	 
 		 
 		 gis_opto_relations('opt_tacki','id_0','id_przelac','opt_przelacznice_mufy','id_0','T********');
 		 gis_opto_relations('opt_spawy','id_0','id_tacka','opt_tacki','id_0','T********');
@@ -204,7 +597,6 @@ function SYNC_GIS_TABLES() {
 
 
 		
-		 die("zapytanie: ".$sql);
 //	add_pg_roles();
 	//dodanie wszystkich uzytkownikow z haslem
 //	public static function &get_users_list( $params = array(), $limit = 10, $limit_start = 0, $order_by = '', $order_dir = '' ) {
@@ -376,13 +768,7 @@ function SYNC_GIS_TABLES() {
 	
 	
 	
-		$trigger_psql_do_timestamp="CREATE OR REPLACE FUNCTION update_modified_column()
-			RETURNS TRIGGER AS $$
-			BEGIN
-			NEW.modified = now(); 
-			RETURN NEW;
-			END;";
-		
+				
 		
 		
 		

Неке датотеке нису приказане због велике количине промена