<?php 
//------------------------------------------
//escrito por Luis Henrique Weirich de Matos
//------------------------------------------


//------------------------------------------
//FUNCIONES
//------------------------------------------

/*function number_partition(float $number) {
  	$n1=round($number,4)*10000;
	$str_cm2=substr(strval($n1),-4); //cm2
	$resto= $datos[sup_legal] - round($number,4);
	//$n2=(round($number,0,PHP_ROUND_HALF_DOWN));
	//$cm2= round(($n1-$n2),4);
	
	$m2= (int)$number;
	if ((int)$m2/10000>=1){
		$m2= $m2-10000;//m2
	}
	$has=(int)($number/10000);
	//$str_cm2='';
	//$str_cm2= '0000'. strval($cm2);
			
	return $a + $b;
}*/



include_once (dirname(__FILE__)."/../../classesphp/sani_request.php");
$_GET = array_merge($_GET,$_POST);
//$mapexten = $_GET["mapexten"];
error_reporting(0);
session_name("i3GeoPHP");
if (isset($_GET["g_sid"]))
{session_id($_GET["g_sid"]);}
session_start();




//obtención de variables enviados por URL
$map_file 	= $_GET["mapfile"];
$id_exp 	= $_GET["id_exp"];
//$objectid 	= $_GET["objectid"];
$dpto 		= $_GET["dpto"];
$distrito 	= $_GET["distrito"];
$colonia 	= $_GET["colonia"];
$mz_agr 	= $_GET["mz_agr"];
$lote_agr 	= $_GET["lote_agr"];
$id_usuario	= $_GET["usr"];
$hoja	    = $_GET["hoja"];
$par_escala = $_GET["par_escala"];
$genera_per = $_GET["genera_per"];

//$mapfile = 'C:/ms4w/Apache/htdocs/i3geo/aplicmap/mopc_A4_plano_individual.map';
$par_escala = 1;
$genera_per = 'N';
$hoja	    = 1;

$hoja_plano = $hoja - 1;

$interface='googlemaps';



$postgis_mapa = $_SESSION["postgis_mapa"];

require_once (dirname(__FILE__)."/../../ms_configura.php");
//
//se as extens&otilde;es j&aacute; estiverem carregadas no PHP, vc pode comentar essa linha para que o processamento fique mais r&aacute;pido
//

include_once (dirname(__FILE__)."/../../classesphp/carrega_ext.php");
//
//carrega o phpmapscript
//
$exts = get_loaded_extensions();
//$exts = $_GET["mapexten"];

if (array_search( "MapScript", $exts) != TRUE)	
{
	if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
	{
		if(!@dl('php_mapscript_48.dll'))
		dl('php_mapscript.dll');
	}
	else
	{dl('php_mapscript.so');}
}

require(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
$nomes = nomeRandomico();

//echo('dubug objectid='.$objectid );

//
//substitui a string de conex&atilde;o com o banco em cada layer se for necess&aacute;rio
//
// carga map file 

//-------------------------------------------------------------------------------
//
//CREAR MAPA PRINCIPAL: Crear el Objeto Mapa Principal 
//
//-------------------------------------------------------------------------------


$map = ms_newMapObj($map_file);
$temp = str_replace(".map","xxx.map",$map_file);
$map->save($temp);
$map = ms_newMapObj($temp);
restauraCon($temp,$postgis_mapa);
if($map->getmetadata("interface") == "googlemaps"){
	$proj4 = pegaProjecaoDefault("proj4");
	$map->setProjection($proj4);
	$map->set("units",MS_METERS);
	$map->preparequery();
	$map->set("scaledenom",$map->scaledenom * 100000);
}

$w = $map->width;
$h = $map->height;
//
//Estable conexion con la base de datos postgres
//

//$link_bd=pg_connect("host=192.168.1.254 port=5432 dbname=expropiacion user=sge password=2l2f1nt22022i connect_timeout=5 options='--client_encoding=utf8'");
$link_bd=pg_connect("host=45.10.163.71 port=5432 dbname=expropiacion user=sge password=2l2f1nt22022i connect_timeout=5 options='--client_encoding=utf8'");
$formato_lado = 'N';

/*			

Formato_lado
R: Formato Resumido.
N: Formato Normal.

Formato_titulo:
T: Colonia Bloqueada: No se puede generar.
 : Cualquiero otro dato es: no bloqueda.

formato_hrumbo
1: Generar rumbos y distancias de HIDROS de la colonia.
*2: Generar rumbos y distancias de manera automatica. (FALTA DESARROLLAR)
3: Generar rumbos y distancias de las parcelas que tenga 1 en formato_hru en 5432t.in_temp

*/	
$temas = $map->getalllayernames();
foreach ($temas as $tema)
{
	//echo "<p> " . 'antes de select'. $tema. ":</p>";
	$layer = $map->getlayerbyname($tema);
	if (($layer->data != "") && (strtolower($layer->getmetadata("escondido")) != "sim") && (strtolower($layer->getmetadata("tema")) != "nao"))
	{

		if ($layer->getmetadata("tema")=="dpto")
		{
            $layer->set('opacity', 50);            
		}
		$existedato = "NO";
		if (($layer->getmetadata("tema")=="terrenos_ci"))
		{
			////echo "<p> " . 'antes de select' . ":</p>";
			$sq = "select st_setsrid(the_geom,4326) as the_geom,codigo,id_exp,id_proyec,tipoafecta,tramo,subtramo,nombrecomp,obs,sup_sig_m2,";
			$sq = $sq."sup_sig_ha,sup_legal,fecha_import,objectid,gid from i3geo.terrenos_ci";
			//$sq = $sq." where dpto = '".$dpto."' and distrito = '".$distrito."' and colonia = ".$colonia;
			
			$reqcat = pg_query ($link_bd,$sq." limit 1 " );
			////echo "<p> " . 'despues de pg_query' . ":</p>";		
			while ($r_uso = pg_fetch_array($reqcat))
			{
				//echo "<p> " . 'Ingreso SI' . ":</p>";		
				$existedato = "SI";
			}
			pg_free_result ($reqcat);
			pg_close ();

			if ($existedato  == "NO")
			{
				//echo "<p> " . 'Existe NO' . ":</p>";		
				$layer->set('opacity', 20); 				
				//$layer->set('opacity', 20); 
			}	
			else
			{
	            $data="the_geom from (".$sq." /*FW*//*FW*/) as foo using unique objectid using srid=4326";
				$layer->set("data",$data);            
				//$layer->set('opacity', 100); 	
				$layer->set('opacity', 20); 	

				//echo "<p> " . $data . ":</p>";			
			}	
		}
	if ($layer->numclasses > 0)
		{
			$classe = $layer->getclass(0);
			if (($classe->name == "") || ($classe->name == " "))
			{$classe->set("name",$layer->getmetadata("tema"));}		    
		}	
		$existedato = "NO";
		if (($layer->getmetadata("tema")=="plano_terrenos_ci"))
		{
			$sq = "select st_setsrid(the_geom,4326) as the_geom,codigo,id_exp,id_proyec,tipoafecta,tramo,subtramo,nombrecomp,obs,sup_sig_m2,";
			$sq = $sq."sup_sig_ha,sup_legal,fecha_import,objectid,gid from i3geo.terrenos_ci";
			$sq = $sq." where id_exp = ".$id_exp ;

			$reqcat = pg_query ($link_bd,$sq);
			////echo "<p> " . 'despues de pg_query' . ":</p>";		
			while ($r_uso = pg_fetch_array($reqcat))
			{
				//echo "<p> " . 'Ingreso SI' . ":</p>";		
				$existedato = "SI";
			}
			pg_free_result ($reqcat);
			pg_close ();

			if ($existedato  == "NO")
			{
				//echo "<p> " . 'Existe NO' . ":</p>";		
				$layer->set('opacity', 20); 				
				//$layer->set('opacity', 20); 
			}	
			else
			{
	            $data="the_geom from (".$sq." /*FW*//*FW*/) as foo using unique objectid using srid=4326";
				$layer->set("data",$data);            
				$layer->set('opacity', 100); 	

				////echo "<p> " . $data . ":</p>";			
			}
		}
		$existedato = "NO";
		if (($layer->getmetadata("tema")=="plano_afecta"))
		{
			//echo "<p> " . 'Ingresa a Tema' . ":</p>";	
			$sq = "select st_setsrid(the_geom,4326) as the_geom,ob_terreno,id_afecta,codigo,id_exp,";
			$sq = $sq."id_proyec,tipoafecta,tipoopcion,tramo,subtramo,nombrecomp,obs,sup_sig_m2,sup_afectacion,";
			$sq = $sq."sup_legal,tipo_gen,fecha_import,objectid,gid from i3geo.afectaciones_gen";
			$sq = $sq." where id_exp = ".$id_exp ;

			$reqcat = pg_query ($link_bd,$sq);
			////echo "<p> " . 'despues de pg_query' . ":</p>";		
			while ($r_uso = pg_fetch_array($reqcat))
			{
				//echo "<p> " . 'Ingreso SI' . ":</p>";		
				$existedato = "SI";
			}
			pg_free_result ($reqcat);
			pg_close ();

			if ($existedato  == "NO")
			{
				//echo "<p> " . 'Existe NO' . ":</p>";		
				$layer->set('opacity', 20); 				
				//$layer->set('opacity', 20); 
			}	
			else
			{
	            $data="the_geom from (".$sq." /*FW*//*FW*/) as foo using unique objectid using srid=4326";
				$layer->set("data",$data);            
				$layer->set('opacity', 100); 	

				////echo "<p> " . $data . ":</p>";			
			}
		}
		$existedato = "NO";
		if (($layer->getmetadata("tema")=="Rumbo"))
		{
            $sq = "select st_setsrid(the_geom,4326) as the_geom,id_exp,objectid,lado,lado_fmt,rumbo_fmt,distancia,lindero,grados,minutos,segundos,gid from i3geo.in_planopericia2 ";
            $sq = $sq." where id_exp = ".$id_exp;

			$reqcat = pg_query ($link_bd,$sq);
			while ($r_uso = pg_fetch_array($reqcat))
			{
					
				$existedato = "SI";
			}
			pg_free_result ($reqcat);
			pg_close ();
			if ($existedato  == "SI")
			{
	            $data="the_geom from (".$sq." /*FW*//*FW*/) as foo using unique objectid using srid=4326";
				$layer->set("data",$data);            
				$layer->set('opacity', 100); 	
				//echo "$id_exp <p> " . $id_exp . ":</p>";	
			}	
			else 
			{
	            $data="the_geom from (".$sq." /*FW*//*FW*/) as foo using unique objectid using srid=4326";
				$layer->set("data",$data);            
				$layer->set('opacity', 100); 				
			}


		}
		if ($layer->numclasses > 0)
		{
			$classe = $layer->getclass(0);
			if (($classe->name == "") || ($classe->name == " "))
			{$classe->set("name",$layer->getmetadata("tema"));}		    
		}
	}
	if ($layer->getmetadata("classe") == "NAO")
	{
		$nclasses = $layer->numclasses;
		if ($nclasses > 0)
		{
			for($i=0;$i<$nclasses;$i++)
			{
				$classe = $layer->getclass($i);
				$classe->set("name","classeNula");
			}
		}
	}
}
$map->save($temp);
removeLinha("classeNula",$temp);



substituiCon($temp,$postgis_mapa);
$o = $map->outputformat;

if ($par_escala <= 0)
{

	$par_escala=1;
}

if ($par_escala > 9)
{

	$par_escala=9;
}
$sq = "select ";
$sq = $sq."cast(round(cast((x.campo1-(x.campo3-x.campo1)/10) as decimal),13) as text) as ext1, ";//solicitar explicacion.
$sq = $sq."cast(round(cast((x.campo2-(x.campo4-x.campo2)/10) as decimal),13) as text) as ext2, ";
$sq = $sq."cast(round(cast((x.campo3+(x.campo3-x.campo1)/10) as decimal),13) as text) as ext3, ";
$sq = $sq."cast(round(cast((x.campo4+(x.campo4-x.campo2)/10) as decimal),13) as text) as ext4 ";
$sq = $sq."from ";
$sq = $sq."(select "; 
$sq = $sq."cast((regexp_split_to_array(bb, E','))[1] as decimal) as campo1, ";
$sq = $sq."cast((regexp_split_to_array(bb, E','))[2] as decimal) as campo2, ";
$sq = $sq."cast((regexp_split_to_array(bb, E','))[3] as decimal) as campo3, ";
$sq = $sq."cast((regexp_split_to_array(bb, E','))[4] as decimal) as campo4 ";
$sq = $sq."from ";
$sq = $sq."(select "; 
$sq = $sq."replace(replace(substr(cast(a.bb as varchar),5),' ',',') ,')','') as bb  ";
$sq = $sq."from ";
$sq = $sq."(select ST_Extent(the_geom) bb from ";
$sq = $sq."(select 1 objectid, st_union(st_snaptogrid(the_geom,0.00000000000001)) the_geom ";
$sq = $sq."from i3geo.terrenos_ci t ";
$sq = $sq."where t.id_exp=".$id_exp.") e ";
$sq = $sq.") as a) as t1) as x;  ";

$ext1='                                          ';
$ext2='                                          ';
$ext3='                                          ';
$ext4='                                          ';

$result = pg_query ($link_bd,$sq);
if ($r_parcela = pg_fetch_array($result))
{

	$ext1=$r_parcela["ext1"];
	$ext2=$r_parcela["ext2"];
	$ext3=$r_parcela["ext3"];
	$ext4=$r_parcela["ext4"];

	//echo $ext1;
	//echo $ext2;
	//echo $ext3;
	//echo $ext4;

}

//echo "<p> " . 'antes de select'. ":</p>";

pg_free_result ($result);
pg_close ();
$r_escala = pg_query ($link_bd,"select ide.calcular_escala(".$ext1.",".$ext4.",".$ext3.",".$ext4.",19) as escala;");
if ($r_esc = pg_fetch_array($r_escala))
{

	$escala=$r_esc["escala"];
	//echo "<p> " . '$escala:'.$escala. " </p>";
}
//echo "<p> " . '$ext1:'.$escala. " </p>";
pg_free_result ($r_escala);
pg_close ();
//$ext = explode(" ",$mapexten);
$extatual = $map->extent;
$extatual->setExtent( $ext1, $ext2, $ext3, $ext4 );
//$extatual->setExtent( $minx, $miny, $maxx, $maxy );

//$map->extent->setExtent($ext[0],$ext[1],$ext[2],$ext[3]);
//$map->setExtent($ext[0],$ext[1],$ext[2],$ext[3]);
$map->setExtent( $ext1, $ext2, $ext3, $ext4 );

//$map->setExtent( $minx, $miny, $maxx, $maxy );
//$legenda = $map->legend;
//$legenda->set("status",MS_EMBED);
$o->set("imagemode",MS_IMAGEMODE_RGB);
$o->set("transparent","false");


$imgo = $map->draw();
//$imgo = $map->draw();
if($imgo->imagepath == "")
{echo "Erro IMAGEPATH vazio=vacio";exit;}
$nomer = ($imgo->imagepath)."mapa".$nomes.".png";
$imgo->saveImage($nomer);

$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
$pathMapa = $dir_tmp."/".basename($imgo->imageurl)."/".basename($nomer);
		        

//-------------------------------------------------------------------------------
//CREAR MAPA DE REFERENCIA: Crear el Objeto Mapa de referencia para 
//generar la imagen de mapa secundario de referencia
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
$ref_map_file = "C:/ms4w/Apache/htdocs/i3geo/aplicmap/mopc_oficio_plano_individual_ref.map";
$ref_map = ms_newMapObj($ref_map_file);
$ref_temp = str_replace(".map","xxx_ref.map",$ref_map_file);

//echo "<p> " . 'Ingreso ref'. ":</p>";
//substitui a string de conex&atilde;o com o banco em cada layer se for necess&aacute;rio
$ref_map->save($ref_temp);
$ref_map = ms_newMapObj($ref_temp);
//restauraCon($ref_temp,$postgis_mapa);
if($ref_map->getmetadata("interface") == "googlemaps"){
	$proj4 = pegaProjecaoDefault("proj4");
	$ref_map->setProjection($proj4);
	$ref_map->set("units",MS_METERS);
	$ref_map->preparequery();
	$ref_map->set("scaledenom",$ref_map->scaledenom * 1);
	//$map->set("scaledenom",$map->scaledenom * 100000);
}
//-------------------------------------------------------------------------------
$ref_temas = $ref_map->getalllayernames();
foreach ($ref_temas as $ref_tema)
{
	$ref_layer = $ref_map->getlayerbyname($ref_tema);
	if (($ref_layer->data != "") && (strtolower($ref_layer->getmetadata("escondido")) != "sim") && (strtolower($ref_layer->getmetadata("tema")) != "nao"))
	{
	
        // if para cambiar data del layer de plano para darle el resaltado correspendiente a la parcela elegida.
		if ($ref_layer->getmetadata("tema")=="plano_afecta")
		{
            $sq = "select st_setsrid(the_geom,4326) as the_geom,ob_terreno,id_afecta,codigo,id_exp,";
			$sq = $sq."id_proyec,tipoafecta,tipoopcion,tramo,subtramo,nombrecomp,obs,sup_sig_m2,sup_afectacion,";
			$sq = $sq."sup_legal,tipo_gen,fecha_import,objectid,gid from i3geo.afectaciones_gen";
			$sq = $sq." where id_exp = ".$id_exp ;
			
			$reqcat = pg_query ($link_bd,$sq);

			////echo "<p> " . 'despues de pg_query' . ":</p>";		
			while ($r_afecta = pg_fetch_array($reqcat))
			{
				//echo "<p> " . 'Ingreso SI' . ":</p>";		
				$existedato = "SI";
			}
			pg_free_result ($reqcat);
			pg_close ();

			if ($existedato  == "NO")
			{
				//echo "<p> " . 'Existe NO' . ":</p>";		
				$ref_layer->set('opacity', 20); 				
				//$layer->set('opacity', 20); 
			}	
			else
			{
	            $data="the_geom from (".$sq." /*FW*//*FW*/) as foo using unique objectid using srid=4326";
				$ref_layer->set("data",$data);            
				$ref_layer->set('opacity', 100); 	

				////echo "<p> " . $data . ":</p>";			
			}
		}

		if ($ref_layer->numclasses > 0)
		{
			$classe = $ref_layer->getclass(0);
			if (($classe->name == "") || ($classe->name == " "))
			{$classe->set("name",$layer->getmetadata("tema"));}		    
		}
	}
	if ($ref_layer->getmetadata("classe") == "NAO")
	{
		$ref_nclasses = $ref_layer->numclasses;
		if ($ref_nclasses > 0)
		{
			for($i=0;$i<$ref_nclasses;$i++)
			{
				$ref_classe = $ref_layer->getclass($i);
				$ref_classe->set("name","classeNula");
			}
		}
	}
}
//-------------------------------------------------------------------------------
//FIN DE CONFIGURACION DE ATRIBUTOS DE LOS LAYERS REQUERIDOS
//Salva el nuevo mapfile modificado.
//-------------------------------------------------------------------------------
$ref_map->save($ref_temp);
removeLinha("classeNula",$ref_temp);
$ref_map = ms_newMapObj($ref_temp);
//-------------------------------------------------------------------------------
//CODIGO PARA ESTABLECER EL EXTEN RECIBIDO EN EL parameto $mapexten 
//-------------------------------------------------------------------------------

$sq = "select ";
$par_escala=9;
$sq = $sq."cast(round(cast((x.campo1-(x.campo3-x.campo1)/10) as decimal),13) as text) as ext1, ";//solicitar explicacion.
$sq = $sq."cast(round(cast((x.campo2-(x.campo4-x.campo2)/10) as decimal),13) as text) as ext2, ";
$sq = $sq."cast(round(cast((x.campo3+(x.campo3-x.campo1)/10) as decimal),13) as text) as ext3, ";
$sq = $sq."cast(round(cast((x.campo4+(x.campo4-x.campo2)/10) as decimal),13) as text) as ext4 ";
$sq = $sq."from ";
$sq = $sq."(select "; 
$sq = $sq."cast((regexp_split_to_array(bb, E','))[1] as decimal) as campo1, ";
$sq = $sq."cast((regexp_split_to_array(bb, E','))[2] as decimal) as campo2, ";
$sq = $sq."cast((regexp_split_to_array(bb, E','))[3] as decimal) as campo3, ";
$sq = $sq."cast((regexp_split_to_array(bb, E','))[4] as decimal) as campo4 ";
$sq = $sq."from ";
$sq = $sq."(select "; 
$sq = $sq."replace(replace(substr(cast(a.bb as varchar),5),' ',',') ,')','') as bb  ";
$sq = $sq."from ";
$sq = $sq."(select ST_Extent(the_geom) bb from ";
$sq = $sq."(select 1 objectid, st_union(st_snaptogrid(the_geom,0.00000000000001)) the_geom ";
$sq = $sq."from i3geo.terrenos_ci t ";
$sq = $sq."where t.id_exp=".$id_exp.") e ";
$sq = $sq.") as a) as t1) as x;  ";

$ext1='                                          ';
$ext2='                                          ';
$ext3='                                          ';
$ext4='                                          ';

$result = pg_query ($link_bd,$sq);
if ($r_parcela = pg_fetch_array($result))
{

	$ext1=$r_parcela["ext1"];
	$ext2=$r_parcela["ext2"];
	$ext3=$r_parcela["ext3"];
	$ext4=$r_parcela["ext4"];

}
pg_free_result ($result);
pg_close ();
$r_escala = pg_query ($link_bd,"select ide.calcular_escala(".$ext1.",".$ext4.",".$ext3.",".$ext4.",19) as escala;");
if ($r_esc = pg_fetch_array($r_escala))
{

	$escala=$r_esc["escala"];
	//echo "<p> " . '$escala:'.$escala. " </p>";
}
//echo "<p> " . '$ext1:'.$escala. " </p>";
pg_free_result ($r_escala);
pg_close ();
//$ext = explode(" ",$mapexten);
$extatual = $ref_map->extent;
$extatual->setExtent( $ext1, $ext2, $ext3, $ext4 );
//$extatual->setExtent( $minx, $miny, $maxx, $maxy );

$ref_map->setExtent( $ext1, $ext2, $ext3, $ext4 );

$or = $ref_map->outputformat;

$ref_map->extent->setExtent( $ext1, $ext2, $ext3, $ext4 );

$or->set("imagemode",MS_IMAGEMODE_RGB);
$or->set("transparent","false");
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//Genera la imagen del mapa en: $imgo y crea el archivo PNG correspondiente 
//-------------------------------------------------------------------------------
$imgo = $ref_map->draw();
if($imgo->imagepath == "")
{echo "Erro IMAGEPATH del mapa de Referencia vacio";exit;}
$nomer = ($imgo->imagepath)."ref_mapa".$nomes.".png";
$imgo->saveImage($nomer);
$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
$pathMapa_Ref = $dir_tmp."/".basename($imgo->imageurl)."/".basename($nomer);
//-------------------------------------------------------------------------------

//substituiCon($map_file,$postgis_mapa);

require(dirname(__FILE__).'/../../pacotes/fpdf/fpdf.php');
//$pdf = new FPDF("L","mm",array(329,216)); //OFICIO
$pdf = new FPDF("P","mm",array(297,210)); //A4
//$pdf = new FPDF("L","mm","A4");
$pdf->SetAutoPageBreak(false);
//$pdf->SetDisplayMode( 70 , "single");
$pdf->SetDisplayMode( 70 , "single");
$pdf->SetMargins(0, 0, 0);
$pdf->AddPage("L");
$pdf->SetLineWidth(0.1);

$mapasize = getimagesize($pathMapa);
$wMapa = $mapasize[0];
$hMapa = $mapasize[1];

$nW  = $wMapa/10;
$nH  = $hMapa/10;

//Ancho y alto para el recuadro del mapa
$anchomap = $nW+2;
$altomap  = $nH+2;
//echo "ancho: ". $nW. " 	alto: " . $nH;

$rect_mapa_inicial_x=10;
$rect_mapa_inicial_y=59;

$pdf->Rect($rect_mapa_inicial_x, $rect_mapa_inicial_y, $anchomap, $altomap, 'D');//Mapa principal ok
//Ancho y alto para el recuadro de los datos
$xdatos  = $rect_mapa_inicial_x; //valor para x del recuadro de datos
$ydatos  = $altomap+59;  


$pdf->Image($pathMapa, $rect_mapa_inicial_x+1, $rect_mapa_inicial_y+1, $nW, $nH); //IMAGEN DE MAPA PRINCIPAL.

$pdf->SetFont('Arial','',9);


//************************************
$nWG = $nW;
$nHG = $nH;

$linea = 30; //Linea inicial
$separador = 15;
$ancho = 350;


$pdf->Image("../../imagens/puntos-cardinales.jpg", 11, 61, 12,13);

$pdf->Image("../../imagens/mopc.jpg" , 10.5 ,11, 41,15,'','',1);

$pdf->Image("../../imagens/paraguay-de-la-gente.jpg" , 11+150	,11, 41,15.8,'','',1);

$linea = 13;
$separador = 4;
$pdf->SetFont('Arial','B',9);
$textMsg = utf8_decode("REPÚBLICA DEL PARAGUAY");
$xMsg = $anchomap/2 - $pdf->GetStringWidth($textMsg)/2;
$pdf->Text($xdatos + $xMsg,$linea,$textMsg);

$pdf->SetFont('Arial','B',8);
$textMsg = utf8_decode("VICEMINISTERIO DE OBRAS PÚBLICAS Y COMUNICACIONES");
$xMsg = $anchomap/2 - $pdf->GetStringWidth($textMsg)/2;
$linea = $linea + $separador;
$pdf->Text($xdatos + $xMsg,$linea,$textMsg);

$pdf->SetFont('Arial','B',8);
$textMsg = utf8_decode("LEY 5389/2015");
$xMsg = $anchomap/2 - $pdf->GetStringWidth($textMsg)/2;
$linea = $linea + $separador;
$pdf->Text($xdatos + $xMsg,$linea,$textMsg);

$pdf->SetFont('Arial','B',9);
$textMsg = utf8_decode("CERTIFICADO CATASTRAL FRANJA DE DOMINIO");
$xMsg = $anchomap/2 - $pdf->GetStringWidth($textMsg)/2;
$linea = $linea + $separador+2;
$pdf->Text($xdatos + $xMsg,$linea,$textMsg);

$ix = 10;
$iy =  9;

$pdf->Rect($ix, $iy, $anchomap, 50, 'D');

////////////////////////////////////////////
//   LINEAS TITULO PRINCIPAL
////////////////////////////////////////////
//linea vertical que finaliza el primer logo
$pdf->Line($ix+42,$iy+20,$ix+42,$iy);
//linea vertical que inicia el segundo logo
$pdf->Line($ix+149.5,$iy+20,$ix+149.5,$iy);
//linea horizontal del Titulo de Certificado Franja de dominio
$pdf->Line($ix+42,$iy+14,$ix+149.5,$iy+14);
//linea horizontal completa que finaliza la tabla de titulos
$pdf->Line($ix,$iy+20,$ix+192,$iy+20);
////////////////////////////////////////////
//   LINEAS DESCRIPCION PROYECTO/TRAMOS/SUBTRAMOS
////////////////////////////////////////////
//linea vertical que finaliza la primera columna
$pdf->Line($ix+64,$iy+20,$ix+64,$iy+30);
//linea vertical que finaliza la segunda columna
$pdf->Line($ix+128,$iy+20,$ix+128,$iy+30);
//linea horizontal completa que finaliza la linea 
$pdf->Line($ix,$iy+30,$ix+192,$iy+30);

$result = pg_query ($link_bd,"SELECT * FROM ide.v_expedientes_listado_g  
							  WHERE id = ".$id_exp);

while ($datos = pg_fetch_array($result)) 
{	
	$ancho_linea=64;
	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Proyecto:");
	$pdf->Text($ix+0+1,$iy+23.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode($datos[des_proyecto]);
	$pdf->setXY($ix+0, $iy+25);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');

	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Tramo:");
	$pdf->Text($ix+64+1,$iy+23.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode($datos[des_tramo]);
	$pdf->setXY($ix+64, $iy+25);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');	

	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Sub Tramo:");
	$pdf->Text($ix+128+1,$iy+23.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode($datos[des_subtramo]);
	$pdf->setXY($ix+128, $iy+25);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');	
	////////////////////////////////////////////
	//   LINEAS DESCRIPCION DPERTAMENTO/DISTRITO/ TIPO AFECTACION
	////////////////////////////////////////////
	////linea vertical que finaliza la primera columna
	$pdf->Line($ix+64,$iy+30,$ix+64,$iy+40);
	////linea vertical que finaliza la segunda columna
	$pdf->Line($ix+128,$iy+30,$ix+128,$iy+40);
	//linea horizontal completa que finaliza la linea
	$pdf->Line($ix,$iy+40,$ix+192,$iy+40);

	$ancho_linea=64;
	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Departamento:");
	$pdf->Text($ix+0+1,$iy+33.5,$textMsg);

	$des_departamento = ''; $d_departamentos= pg_query ($link_bd,"SELECT
	coalesce(cod_snc,'')||'-'||dpto_desc dpto_desc FROM ide.dpto WHERE dpto = '".
	$datos[id_departamento]."';"); while ($datos_dpto =
	pg_fetch_array($d_departamentos)) { $des_departamento =
	$datos_dpto[dpto_desc]; } pg_free_result ($datos_dpto); pg_close ();

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode($des_departamento);
	$pdf->setXY($ix+0, $iy+35);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');

	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Distrito:");
	$pdf->Text($ix+64+1,$iy+33.5,$textMsg);

	$des_distrito = '';
	$d_distritos = pg_query ($link_bd,"SELECT dist_snc||'-'||dist_desc dist_desc FROM ide.distritos WHERE dpto = '". $datos[id_departamento]."' and distrito = '". $datos[id_distrito]."';");
	while ($datos_dist = pg_fetch_array($d_distritos)) {
		$des_distrito = $datos_dist[dist_desc];
	}
	pg_free_result ($datos_dist);
	pg_close ();

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode($des_distrito);
	$pdf->setXY($ix+64, $iy+35);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');	

	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Tipo Afectación:");
	$pdf->Text($ix+128+1,$iy+33.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode($datos[des_tipo_afectacion]);
	$pdf->setXY($ix+128, $iy+35);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');

	////////////////////////////////////////////
	//   LINEAS DESCRIPCION NOMBRE/CEDULA/CODIGO
	////////////////////////////////////////////
	////linea vertical que finaliza la primera columna
	$pdf->Line($ix+16,$iy+40,$ix+16,$iy+50);
	////linea vertical que finaliza la segunda columna
	$pdf->Line($ix+112,$iy+40,$ix+112,$iy+50);
	////linea vertical que finaliza la segunda columna
	$pdf->Line($ix+140,$iy+40,$ix+140,$iy+50);
	////linea vertical que finaliza la segunda columna
	$pdf->Line($ix+166,$iy+40,$ix+166,$iy+50);
	//linea horizontal completa que finaliza la linea
	$pdf->Line($ix,$iy+50,$ix+192,$iy+50);

	$ancho_linea=64;
	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Codigo");
	$pdf->Text($ix+0+1,$iy+43.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode($datos[codigo_unico]);
	$pdf->setXY($ix+0, $iy+45);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');


	//$pdf->SetFont('Arial','B',8);
	//$textMsg = utf8_decode("Nombre:");
	//$pdf->Text($ix+32+1,$iy+43.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = "             ".utf8_decode($datos[nombre_completo]);
	//$pdf->setXY($ix+32, $iy+45);
	$pdf->setXY($ix+16, $iy+43.5-3);
	$pdf->MultiCell($ancho_linea+32, 4 , $textMsg, 0, 'J');

	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Nombre:");
	//$pdf->Text($ix+32+1,$iy+45,$textMsg);
	$pdf->Text($ix+16+1,$iy+43.5,$textMsg);


	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Sup. Afectación(m2):");
	$pdf->Text($ix+112+1,$iy+43.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode(round($datos[ubi_superficie_afectacion],2));
	$xMsg = 28/2 - $pdf->GetStringWidth($textMsg)/2;
	$pdf->setXY($ix+112+$xMsg, $iy+45);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');

	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("% Afectación:");
	$pdf->Text($ix+140+1,$iy+43.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode(round($datos[ubi_porcentaje_afectacion],2));
	$xMsg = 28/2 - $pdf->GetStringWidth($textMsg)/2;
	$pdf->setXY($ix+140+$xMsg, $iy+45);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');

	$pdf->SetFont('Arial','B',7);
	$textMsg = utf8_decode("Total Gs:");
	$pdf->Text($ix+166+1,$iy+43.5,$textMsg);

	$pdf->SetFont('Arial','',8);
	$textMsg = utf8_decode(round($datos[dao_total_conformidad],0));
	$xMsg = 28/2 - $pdf->GetStringWidth($textMsg)/2;
	$pdf->setXY($ix+166+$xMsg, $iy+45);
	$pdf->MultiCell($ancho_linea, 4, $textMsg, 0, 'J');


}

pg_free_result ($reqcat);
pg_close ();


//-------------------------------------------------------------------------------
//IMPRESION DE DATOS FIJOS
//-------------------------------------------------------------------------------
// Consulta en postgres
$result = pg_query ($link_bd,"SELECT *, round(p.distancia,1) as distancia,round(p.p1x,3) as p1e,  round(p.p1y,3) as p1n,
			case when p.lindero = 'HIDRO' then 'Curso Hidrico' else p.lindero end as lindero2
			FROM 
				i3geo.afectacionesper2 p join
				i3geo.afectaciones_gen i ON p.objectid=i.objectid
			WHERE 
				i.id_exp = ".$id_exp." order by p.lado ");
				//Ordena los lados para los informes
				//falta crear hojas dinamicamente.
				//******** TABLA DE DATOS ********//
	
	//posición tabla
	$xtabla = 10;				//posición en x de la tabla
	$ytabla = $ydatos+7;		//posición en y de la tabla
	$hcelda = 4;				//altura de la celda
	$separadortabla = 4;		//separador de filas
	//FIN posición tabla

	//Colores, ancho de línea y fuente para la cabecera
	$pdf->SetFillColor(51,78,138);
	$pdf->SetTextColor(255);
	$pdf->SetDrawColor(1,1,1);
	$pdf->SetLineWidth(0.1);
	$pdf->SetFont('','B',7);
	
	//Cabecera
	$header = array('Lado','Rumbo','Distancia','PTO','E','N');	//array de cabeceras
	$widthheader = array(8,
						 22,
						 12,
						 8,
						 15,
						 17
	); //ancho de celda para cada cabecera

	//recorre el array de cabeceras y las imprime (IZQUIERA)
	$pdf->SetXY($xtabla,$ytabla);
	$i = 0;
	foreach ($widthheader as $withH) 
	{
		$pdf->Cell($withH,$hcelda,$header[$i],1,0,'C',1);
		$i = $i +1;
	}
	$pdf->Ln();

	$ydatos1 = $ytabla + $separadortabla;
	$ydatos2 = $ytabla + $separadortabla;
	$fill=false;
	$i=0;
	$limite_datos = 12;	//se define el limite de datos por lista
	$limite_lindero = 30;	//se define el limite de largo de linderos

while ($datos = pg_fetch_array($result)) {
	
	//Restauración de colores y fuentes
	$pdf->SetFillColor(224,235,255);
	$pdf->SetTextColor(0);
	$pdf->SetFont('','',7);
	$i = $i + 1;
	//Datos
	if ($i <= $limite_datos) {
		if ($fill == false) {
			$pdf->SetXY($xtabla,$ydatos1);
           	
				$pdf->Cell(8,$hcelda,	substr($datos[lado_fmt], 5)			,'LR',0,'C',$fill);
				$pdf->Cell(22,$hcelda,	utf8_decode($datos[rumbo_fmt])		,'LR',0,'L',$fill);
				$pdf->Cell(12,$hcelda,	$datos[distancia]					,'LR',0,'L',$fill);
				$pdf->Cell(8,$hcelda,	$i									,'LR',0 ,'C',$fill);
				$pdf->Cell(15,$hcelda,	$datos[p1e]							,'LR',0,'L',$fill);
				$pdf->Cell(17,$hcelda,	$datos[p1n]							,'LR',0,'L',$fill);	
			
			$pdf->Ln();
			$fill=true; //indica que SI debe pintar el fondo de la celda
		} else {
			
			$pdf->SetXY($xtabla,$ydatos1);
           	
				$pdf->Cell(8,$hcelda,	substr($datos[lado_fmt], 5)			,'LR',0,'C',$fill);
				$pdf->Cell(22,$hcelda,	utf8_decode($datos[rumbo_fmt])		,'LR',0,'L',$fill);
				$pdf->Cell(12,$hcelda,	$datos[distancia]					,'LR',0,'L',$fill);
				$pdf->Cell(8,$hcelda,	$i									,'LR',0 ,'C',$fill);
				$pdf->Cell(15,$hcelda,	$datos[p1e]							,'LR',0,'L',$fill);
				$pdf->Cell(17,$hcelda,	$datos[p1n]							,'LR',0,'L',$fill);					
			$pdf->Ln();
			$fill=false; //indica que NO debe pintar el fondo de la celda
		}
		$ydatos1 = $ydatos1 + $separadortabla;
	}
}

//si es mayor al límite de datos, imprime la linea final del recuadro de rumbos y distancias.	
if ($i > $limite_datos) {
	$pdf->Line($xtabla,$ydatos1,$xtabla + 82,$ydatos1);
	}

//echo '$ydatos1: ' . $ydatos1 . '<br>'; 
$ydatos1 = ($ytabla + $separadortabla)+$separadortabla*7; //vuelve a su valor original sumado el separador de tabla por las 7 filas de datos que muestra maximo
//******** FIN TABLA DE DATOS ********//	

pg_free_result ($result);
pg_close ();




$result2 = pg_query ($link_bd,"SELECT codigo, id_exp, sup_sig_m2 as sup_sig, sup_legal 
								FROM i3geo.afectaciones_gen
								WHERE id_exp = ".$id_exp);
	$count_select=pg_query ($link_bd,"SELECT count (id_exp) as count
									  from (SELECT codigo, id_exp, sup_sig_m2 as sup_sig, sup_legal 
											FROM i3geo.afectaciones_gen
											WHERE id_exp =".$id_exp.") s
									  group by id_exp");
	$count_result=pg_fetch_array($count_select);
	pg_close();
// Procesamiento de superficie de los lotes
//******** TABLA DE DATOS ********//
	
	//posición tabla
	$xtabla1 = $anchomap/2;				//posición en x de la tabla     xtabla se reemplaza por xtabla1
	$ytabla1 = $ydatos+7;			//posición en y de la tabla ytabla se reemplaza por ytabla1
	$hcelda = 4;				//altura de la celda
	$separadortabla = 4;		//separador de filas
	//FIN posición tabla

	//Colores, ancho de línea y fuente para la cabecera
	$pdf->SetFillColor(51,78,138);
	$pdf->SetTextColor(255);
	$pdf->SetDrawColor(1,1,1);
	$pdf->SetLineWidth(0.1);
	$pdf->SetFont('','B',7);
	
	//Cabecera
	$header = array('Frac.','Has',utf8_decode('m²'),utf8_decode('cm²'));	//array de cabeceras
	
	$widthheader = array(10,
						 15,
						 10,
						 10,
		); //ancho de celda para cada cabecera

	//recorre el array de cabeceras y las imprime (IZQUIERA)
	$pdf->SetXY($xtabla1,$ytabla1);
	$i = 0;
	foreach ($widthheader as $withH) 
	{
		$pdf->Cell($withH,$hcelda,$header[$i],0,0,'C',1);
		$i = $i +1;
	}
	$pdf->Ln();

	$ydatossup = $ytabla1 + $separadortabla;
	$ydatos2 = $ytabla1 + $separadortabla;
	$fill=true;
	$i=0;
	$j=0;
	$str_cm2='';
	$str_m2='';
	$str_has='';
	$limite_datos = $count_result[count];	//se define el limite de datos por lista
	$textfracc='';
	$sup_resto=0;
	$sup_afecta=0;
	$sum_afecta=0;
	$sup_legal=0;
	$pdf->SetTextColor(0);

	while ($datos = pg_fetch_array($result2)) {
	
		//Restauración de colores y fuentes
		$pdf->SetFillColor(224,235,255);
		$pdf->SetTextColor(0);
		$pdf->SetFont('','',7);
		$i = $i + 1;
		//Datos
		//echo '$i: ' . $i . '<br>';
		//echo '$limite_datos: ' . $limite_datos . '<br>';
			
		if ($i <= $limite_datos) {
			if($i==1){
				$textfracc=utf8_decode("A");
			}elseif($i==2){
				$textfracc=utf8_decode("B");
			}elseif($i==3){
				$textfracc=utf8_decode("C");
			}elseif($i==4){
				$textfracc=utf8_decode("D");
			}/*else{
				$textfracc=utf8_decode("Resto");
			}*/
			//echo '$textfracc: ' . $textfracc . '<br>';
			
			//$n2=(round($datos[sup_sig],0,PHP_ROUND_HALF_DOWN));
			//$cm2= round(($n1-$n2),4);
			$sup_afecta=(round($datos[sup_sig],4));
			$sup_legal=(round($datos[sup_legal],4));
			$has=(int)($sup_afecta/10000);//has
			$m2_srt= substr(strval((int)($sup_afecta)),-4); //m2;
			$n1=round($sup_afecta,4)*10000;
			$str_cm2=substr(strval($n1),-4); //cm2
			$sum_afecta=$sum_afecta + $sup_afecta;	
			if ($fill == false) {
				$pdf->SetXY($xtabla1,$ydatossup);
				$pdf->Cell(10,$hcelda,	$textfracc,'',0 ,'C',$fill); //fracción
				$pdf->Cell(15,$hcelda,	$has,'',0,'C',$fill); //HA
				$pdf->Cell(10,$hcelda,	$m2_srt,'',0,'L',$fill); //m²
				$pdf->Cell(10,$hcelda,	$str_cm2,'',0,'L',$fill); //cm²
				$pdf->Ln();
				$fill=true; //indica que SI debe pintar el fondo de la celda
			} else {
				$pdf->SetXY($xtabla1,$ydatossup);
				$pdf->Cell(10,$hcelda,	$textfracc,'',0 ,'C',$fill);
				$pdf->Cell(15,$hcelda,	$has,'',0,'C',$fill);
				$pdf->Cell(10,$hcelda,	$m2_srt,'',0,'L',$fill);
				$pdf->Cell(10,$hcelda,	$str_cm2,'',0,'L',$fill);
				$pdf->Ln();
				$fill=false; //indica que NO debe pintar el fondo de la celda
			}
			$ydatossup = $ydatossup + $separadortabla;
		}
	}
				
	//$ydatossup = ($ytabla1 + $separadortabla)+$separadortabla*7; 
	//vuelve a su valor original sumado el separador de tabla 
	//por las 7 filas de datos que muestra maximo
	//******** FIN TABLA DE DATOS ********//	

	$pdf->Rect($xdatos, $ydatos, $anchomap, 74, 'D');//recuadro debajo de mapa hasta final de hoja

	$pdf->Line($xdatos,$ydatos+7,$xdatos+192,$ydatos+7);
	$pdf->Line($xdatos+132,$ydatos+45,$xdatos+192,$ydatos+45);
	$pdf->Line($xdatos+132,$ydatos+66,$xdatos+192,$ydatos+66);
	$pdf->Line($xdatos+132,$ydatos+7,$xdatos+132,$ydatos+74);

	$pdf->SetFont('Arial','B',8);
	$textMsg = utf8_decode("Lic. Anatalia Aranda");
	$xMsg = 60/2 - $pdf->GetStringWidth($textMsg)/2;
	$pdf->Text($xdatos+133+$xMsg,$ydatos+69,$textMsg);
	$textMsg = utf8_decode("Dirección de Bienes Inmuebles");
	$xMsg = 60/2 - $pdf->GetStringWidth($textMsg)/2;
	$pdf->Text($xdatos+133+$xMsg,$ydatos+72,$textMsg);
pg_free_result ($result2);
pg_close ();



$pdf->Close();
$nombre_archivo = "mapa_hoja".$hoja.".pdf";
$pdf->Output($nombre_archivo,"I", true);
?>
