+++ /dev/null
-<?php\r
-require_once("../path_index.php");\r
-
-
-//topp: used in the name of the SLD file to address the layer to color\r
-$prefix_wms="topp:";
-\r
-//header("Content-Type: text/xml"); \r
-$random=md5($_SERVER["REQUEST_URI"] ).".sld";\r
-$leg=$_REQUEST['legend'];\r
-//$random2=DIR_PLATFORM."/synthesys/www/v1/cr_img/".(rand()%300).".png"; \r
-\r
-//$random2="/var/www/synthesys/www/v1/img/".md5($_SERVER["REQUEST_URI"] ).".png";\r
-//bug 16/04/2010 (pb with imagemagick package in filename?)\r
-$random2="/var/www/synthesys/www/v1/img/".md5($_SERVER["REQUEST_URI"] )."_layers.png";
-//ftheeten 22/02/2011 (sometimes bug if image previously exists)
- if(file_exists($random2))
- {
- unlink($random2);\r
- }
-\r
-\r
-//print($random2);\r
-\r
-$sld_dir = "/var/www/synthesys/www/v1/sld"; \r
-$img_dir = "/var/www/synthesys/www/v1/img";\r
-\r
-$d = dir($sld_dir);\r
-$e = dir($img_dir);\r
-\r
-\r
-$ad=$_REQUEST['ad'];\r
-$ad=explode('||',$ad);\r
-\r
-\r
-$layers=$_REQUEST['l'];\r
-if ( $_REQUEST['ad'] ==null or $_REQUEST['as'] == null or $_REQUEST['ms'] == null)\r
-{\r
- print("<br>");\r
- print("<br>");\r
- print("<b>The URL must be missing some values, or they have been wrongly defined.</b><br>");\r
- print("<br>");\r
- print("<b>Make sure you use the following syntax when adding the variables</b><br>");\r
- print("Eg. http://edit.br.fgov.be/edit_wp5/v1/areas.php<b>?</b>*Layers<b>&</b>Area Data<b>&</b>Area Style<b>&</b>*Bounding Box<b>&</b>Map Size<br>");\r
- if ($layers==null)\r
- {\r
- print("<br>");\r
- print("<b>*Layers (l=) has not been defined</b><br>");\r
- print("This defines the background layer.<br>");\r
- print("Eg. l=earth will give your map a backgound of the full earth map with only country data.<br>");\r
- print("where l=tdwg4 will make the earth your background as well but with the tdwg layer 4 areas defined.<br>");\r
- print("The only options are earth, tdwg1, tdwg2, tdwg3, tdwg4.<br>");\r
- }\r
- if ($_REQUEST['ad']==null)\r
- {\r
- print("<br>");\r
- print("<b>Area Data (ad=) has not been defined</b><br>");\r
- print("This is to determin which areas will be symbolized specifically on the map in the format ad=layer name:a:area code1|b:area code2 etc<br>");\r
- print("You can have information form more then one layer defined by using || as a seperator<br>");\r
- print("Eg ad=layer1 name:a:area code1|b:area code2||layer2 name:c:area code1|d:area code2<br>");\r
- print("The layers can only be earth, <a href=\"tdwgLevel1.html\">tdwg1</a>, <a href=\"tdwgLevel2.html\">tdwg2</a>, <a href=\"tdwgLevel3.html\">tdwg3</a> or <a href=\"tdwgLevel4.html\">tdwg4</a>. Click on the name to see a list of the area codes.<br>");\r
- }\r
- if ($_REQUEST['bbox']==null)\r
- {\r
- print("<br>");\r
- print("<b>*Bounding Box (bbox=) has not been defined</b><br>");\r
-print("Bounding box defines the viewing area within the map.<br>");\r
-print("The numbers are based on Long/Lat coordinates <br>bbox=minX(minimum point Longtitude),minY(minimum point Latitude),maxX,maxY<br> Eg. bbox=13,-13,31,5 will give you a map showing the Democratic Republic of Congo.<br>");\r
- print("bbox=-180,-90,180,90 is the full world view<br>");\r
- print("If Bounding box is not defined the map will default to the extent of the area data being requested (ad=)<br>");\r
- }\r
- if ($_REQUEST['ms']==null)\r
- {\r
- print("<br>");\r
- print("<b>Map Size (ms=) has not been defined</b></br>");\r
- print("This defines the size of the map that will be displayed.<br>It can be only a single number representing the width of the image. The height is that number divided by 2.<br>eg. ms=1000 will give you a width of 1000 and a height of 500.<br>");\r
- print("Or it can be ms=width,height where you assign both values.<br>");\r
- }\r
- if ($_REQUEST['as']==null)\r
- {\r
- print("<br>");\r
- print("<b>Area Style (as=) has not been defined</b><br>");\r
- print("This defines the Area Data called earlier and fills in the color and optionally the border size and color<br>"); \r
- print("Eg as=a:00ff00 will make the ad (area data) defined by a: the color green<br>");\r
- print("If you wish to do more then just color:<br>");\r
- print("Eg as=b:ff0000,0000ff,2 will make the ad (area data) defined by b: the color red (ff0000) and draw am outline with the width of 2 around its borders in the color blue (0000ff).<br>");\r
- print("If you want to assign only a value (without changing the color) for border you must still format it like this<br>");\r
- print("as=c:ffffff,0,4 This will make the ad (area data) defined by c: the white (ffffff) and draw am outline with the width of 4 around it.<br>");\r
- }\r
-print("<br><br>");\r
-print("<b>*</b> Items are optional<br>");\r
-print("<b>Please refer to the wiki for how to setup the service:</b><br>");\r
-print("<b><a href=\"http://dev.e-taxonomy.eu/trac/wiki/MapRestServiceApi#Areas\">Wiki</a></b><br>");\r
-}\r
-else\r
-{\r
-if (ereg(",",$layers))\r
-{\r
- \r
- $layers=explode(",",$layers);\r
- $ls=array();\r
- $ls_styles=array();\r
- foreach ($layers as $k=>$v)\r
- {\r
- switch ($v)\r
- { \r
- case ('earth'): \r
- $v="country_earth";\r
- \r
- $ls[]=$v;\r
- break;\r
- case ('tdwg1'): \r
- $v="topp:tdwg_level_1";\r
- $ls[]=$v;\r
- \r
- // array_push($ls,$v);\r
- break;\r
- case ('tdwg2'): \r
- $v="topp:tdwg_level_2";\r
- $ls[]=$v;\r
- \r
-// array_push($ls,$v);\r
- break;\r
- case ('tdwg3'): \r
- $v="topp:tdwg_level_3";\r
- $ls[]=$v;\r
- break;\r
- case ('tdwg4'): \r
- $v="topp:tdwg_level_4";\r
- $ls[]=$v;\r
- break;\r
- }\r
-\r
-//ƒ $v;\r
- }\r
-\r
-$styles_string="";\r
-\r
-foreach ($ls as $k=>$v)\r
-{\r
-\r
- $ls_string.=$v.",";\r
- $styles_string.="line,";\r
- }\r
- $ls_string=substr($ls_string,0,-1);\r
- $styles_string=substr($styles_string,0,-1);\r
- // $styles_string.=$ls[count($ls)-1];\r
- \r
-}\r
-else\r
-{\r
- switch ($layers)\r
- {\r
-\r
- case ('earth'): \r
- $ls_string="topp:country_earth";\r
- break;\r
- case ('e_prov'): \r
- $ls_string="topp:province_europe"; \r
- break;\r
- case ('tdwg1'): \r
- $ls_string="topp:tdwg_level_1";\r
- break;\r
- case ('tdwg2'): \r
- $ls_string="topp:tdwg_level_2";\r
- break;\r
- case ('tdwg3'): \r
- $ls_string="topp:tdwg_level_3";\r
- break;\r
- case ('tdwg4'): \r
- $ls_string="topp:tdwg_level_4";\r
- break;\r
- default:\r
- $ls_string=$layers;\r
- break;\r
- \r
- }\r
-\r
-\r
- $styles_string="line";\r
-\r
-}\r
-\r
-\r
-foreach ($ad as $k=>$v)\r
-{\r
-//tdwg3:a:PHI,SPA|b:ITA\r
-//var_dump($v);\r
-\r
-//$ad2=explode('|',$v);\r
-\r
-\r
-if ($_REQUEST['title'])\r
-{\r
-$title=$_REQUEST['title'];\r
-}\r
-//title=a:cultivated|b:forest\r
-$t=explode('|',$title);\r
-$title_array=array();\r
-\r
-foreach ($t as $k=>$v)\r
-{\r
-$title=explode(':',$v);\r
-$title_array[$title[0]]=$title[1];\r
-}\r
-\r
-if ($_REQUEST['label'])\r
-{\r
-$label=$_REQUEST['label'];\r
-}\r
-//$images=a,b:orange,green\r
-if ($_REQUEST['images_url'])\r
-{\r
-$images_url=$_REQUEST['images_url'];\r
-//$images_url="a,b:edit.csic.es/fitxers/hatch_images|c:edit.csic.es/fitxers/hatch_images";\r
-$images_url=explode('|',$images_url);\r
-\r
-}\r
-\r
-\r
-$symbols=$_REQUEST['symbols'];\r
-//$symbols="a,b:hatch_orange.gif|c:hatch_green.gif";\r
-$symbols=explode('|',$symbols);\r
-$symbols_url=array();\r
-foreach ($symbols as $k=>$v)\r
-{\r
- $symbols=explode(':',$v);\r
- $keys=explode(',',$symbols[0]);\r
- $get_v=explode(',',$symbols[1]);\r
-// var_dump ($get_v);\r
- if ($_REQUEST['images_url'])\r
-{\r
- foreach ($keys as $k=>$v)\r
- {\r
-\r
- $symbols_url[$v]['symbols']=$get_v[0];\r
- $symbols_url[$v]['size']=$get_v[1]; \r
- $symbols_url[$v]['format']=$get_v[2]; \r
- } \r
- }\r
-}\r
-if ($_REQUEST['images_url'])\r
-{\r
-foreach ($images_url as $k=>$v)\r
-{\r
-$images=explode(':',$v);\r
-//echo $images[0];\r
-$keys=explode(',',$images[0]);\r
-//var_dump($keys);\r
-foreach ($keys as $k=>$v)\r
-{\r
-$symbols_url[$v]['url']=$images[1]; \r
-}\r
-}\r
-}\r
-\r
-\r
-//$ad="tdwg2/d:Mexico,Caribbean||tdwg4/b:Chiapas,Oaxaca,Veracruz||tdwg3/a:MXC|b:MXE,MXG|c:MXS,MXT";\r
-\r
-$color=$_REQUEST['as'];\r
-\r
- $ms=$_REQUEST['ms'];\r
- if (ereg(",",$ms))\r
- {\r
- $ms=explode(',',$ms);\r
- $width=$ms[0];\r
- $height=$ms[1];\r
- }\r
- else \r
- {\r
- $width=$ms; \r
- $height=$width/2;\r
-\r
-\r
- };\r
- \r
-\r
-//var_dump($ls_string);\r
-\r
-$col=explode('|',$color);\r
-//no dóna error al haver-n'hi només un!\r
-$total_symbols=array();\r
-//$color="a:d7add2,AOOOOOF,2,dotted,cultivated|b:ab8dc9F";\r
-foreach ($col as $color)\r
-{\r
-\r
- $color=explode(':',$color);\r
- $symbols_key=$color[0];\r
- $symbols_val=$color[1];\r
- if (!ereg(",",$symbols_val))\r
- {\r
- //only fill area; others are default\r
- $total_symbols[$symbols_key][]=$symbols_val; \r
- } \r
- else \r
- {\r
- $s=explode(',',$symbols_val);\r
- foreach ($s as $k=>$v)\r
- {\r
- $total_symbols[$symbols_key][]=$v; \r
- }\r
- }\r
-// $total_symbols[$symbols_key]=$col_val;\r
-}\r
-//var_dump($total_symbols);\r
-//'a'-->array 'blue'\r
-foreach ($total_symbols as $k=>$v)\r
-{\r
- \r
-//foreach ($total_symbols as $k2=>$v2)\r
-//echo $total_symbols[$k][0]."<br>";\r
- //var_dump($total_symbols[$k]);\r
-//$color="a:d7add2,AOOOOOF,2,dotted|b:ab8dc9F"; \r
-\r
- for ($i=0;$i<5;$i++)\r
- {\r
- //echo $total_symbols[$k][$i]."<br>";\r
- switch ($i)\r
- {\r
- case 0:\r
-\r
-// if (array_key_exists($i,$total_symbols[$k])){ \r
- if($total_symbols[$k][$i]=="")\r
- {\r
- $total_symbols[$k][$i]="c5bec0";\r
- }\r
-//}\r
-\r
- case 1:\r
- if($total_symbols[$k][$i]=="")\r
- {\r
- $total_symbols[$k][$i]="10090b"; \r
- }\r
- case 2:\r
- if($total_symbols[$k][$i]=="")\r
- {\r
- $total_symbols[$k][$i]="0.5"; \r
- }\r
- /* case 3:\r
- if($total_symbols[$k][$i]=="")\r
- {\r
- $total_symbols[$k][$i]=""; \r
- }*/\r
- /* case 4:\r
- if($total_symbols[$k][$i]=="")\r
- {\r
- $total_symbols[$k][$i]="no_style";\r
- }*/\r
- case 3:\r
- if($total_symbols[$k][$i]=="")\r
- {\r
- $total_symbols[$k][$i]="no_style";\r
- }\r
- case 4:\r
- if($total_symbols[$k][$i]=="")\r
- {\r
- $total_symbols[$k][$i]="no_label";\r
- }\r
- }//fi switch\r
- } //fi for\r
- if (array_key_exists($k,$symbols_url))\r
- {\r
- $total_symbols[$k]['5']=$symbols_url[$k]['url'];\r
- $total_symbols[$k]['6']=$symbols_url[$k]['symbols'];\r
- $total_symbols[$k]['7']=$symbols_url[$k]['size'];\r
- $total_symbols[$k]['8']=$symbols_url[$k]['format'];\r
-\r
- }\r
- \r
-}//fir for each\r
-//var_dump($total_symbols);\r
-\r
-$tdwg=array();\r
-//ftheeten 21/02/2011\r
-$wms_field_array=array();\r
-foreach ($ad as $k=>$v)\r
-{\r
-$v=explode('|',$v);\r
-\r
-foreach ($v as $k=>$v)\r
-{\r
-if ($k==0)\r
-{\r
- \r
- $first_data=explode(':',$v);\r
- /*$first_layer=$first_data[0];\r
- $first_style=$first_data[1];\r
- $first_pol=$first_data[2];\r
- */\r
- //ftheeten 21/02/2011 (WMS field for non hardcded tdwg layers)\r
- $first_wms_field='';\r
- if(count($first_data)==4)\r
- {\r
- //print("WMS field found!!!!="); \r
- //print($first_data[1]);\r
- //print("!!!!");\r
- $first_layer=$first_data[0];\r
- $first_wms_field=$first_data[1];\r
- $first_style=$first_data[2];\r
- $first_pol=$first_data[3];\r
- }\r
- else\r
- {\r
- $first_layer=$first_data[0];\r
- $first_style=$first_data[1];\r
- $first_pol=$first_data[2];\r
- \r
- } \r
-//var_dump($v);\r
- if (!ereg(",",$first_pol))\r
- {\r
- \r
- $tdwg[$first_layer][$first_style]['zones']=$first_pol;\r
- //ftheeten 2010/02/21\r
- $wms_field_array[$first_layer]=$first_wms_field;\r
- \r
-// var_dump($tdwg[$first_layer][$first_style]['zones']);-->NCS\r
- \r
- }\r
- else\r
- {\r
- \r
- //ftheeten 2010/02/21\r
- $wms_field_array[$first_layer]=$first_wms_field;\r
- //tdwg4:c:Nicaragua,Chiapas,Oaxaca,Veracruz\r
- $l3=explode(',',$first_pol);\r
- foreach($l3 as $value)\r
- {\r
-\r
- $tdwg[$first_layer][$first_style]['zones'][]=$value;\r
- //echo $value."<br>";\r
- }\r
- }\r
-// var_dump($first_pol); \r
-} \r
-else //not the first data \r
- { \r
-\r
- //b:Mexico\r
- //si no trobem cap comma, (ex: b:IRQ )d:NA o c:NA|b:PI\r
- // a cada estil l'hi correspon només un país \r
-// var_dump($v);\r
- $data=explode(':',$v);\r
- \r
- //ftheeten 2010/02/21\r
- $wms_field_array[$first_layer]=$first_wms_field;\r
- if (!ereg(",",$data[1]))\r
- {\r
-\r
- $tdwg[$first_layer][$data[0]]['zones']=$data[1];\r
- // var_dump($tdwg[$first_layer]);\r
-//var_dump($data[1]);\r
- //$styles[$key]['zones'];\r
- // echo $val;\r
- }\r
- else\r
- {\r
- //c:Nicaragua,Chiapas,Oaxaca,Veracruz\r
- $l3=explode(',',$data[1]);\r
- foreach($l3 as $value)\r
- {\r
- $tdwg[$first_layer][$data[0]]['zones'][]=$value;\r
- //echo $value."<br>";\r
- }\r
- }\r
-\r
-}\r
-\r
-\r
-} \r
-\r
-}\r
-\r
-}\r
-\r
-//var_dump($tdwg);\r
-$tdwg3_val=array();\r
-$tdwg3_total=array();\r
-\r
-$legend="<gml>";\r
-foreach ($total_symbols as $k=>$v)\r
-{\r
-//var_dump($k); //a,b\r
-$legend.="<style><name>".$title_array[$k]."</name>";\r
-//$legend.="<style><name>".$total_symbols[$k][4]."</name>";\r
-\r
-$legend.="<label>".$k."</label>";\r
-\r
-if (array_key_exists($k['url'],$symbols_url))\r
-{\r
-\r
- \r
-$legend.="<hatching>http://".$symbols_url[$k]['url']."/".$symbols_url[$k]['symbols'].".".$symbols_url[$k]['format']."</hatching>";\r
-switch ($symbols_url[$k]['format'])\r
-{\r
- case ('gif'): $format='image/gif';break;\r
- case ('png'): $format='image/png';break;\r
- case ('jpeg'): $format='image/jpeg';break;\r
-}\r
-\r
-$legend.="<symbol_size>".$symbols_url[$k]['size']."</symbol_size>";\r
-$legend.="<symbol_format>".$format."</symbol_format>";\r
-//$xml.="<hatch_symbol>".."</hatch_symbol>";\r
-$legend.="<color>hatching</color>";\r
-}\r
-else { \r
-$legend.="<hatching>NO</hatching>";\r
-$legend.="<color>".$total_symbols[$k][0]."</color>";\r
-}\r
-\r
-\r
-$legend.="<stroke_color>".$total_symbols[$k][1]."</stroke_color>";\r
-$legend.="<stroke_width>".$total_symbols[$k][2]."</stroke_width>";\r
-switch ($total_symbols[$k][3])\r
-{\r
- case ('1_2'): $total_symbols[$k][3]="1 2 1 2";break;\r
- case ('1_4'): $total_symbols[$k][3]="1 4 1 4";break;\r
- case ('2_2'): $total_symbols[$k][3]="2 2 2 2";break;\r
- case ('2_4'): $total_symbols[$k][3]="2 4 2 4";break;\r
- case ('5_7'): $total_symbols[$k][3]="5 7 5 7";break;\r
- case ('10_5'): $total_symbols[$k][3]="10 5 10 5";break;\r
-}\r
-$legend.="<stroke_style>".$total_symbols[$k][3]."</stroke_style>";\r
-$legend.="</style>";\r
-}\r
-$legend.="</gml>";\r
-$legend_xml[]=$legend;\r
-//var_dump($legend_xml);\r
-//echo $legend;\r
- $p=simplexml_load_string($legend_xml[0]);\r
-$hatching=$p->style->hatching;\r
-$xsl = new XSLTProcessor;\r
-$xsl->setParameter( '', 'symbol', $hatching);\r
-$xsl->setParameter( '', 'layer', $layer);\r
-$xsl->setParameter( '', 'field', $field);\r
-$xsl->setParameter( '', 'label_field', $label_field);\r
-$style = realpath('areas_legend_no.xsl');\r
-$dom_new = new DOMDocument();\r
-$dom_new->load($style);\r
-$xsl->importStyleSheet($dom_new);\r
-$dom_new->loadXML($legend_xml[0]);\r
-$out = $xsl->transformToXML($dom_new);\r
-\r
-//$random = (rand()%300).".sld";\r
-//$leg_path_towrite=DIR_PLATFORM."/edit_wp5/fitxers/sld/$random";\r
-$leg_path_towrite="/var/www/synthesys/www/v1/sld/$random";\r
-$fp=fopen("$leg_path_towrite","w");\r
-$write=fwrite($fp,$out);\r
-//$leg_url="/var/www/synthesys/www/v1/sld/$random";\r
-$leg_url=LEGEND_URL."/".$random;\r
-\r
-$legs=array();\r
-foreach ($tdwg as $k=>$v)\r
-{\r
-\r
- $tmp_wms_field="default";\r
- foreach ($tdwg[$k] as $k2=>$v2)\r
- {\r
-\r
- //print("<=======WMS field=====>".$wms_field_array[$k]);\r
- //$tmp_wms_field=$wms_field_array[$k];\r
- //print("<=======other field=====>");\r
- $legs[$k2]=$k;\r
- //legs--->array(2) { ["b"]=> string(5) "tdwg1" ["a"]=> string(5) "tdwg3" } \r
- //LEGENDS!!!\r
- \r
- }\r
-\r
- \r
- $xml="<gml>";\r
- $pos_prefix = substr_count($k,$prefix_wms);\r
- $displayedLayer=$k;\r
- //print("pos=".$pos_prefix."=");\r
- if($pos_prefix===0) \r
- {\r
- //print("prefix");\r
- $displayedLayer=$prefix_wms.$k;\r
- }\r
- \r
- \r
- $xml.="<feature>".$displayedLayer."</feature>";\r
- \r
- foreach ($v as $style=>$value)\r
- {\r
- //print($style);\r
- //print_r($value);\r
- $xml.="<style><name>".$style."</name>";\r
- $xml.="<label>".$label."</label>";\r
- \r
- if (array_key_exists($style,$symbols_url))\r
- {\r
- //var_dump($symbols_url[$style]);\r
- \r
- $xml.="<hatching>http://".$symbols_url[$style]['url']."/".$symbols_url[$style]['symbols'].".".$symbols_url[$style]['format']."</hatching>";\r
- switch ($symbols_url[$style]['format'])\r
- {\r
- case ('gif'): $format='image/gif';break;\r
- case ('png'): $format='image/png';break;\r
- case ('jpeg'): $format='image/jpeg';break;\r
- }\r
- \r
- $xml.="<symbol_size>".$symbols_url[$style]['size']."</symbol_size>";\r
- $xml.="<symbol_format>".$format."</symbol_format>";\r
- //$xml.="<hatch_symbol>".."</hatch_symbol>";\r
- $xml.="<color>hatching</color>";\r
- }\r
- else \r
- { \r
- $xml.="<hatching>NO</hatching>";\r
- $xml.="<color>".$total_symbols[$style][0]."</color>";\r
- }\r
- \r
- $xml.="<stroke_color>".$total_symbols[$style][1]."</stroke_color>";\r
- $xml.="<stroke_width>".$total_symbols[$style][2]."</stroke_width>";\r
- switch ($total_symbols[$style][3])\r
- {\r
- case ('1_2'): $total_symbols[$style][3]="1 2 1 2";break;\r
- case ('1_4'): $total_symbols[$style][3]="1 4 1 4";break;\r
- case ('2_2'): $total_symbols[$style][3]="2 2 2 2";break;\r
- case ('2_4'): $total_symbols[$style][3]="2 4 2 4";break;\r
- case ('5_7'): $total_symbols[$style][3]="5 7 5 7";break;\r
- case ('10_5'): $total_symbols[$style][3]="10 5 10 5";break;\r
- }\r
- $xml.="<stroke_style>".$total_symbols[$style][3]."</stroke_style>";\r
- \r
- foreach ($value as $key=>$country)\r
- {\r
- \r
- if(!is_array($country))\r
- {\r
- //$tdwg[$k][count]\r
- $xml.="<country>".$country."</country>";\r
- \r
- $xml.="</style>";\r
- }\r
- else \r
- {\r
- \r
- foreach ($tdwg[$k][$style]['zones'] as $zones)\r
- {\r
- $xml.="<country>".$zones."</country>";\r
- }\r
- $xml.="</style>";\r
- } //fi foreach country\r
- }\r
- }\r
-$xml.="</gml>";\r
-//print($xml);\r
-$gmls[$k]=$xml;\r
-}\r
-//var_dump($gmls[$k]);\r
-\r
-if ($_REQUEST['bbox'])\r
- {\r
- $bbox=$_REQUEST['bbox'];\r
- }\r
- else\r
- {\r
- \r
- $conn = pg_connect(POSTGIS_CS);\r
- if (pg_ErrorMessage($conn)) \r
- { \r
- echo "<p><b>Ocurrio un error conectando a la base de datos: .</b></p>"; \r
- }\r
- else\r
- {\r
- \r
- \r
- $BBOX_sql="select extent(the_geom) from tdwgs where "; \r
- $c=0;\r
-//print("before switch");\r
- foreach ($tdwg as $k=>$v)\r
- {\r
-\r
-\r
- switch ($k)\r
- {\r
- \r
- //ftheeten 21/02/2011: $db_layers and $layer_sh seem unused\r
- //see also line 830\r
- case ('tdwg1'): $layer='topp:tdwg_level_1';$db_layer='tdwg_level_1';\r
- $field='code';\r
- //??????????????????????????????????????$label_field='zona';\r
- \r
- break;\r
- case ('tdwg2'): $layer='topp:tdwg_level_2';$db_layer='tdwg_level_2';\r
- $field='code';\r
- $label_field='code';\r
- break;\r
- case ('tdwg3'): $layer='topp:tdwg_level_3'; $db_layer='tdwg_level_3';\r
- $field='code';$layer_sh="TDWG 3";$label_field='code';\r
- break;\r
- case ('tdwg4'): $layer='topp:tdwg_level_4';$db_layer='tdwg_level_4';\r
- $field="code";\r
- $label_field='code';$layer_sh="TDWG 4";\r
- break;\r
- case ('e_w_0'): $layer='topp:europe_west_level_0';$db_layer='europe_west_level_0';\r
- $field="code";\r
- $label_field='code';$layer_sh="EURW 0";\r
- break;\r
- case ('e_w_1'): $layer='topp:europe_west_level_1';$db_layer='europe_west_level_1';\r
- $field="code";\r
- $label_field='code';$layer_sh="EURW 1";\r
- break;\r
- //ftheeten 21/01/2011 (for other layers than tdwg)\r
- default:\r
- $layer=$k;\r
- $label_field=$wms_field_array[$k];//'?';\r
- //print("layer=".$layer);\r
- break;\r
- }\r
-\r
-\r
- foreach($v as $key=>$val)\r
- {\r
-// var_dump($val);\r
- if ($c>0)\r
- {\r
- $BBOX_sql.="OR ";\r
- }\r
- if (count($val['zones'])==1)\r
- {\r
-\r
- $BBOX_sql.="code='".$val['zones']."' ";\r
-\r
- }else\r
- {\r
- $count=count($val['zones']);\r
- //$BBOX_sql.="select extent(the_geom) from tdwgs where code=";\r
-\r
-\r
- for ($i=0;$i<($count-1);$i++)\r
- {\r
- \r
- if ($i==0)\r
- {\r
- $BBOX_sql.="code='".$val['zones'][0]."'";\r
- }\r
- else\r
- {\r
- $BBOX_sql.=" OR code='".$val['zones'][$i]."'";\r
- }\r
- \r
- }\r
- // var_dump($tdwg2_total[1][2]);\r
- //QUINA CUTRADA!!!!!\r
-\r
- $BBOX_sql.=" OR code='".$val['zones'][$count-1]."'";\r
-\r
- }\r
- $c++;\r
- }\r
-\r
- }//end if bbox\r
- //echo $BBOX_sql;\r
-\r
- $postgis_result=pg_query($BBOX_sql);\r
-\r
- while ($row = pg_fetch_array($postgis_result, NULL, PGSQL_ASSOC))\r
- {\r
-\r
- $b=substr($row['extent'],4);\r
- // echo $height;\r
- $cadena=substr($b,0,-1); \r
- $bbox=str_replace(' ',',',$cadena);\r
- // echo "this is bbox".$bbox;\r
- }\r
- }\r
- \r
- }\r
- \r
-$recalculate="true";\r
-if ($_REQUEST['recalculate'])\r
-{\r
-if ($_REQUEST['recalculate']=='false')\r
-{\r
-$recalculate='false';\r
-}\r
-};\r
-\r
-\r
- if ($recalculate=="true")\r
- {\r
- $bbox2=explode(',',$bbox); \r
-\r
- $ratio_x=$bbox2[2]-$bbox2[0];\r
- $ratio_y=abs($bbox2[1]-$bbox2[3]);\r
- if (((($ratio_x)/$ratio_y))<2)\r
- {\r
- $to_change='x';\r
- // echo "yesss XXXX";\r
- //echo "ratio is ".(($ratio_x*2)/$ratio_y)."<br>";\r
- }\r
- else \r
- { \r
- $to_change='y';\r
- }\r
- switch ($to_change)\r
- {\r
-\r
- case 'x':\r
- $diff_x=abs((($ratio_x)/2 -$ratio_y)/2); \r
- $bbox2[0]=$bbox2[0]-$diff_x; \r
- $bbox2[2]=$bbox2[2]+$diff_x; \r
- $bbox=$bbox2[0].",".$bbox2[1].",".$bbox2[2].",".$bbox2[3];\r
- $ratio=$ratio_x/$ratio_y;\r
- $width = (int)($height+($ratio*30));\r
- break; \r
-\r
-\r
- case 'y':\r
-\r
- $diff_x=abs((($ratio_x -$ratio_y)/2)/2); \r
- if ($bbox2[1]<0)\r
- {\r
- //echo "bbox_1 negativa";\r
- $bbox2[1]=$bbox2[1]-$diff_x;\r
- if (abs($bbox2[1])>90)\r
- {\r
- $bbox2[1]=-90;\r
- }\r
- }\r
- else \r
- {\r
- $bbox2[1]=$bbox2[1]-$diff_x; \r
- if (abs($bbox2[1])>90)\r
- {\r
- $bbox2[1]=90; \r
- }\r
- };\r
- if ($bbox2[3]<0 )\r
- {\r
- $bbox2[3]=$bbox2[3]+$diff_x; \r
- if (abs($bbox2[3])>90)\r
- {\r
- $bbox2[3]=-90; \r
- }\r
- }\r
- else\r
- {\r
- $bbox2[3]=$bbox2[3]+$diff_x;\r
- if (abs($bbox2[3])>90)\r
- {\r
- $bbox2[3]=90; \r
- }\r
- }\r
- $bbox=$bbox2[0].",".$bbox2[1].",".$bbox2[2].",".$bbox2[3];\r
- break;\r
- }//fi switch\r
- }//fi recalculate=true\r
- else\r
- {\r
- //Recalculate =false (we try to put everything)\r
- //test added by ftheeten 2010/04/09 to avoid error message\r
- if($ratio_y!=0)\r
- {\r
- $ratio=$ratio_x/$ratio_y;\r
- }\r
- //echo $ratio;\r
-// $height = (int)($width / $ratio);\r
- \r
- }\r
- \r
-//echo $height;\r
-$url_list=array();\r
-$legend_list=array();\r
-$files_list=array();\r
-\r
-$c=count($gmls);\r
-\r
-global $bbox;\r
-if (isset($_REQUEST['foo']))\r
-{\r
- $json='foo({"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":['; \r
-}\r
-elseif (isset($_REQUEST['callback'])) //addition ftheeten 16/06/2010\r
-{\r
- $json=$_REQUEST['callback'].'({"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';\r
-}\r
-else\r
-{\r
-$json='[{"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';\r
-}\r
-\r
-\r
-\r
-\r
-$i=0;\r
-foreach ($gmls as $feature=>$v)\r
-{\r
-$i++;\r
-$dom_new = new DOMDocument();\r
-//print("-----------------------");\r
-//print_r($v);\r
-switch ($feature)\r
-{\r
-\r
-\r
- case ('tdwg1'): $layer='topp:tdwg_level_1';$db_layer='tdwg_level_1';\r
- $field='code';\r
- $label_field='zona';\r
- break;\r
- case ('tdwg2'): $layer='topp:tdwg_level_2';$db_layer='tdwg_level_2';\r
- $field='code';\r
- $label_field='code';\r
- break;\r
- case ('tdwg3'): $layer='topp:tdwg_level_3'; $db_layer='tdwg_level_3';\r
- $field='code';$layer_sh="TDWG 3";$label_field='code';\r
- break;\r
- case ('tdwg4'): $layer='topp:tdwg_level_4';$db_layer='tdwg_level_4';\r
- $field="code";\r
- $label_field='code';$layer_sh="TDWG 4";\r
- break;\r
- case ('e_w_0'): $layer='topp:europe_west_level_0';$db_layer='europe_west_level_0';\r
- $field="code";\r
- $label_field='code';$layer_sh="EURW 0";\r
- break;\r
- case ('e_w_1'): $layer='topp:europe_west_level_1';$db_layer='europe_west_level_1';\r
- $field="code";\r
- $label_field='code';$layer_sh="EURW 1";\r
- break;\r
- //ftheeten 21/02/2011\r
- default:\r
- $layer=$feature;\r
- $field=$wms_field_array[$feature];\r
- $label_field=$tmp_wms_field;\r
- //print("================================".$feature);\r
- //print("°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°".$label_field);\r
- break;\r
-}\r
-\r
-$p=simplexml_load_string($gmls[$feature]);\r
-$hatching=$p->style->hatching;\r
-$xsl = new XSLTProcessor;\r
-$xsl->setParameter( '', 'symbol', $hatching);\r
- $pos_prefix = substr_count($layer,$prefix_wms);\r
- $displayedLayer=$layer;\r
- //print("pos=".$pos_prefix."=");\r
- if($pos_prefix===0) \r
- {\r
- //print("prefix");\r
- $displayedLayer=$prefix_wms.$layer;\r
- }\r
-$xsl->setParameter( '', 'layer', $displayedLayer);\r
-$xsl->setParameter( '', 'field', $field);\r
-$xsl->setParameter( '', 'label_field', $label_field);\r
-$style = realpath('areas.xsl');\r
-$dom_new->load($style);\r
-$xsl->importStyleSheet($dom_new);\r
-$dom_new->loadXML($gmls[$feature]);\r
-$out = $xsl->transformToXML($dom_new);\r
-srand(time());\r
-//$random = (rand()%300).".sld";\r
-$path_towrite="/var/www/synthesys/www/v1/sld/".$feature."_".$random;\r
-//echo $path_towrite;\r
-$fp=fopen("$path_towrite","w");\r
-$write=fwrite($fp,$out);\r
-array_push($files_list,$path_towrite);\r
-//echo $out;\r
-\r
-\r
-\r
-$json.='{"tdwg": "' . $feature. '","session": "'.$sessionid.'",';\r
-\r
-//$json.='"sld": "' . $feature."_".$random.'"}';\r
-//correction ftheeten 09/04/2010\r
-$nameSLDFile=$feature."_".$random;\r
-$json.='"sld": "' . V1_SLD_URL."/".$nameSLDFile.'"}';\r
-\r
-\r
-if ($i < $c)\r
-{\r
-$json.=',';\r
-}\r
-//print("build URL");\r
-//print($layer);\r
-$url=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&TRANSPARENT=TRUE&SERVICE=WMS&EPSG=4326&layers=";\r
-$url.=$layer."&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height."&SLD=".V1_SLD_URL."/".$nameSLDFile;\r
-\r
-//print($url);\r
-\r
-//provinces,world\r
-\r
-\r
-\r
-\r
-global $height;\r
-\r
-\r
-\r
-\r
-$url_list[]=$url;\r
-$legend_list[]=$legend_url;\r
-}\r
-//correction ftheeten 09/04/2010\r
-$json.="]";\r
-\r
-\r
-$json.=",\"geoserver\": \"".URL_GEOSERVER."\"";\r
-$json.="}";\r
-if (isset($_REQUEST['foo']))\r
-{\r
-$json.=")"; \r
-}\r
-elseif(isset($_REQUEST['callback']))////addition ftheeten 16/06/2010\r
-{\r
-$json.=");"; \r
-}\r
-else\r
-{\r
-$json.="]"; \r
-}\r
-\r
-\r
-\r
-\r
-$img=$_REQUEST['img'];\r
-\r
-if ($img=='false')\r
-{\r
-//RMCA 09/04/2010\r
-\r
-//if ($img=='false')\r
-//{\r
- $headerText="Content-Type: application/json";\r
-\r
-//}\r
-\r
-header($headerText);
-header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
-header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé\r
-\r
-echo $json;\r
-}\r
-else\r
-{\r
- //print("else"); \r
- $random3="/var/www/synthesys/www/v1/img/".md5($_SERVER["REQUEST_URI"] )."bckgrd_layers.png";\r
-//ftheeten 22/02/2011 (sometimes bug if image previously exists)
- if(file_exists($random3))
- {
- unlink($random3);\r
- }
-\r
- \r
- if ($ls_string)\r
- {//print("in ls");\r
- $url2=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&TRANSPARENT=TRUE&SERVICE=WMS&EPSG=4326&layers=".$ls_string;\r
- $url2.="&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height."&STYLES=".$styles_string;\r
- //update ftheeten 25/06/2010\r
-//$url2=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&TRANSPARENT=TRUE&SERVICE=WMS&EPSG=4326&layers=".$ls_string;\r
- //$url2.="&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height;\r
- //print($url2); \r
- //print($random3); \r
- $cmd="convert '$url2' '$random3'";\r
- $output=shell_exec($cmd);\r
- //print($cmd);\r
- //print($output);\r
-\r
- } \r
- else\r
- {\r
- $c="convert convert -size '".$width."x".$height."' xc:transparent $random3";\r
-\r
- shell_exec($c);\r
- }\r
-\r
-//print(count($url_list)>1);\r
-\r
-\r
-\r
-if(count($url_list)>1)\r
-{\r
-\r
- $c="composite ";\r
- for ($i=0;$i<count($url_list);$i++)\r
- {\r
- $c.="'".$url_list[$i]."' ";\r
- }\r
- $c.="'$random2' ";\r
-\r
-shell_exec($c);\r
-$c="composite '$random3' '$random2' '$random2'";\r
-\r
-shell_exec($c);\r
-//print($c);\r
-}\r
-else\r
-{\r
-//SLDs over normal layers\r
-$c="composite '$url_list[0]' '$random3' '$random2'";\r
-//print("3");\r
-shell_exec($c);\r
-\r
-\r
-}\r
-\r
-\r
-//print($c);\r
-//print("----------------");\r
-\r
-\r
-$headerText="Content-Type: image/png";\r
-\r
-//part ftheeten 12/08/2010 external WMS\r
- //print("dev");\r
- $flagExternalWMS=false;\r
- $extWFURLArray=array();\r
- $extWFSURL="";\r
- \r
- if(isset($_REQUEST['externalwms'])===true&&isset($_REQUEST['externalwmslayer'])===true)\r
- {\r
- $flagExternalWMS=true;\r
- $versionWFS=NULL;\r
- if(isset($_REQUEST['externalwmsversion'])===true)\r
- {\r
- $versionWFS=$_REQUEST['externalwmsversion'];\r
- }\r
- $externalWMSStyle="";\r
- if(isset($_REQUEST['externalwmsstyle'])===true)\r
- {\r
- $externalWMSStyle=$_REQUEST['externalwmsstyle'];\r
- }\r
- if(strlen($_REQUEST['externalwms'])>0&&strlen($_REQUEST['externalwmslayer'])>0)\r
- {\r
- $versionWFS=NULL;\r
- if(isset($_REQUEST['externalwmsversion'])===true)\r
- {\r
- $versionWFS=$_REQUEST['externalwmsversion'];\r
- }\r
- $externalWMSStyle=NULL;\r
- if(isset($_REQUEST['externalwmsstyle'])===true)\r
- {\r
- $externalWMSStyle=$_REQUEST['externalwmsstyle'];\r
- }\r
- if(strpos($_REQUEST['externalwms'],"|")>0)\r
- {\r
- $arrayWFS=array();\r
- \r
- $arrayWFS=f_checkWMSParams($arrayWFS,$_REQUEST['externalwms'],"URL","[\|]","[:]");\r
- $arrayWFS=f_checkWMSParams($arrayWFS,$versionWFS,"VERSION","[\|]","[:]");\r
- $arrayWFS=f_checkWMSParams($arrayWFS,$_REQUEST['externalwmslayer'],"LAYERS","[\|]","[:]");\r
- $arrayWFS=f_checkWMSParams($arrayWFS,$externalWMSStyle,"STYLES","[\|]","[:]");\r
- //print("!!!arrayWFS=>");\r
- //print_r($arrayWFS);\r
- foreach($arrayWFS as $key=>$arrayWFSitem)\r
- {\r
- $extWFSURLArray[]=f_writeKeyWFSURL($arrayWFS,$key,$bbox,$width,$height);\r
- }\r
- \r
- }\r
- else\r
- {\r
- $externalWMS=$_REQUEST['externalwms'];\r
- $externalWMSLayer=$_REQUEST['externalwmslayer'];\r
- \r
-\r
- $extWFSURL=f_autoFillWMSURL($externalWMS,$externalWMSVersion,$externalWMSLayer,$externalWMSStyle,$bbox,$width,$height);\r
- $extWFSURLArray[]=$extWFSURL;\r
- }\r
- }\r
-\r
- }\r
- if($flagExternalWMS===true)\r
- {\r
- $cptLayers=count($extWFSURLArray);\r
- for($i=$cptLayers-1;$i>=0;$i--)\r
- {\r
- $c="composite '$random2' '$extWFSURLArray[$i]' '$random2'";\r
- shell_exec($c);\r
- } \r
- \r
- }\r
-\r
-\r
-if ($leg=='1')\r
-{\r
- $legend_url=URL_GEOSERVER."/GetLegendGraphic?SERVICE=WMS&VERSION=1.1.1&format=image/png&TRANSPARENT=TRUE&WIDTH=64&HEIGHT=36&";\r
- $legend_url.="layer=topp:tdwg_level_3&LEGEND_OPTIONS=forceLabels:on;fontStyle:italic;fontSize:12&SLD=".$leg_url;\r
- \r
-$mlp=$_REQUEST['mlp'];\r
-switch ($mlp)\r
-{\r
-case ('1'):\r
- {\r
-\r
-$com="convert +append '$legend_url' '$random2' '$random2'"; //-->exterior ul \r
-break;\r
- }\r
-case ('2'):\r
- {\r
-$com="convert -background white -append '$legend_url' '$random2' '$random2' "; //2\r
- break;\r
- }\r
- case ('3'):\r
- {\r
-$com="convert -background white +append '$random2' '$legend_url' '$random2' "; //4\r
-break;\r
- }\r
- \r
-case ('4'):\r
- {\r
- \r
-$com="convert -background white -append '$random2' '$legend_url' '$random2'"; //7\r
-break;\r
- }\r
-case ('5'):\r
- { \r
- $com="composite -gravity SouthEast '$legend_url' '$random2' '$random2'";//9\r
-break;\r
-} \r
-case ('6'):\r
- { \r
- $com="composite -gravity SouthWest '$legend_url' '$random2' '$random2'";//10\r
-break;\r
-} \r
-case ('7'):\r
- { \r
- $com="composite -gravity NorthEast '$legend_url' '$random2' '$random2'";//11\r
-break;\r
-} \r
-case ('8'):\r
- { \r
- $com="composite -gravity NorthWest '$legend_url' '$random2' '$random2'";//12\r
-break;\r
-} \r
-}\r
-shell_exec($com);\r
-}\r
-\r
-\r
-//RMCA 09/04/2010\r
-header($headerText);
-header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
-header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé\r
-\r
-\r
-\r
-\r
- \r
-readfile($random2);\r
-unlink($random2);\r
-\r
-}\r
-clearstatcache();\r
-$time=time();\r
-\r
-\r
-/* commented by ftheeten 2010/04/13 (to have sld still available) -> should be repalced by a Cron job*/\r
-while($entry = $d->read()) { \r
- if ($entry!= "." && $entry!= "..") { \r
-\r
- $f_last_modified = filemtime($sld_dir."/".$entry);\r
-\r
-if ($time-$f_last_modified >400)\r
-{\r
-unlink($sld_dir."/".$entry);\r
-} \r
-\r
- } \r
-} \r
-\r
-\r
-while($entry = $e->read()) { \r
- if ($entry!= "." && $entry!= "..") { \r
-\r
- $f_last_modified = filemtime($img_dir."/".$entry);\r
-\r
-if ($time-$f_last_modified >400000)\r
-{\r
-unlink($img_dir."/".$entry);\r
-} \r
-\r
- } \r
-} \r
-\r
-\r
-\r
-//$d->close(); \r
-$e->close();\r
-}\r
-function f_autoFillWMSURL($p_externalWMS, $p_externalWMSVersion, $p_externalWMSLayers, $p_externalWMSStyles, $p_bbox, $p_width, $p_height)\r
-{\r
- //print("functionCalled");\r
- if(isset($p_externalWMSVersion)===false)\r
- {\r
- $p_externalWMSVersion='1.1.1';\r
- }\r
- if(isset($p_externalWMSStyles)===false)\r
- {\r
- $p_externalWMSStyles='';\r
- }\r
- $extWFSURL=$p_externalWMS."?REQUEST=GetMap";\r
- $extWFSURL.="&TRANSPARENT=TRUE";\r
- $extWFSURL.="&SERVICE=WMS";\r
- $extWFSURL.="&VERSION=".$p_externalWMSVersion;\r
- $extWFSURL.="&SRS=EPSG:4326";\r
- $extWFSURL.="&LAYERS=".$p_externalWMSLayers;\r
- $extWFSURL.="&STYLES=".$p_externalWMSStyles;\r
- $extWFSURL.="&FORMAT=image/png";\r
- $extWFSURL.="&bbox=".$p_bbox."&WIDTH=".$p_width."&HEIGHT=".$p_height;\r
- $extWFURLArray[]=$extWFSURL; \r
- return $extWFSURL;\r
-}\r
-\r
-\r
-function f_checkWMSParams($p_arrayWMS, $p_param, $p_nameParam, $p_delimiter1, $p_delimiter2)\r
-{\r
- if(isset($p_param)===true)\r
- { \r
- $splitParam=preg_split($p_delimiter1,$p_param);\r
- if(isset($splitParam)===true)\r
- {\r
- if(count($splitParam)>0)\r
- {\r
- foreach($splitParam as $paramItem)\r
- {\r
- if(isset($paramItem)===true)\r
- {\r
- $splitParam2=preg_split($p_delimiter2,$paramItem);\r
- if(count($splitParam2)==2)\r
- {\r
- $p_arrayWMS[$splitParam2[0]][$p_nameParam]=$splitParam2[1];\r
- }\r
- else if(count($splitParam2)==3&&($p_delimiter2==":"||$p_delimiter2=="[:]"))\r
- {\r
- $p_arrayWMS[$splitParam2[0]][$p_nameParam]=$splitParam2[1].':'.$splitParam2[2];\r
- }\r
- }\r
- } \r
- } \r
- }\r
- }\r
- return $p_arrayWMS;\r
-}\r
-\r
-function f_writeKeyWFSURL($p_arrayWMS, $p_key, $p_bbox, $p_width, $p_height)\r
-{\r
- return f_autoFillWMSURL($p_arrayWMS[$p_key]["URL"],$p_arrayWMS[$p_key]["VERSION"],$p_arrayWMS[$p_key]["LAYERS"],$p_arrayWMS[$p_key]["STYLES"] ,$p_bbox, $p_width, $p_height);\r
-}\r
-\r
-?>\r