--- /dev/null
+<?php\r
+\r
+\r
+function fct_rest_gen(\r
+//1\r
+$p_uri, \r
+//2\r
+$p_legend, \r
+//3\r
+$p_bck_layer, \r
+//4\r
+$p_areas_data, \r
+//5\r
+$p_areas_style, \r
+//6\r
+$p_size, \r
+//7\r
+$p_bbox, \r
+//8\r
+$p_occ_data, \r
+//9\r
+$p_occ_style, \r
+//10\r
+$p_title, \r
+//11\r
+$p_label, \r
+//12\r
+$p_img_url, \r
+//13\r
+$p_symbols, \r
+//14\r
+$p_recalculate, \r
+//15\r
+$p_foo, \r
+//16\r
+$p_callback, \r
+//17\r
+$p_img, \r
+//18\r
+$p_externalwms, \r
+//19\r
+$p_externalwms_layer, \r
+//20\r
+$p_externalwms_versions, \r
+//21\r
+$p_externalwms_style, \r
+//22\r
+$p_externalwms_filter, \r
+//23\r
+$p_mlp, \r
+//24\r
+$p_grayscale, \r
+//25\r
+$p_jsoncreatefile, \r
+//26\r
+$p_raster, \r
+//27\r
+$p_wms_foreground,\r
+//28\r
+$p_dest_epsg_projection,\r
+//29\r
+$p_no_header_for_tests=FALSE\r
+)\r
+{\r
+\r
+//print($p_wms_foreground);\r
+//print($p_externalwms_filter);\r
+ //ftheeten 2013/01/11\r
+ //error_reporting(0);\r
+\r
+ //ob_start();\r
+ $conn = pg_pconnect(POSTGIS_CS);\r
+ $flagError=false;\r
+ $errorMessages=array();\r
+ \r
+ $flagDisplayPoints=false;\r
+ //ftheeten 24/01/2013\r
+ $arrayWMSIdxURLs=parseWMS($p_externalwms, $p_externalwms_versions, $p_externalwms_filter);\r
+ $convertedCoordinates=array();\r
+ //test ftheeten 14/03/2011\r
+ //$path_towrite_persistent_sld="/var/www/synthesys/www/v1/sld_persistent/";\r
+ //$url_persistent_sld='http://edit.br.fgov.be/synthesys/www/v1/sld_persistent';\r
+ //topp: used in the name of the SLD file to address the layer to color\r
+ \r
+ $prefix_wms="topp:";\r
+ \r
+ $ls_string=NULL;\r
+ $title_external=NULL;\r
+ $title=NULL;\r
+ $layer=NULL;\r
+ $field=NULL;\r
+ $label_field=NULL;\r
+ $label=NULL; \r
+ $random=md5($p_uri .get_current_user()).".sld";\r
+ $sessionid=$random;\r
+ $legend_url=NULL;\r
+ $sld_url=NULL;\r
+ $geo=NULL;\r
+ $ratio_y=NULL;\r
+ $leg=$p_legend;\r
+ \r
+ \r
+ //bug 16/04/2010 (pb with imagemagick package in filename?)\r
+ $image_radical=md5($p_uri .get_current_user());\r
+ $image_file=$image_radical."_layers.png";\r
+ \r
+ $random2=V1_IMG.$image_file;\r
+ \r
+ $random2_www=V1_URL."/".$image_file;\r
+ $random2_legend=V1_IMG.$image_radical."_legend.png";\r
+ //ftheeten 22/02/2011 (sometimes bug if image previously exists)\r
+ if(file_exists($random2))\r
+ {\r
+ unlink($random2);\r
+ \r
+ }\r
+ \r
+ if(file_exists($random2_legend))\r
+ {\r
+ unlink($random2_legend);\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ \r
+ //print($random2);\r
+ \r
+ \r
+ \r
+ $sld_dir = "/var/www/synthesys/www/v1/sld"; \r
+ \r
+ $img_dir = "/var/www/synthesys/www/v1/img";\r
+ \r
+ \r
+ \r
+ $d = dir($sld_dir);\r
+ \r
+ $e = dir($img_dir);\r
+ \r
+ \r
+ \r
+ $ad=$p_areas_data;\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ //ftheeten 14/04/2011\r
+ \r
+ //$layers=$p_bck_layer;\r
+ $layers_tmp=$p_bck_layer;\r
+ $arrayTableStyles=associate_layer_to_style($layers_tmp,',',':', TRUE);\r
+ $layers=array_keys($arrayTableStyles);\r
+ //$layers=implode(',',array_keys($arrayTableStyles));\r
+ \r
+ if ( ($p_areas_data ==null && $p_occ_data==null )or ($p_areas_style == null && $p_occ_style==null) or $p_size == null)\r
+ \r
+ {\r
+ \r
+ print("<br>");\r
+ \r
+ print("<br>");\r
+ \r
+ print("<b>The URL must be missing some values, or they have been wrongly defined.</b><br>");\r
+ \r
+ print("<br>");\r
+ \r
+ print("<b>Make sure you use the following syntax when adding the variables</b><br>");\r
+ \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
+ \r
+ if ($layers==null)\r
+ \r
+ {\r
+ \r
+ print("<br>");\r
+ \r
+ print("<b>*Layers (l=) has not been defined</b><br>");\r
+ \r
+ print("This defines the background layer.<br>");\r
+ \r
+ print("Eg. l=earth will give your map a backgound of the full earth map with only country data.<br>");\r
+ \r
+ print("where l=tdwg4 will make the earth your background as well but with the tdwg layer 4 areas defined.<br>");\r
+ \r
+ print("The only options are earth, tdwg1, tdwg2, tdwg3, tdwg4.<br>");\r
+ \r
+ }\r
+ \r
+ if ($p_areas_data==null)\r
+ \r
+ {\r
+ \r
+ print("<br>");\r
+ \r
+ print("<b>Area Data (ad=) has not been defined</b><br>");\r
+ \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
+ \r
+ print("You can have information form more then one layer defined by using || as a seperator<br>");\r
+ \r
+ print("Eg ad=layer1 name:a:area code1|b:area code2||layer2 name:c:area code1|d:area code2<br>");\r
+ \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
+ }\r
+ \r
+ if ($p_bbox==null)\r
+ \r
+ {\r
+ \r
+ print("<br>");\r
+ \r
+ print("<b>*Bounding Box (bbox=) has not been defined</b><br>");\r
+ \r
+ print("Bounding box defines the viewing area within the map.<br>");\r
+ \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
+ \r
+ print("bbox=-180,-90,180,90 is the full world view<br>");\r
+ \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
+ }\r
+ \r
+ if ($p_size==null)\r
+ \r
+ {\r
+ \r
+ print("<br>");\r
+ \r
+ print("<b>Map Size (ms=) has not been defined</b></br>");\r
+ \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
+ \r
+ print("Or it can be ms=width,height where you assign both values.<br>");\r
+ \r
+ }\r
+ \r
+ if ($p_areas_style==null)\r
+ \r
+ {\r
+ \r
+ print("<br>");\r
+ \r
+ print("<b>Area Style (as=) has not been defined</b><br>");\r
+ \r
+ print("This defines the Area Data called earlier and fills in the color and optionally the border size and color<br>"); \r
+ \r
+ print("Eg as=a:00ff00 will make the ad (area data) defined by a: the color green<br>");\r
+ \r
+ print("If you wish to do more then just color:<br>");\r
+ \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
+ \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
+ \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
+ }\r
+ \r
+ print("<br><br>");\r
+ \r
+ print("<b>*</b> Items are optional<br>");\r
+ \r
+ print("<b>Please refer to the wiki for how to setup the service:</b><br>");\r
+ \r
+ print("<b><a href=\"http://dev.e-taxonomy.eu/trac/wiki/MapRestServiceApi#Areas\">Wiki</a></b><br>");\r
+ \r
+ }\r
+ \r
+ else\r
+ \r
+ {\r
+ //point part\r
+ \r
+ $od=$p_occ_data;\r
+ \r
+ $points=explode('||',$od);\r
+ \r
+ $geodata=array();\r
+ \r
+ \r
+ \r
+ foreach ($points as $k=>$v)\r
+ \r
+ {\r
+ \r
+ $specie=explode(":",$v);\r
+ \r
+ //id of the recordset\r
+ \r
+ $id=$specie[0];\r
+ \r
+ //geodata of each recordset\r
+ if(isset($specie[1]))\r
+ {\r
+ $geo=explode('|',$specie[1]);\r
+ foreach ($geo as $key=>$value)\r
+ \r
+ {\r
+ $geos=explode(',',$value);\r
+\r
+ if(count($geos)>=2&&strlen($geos[0])>0&&strlen($geos[1])>0)\r
+ {\r
+ \r
+ \r
+ $geodata[$id]['geodata']['lon'][]=$geos[1]; \r
+ $geodata[$id]['geodata']['lat'][]=$geos[0];\r
+ }\r
+ \r
+ \r
+ }\r
+ }\r
+ \r
+ \r
+ }\r
+\r
+\r
+ \r
+ \r
+ \r
+ //$os="1:c/f78755/10/Onthophagus semipunctatus|2:s/64cb48/15/Euoniticellus pallipes|3:sq/090b0a/30/Onthophagus joannae";\r
+ \r
+ \r
+ \r
+ $os=$p_occ_style;\r
+ \r
+ $sp=explode('|',$os);\r
+ \r
+ $species=array();\r
+ \r
+ \r
+ foreach ($sp as $k=>$v)\r
+ \r
+ {\r
+ \r
+ if(strlen($v)>0)\r
+ \r
+ {\r
+ \r
+ $sym=explode(':',$v);\r
+ \r
+ \r
+ \r
+ $specie_id=$sym[0]; \r
+ \r
+ $symbologies=explode('/',$sym[1]);\r
+ if(count($symbologies)<=4)\r
+ {\r
+ \r
+ $geodata[$specie_id]['symbol']=$symbologies[0];\r
+ \r
+ $geodata[$specie_id]['color']=$symbologies[1];\r
+ \r
+ $geodata[$specie_id]['size']=$symbologies[2];\r
+ \r
+ $geodata[$specie_id]['legend']=$symbologies[3];\r
+ }\r
+ else//ftheeten 03/02/2011 (transparency, thickness, outline color)\r
+ {\r
+ $geodata[$specie_id]['symbol']=$symbologies[0];\r
+ \r
+ $geodata[$specie_id]['color']=$symbologies[1];\r
+ \r
+ $geodata[$specie_id]['size']=$symbologies[2];\r
+\r
+ $geodata[$specie_id]['outlinecolor']=$symbologies[3];\r
+\r
+ $geodata[$specie_id]['linewidth']=$symbologies[4];\r
+\r
+ $geodata[$specie_id]['opacity']=$symbologies[5];\r
+ \r
+ $geodata[$specie_id]['legend']=$symbologies[6];\r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ if(count($geodata)>0)\r
+ {\r
+ $flagDisplayPoints=true;\r
+ }\r
+ if($flagDisplayPoints===true)\r
+ {\r
+ //print("insert"); \r
+ $sqls=array();\r
+ $random=md5($p_uri );\r
+ foreach ($geodata as $key=>$val)\r
+ \r
+ { \r
+\r
+ //ftheeten march 2013\r
+ \r
+ \r
+ if(isset($geodata[$key]['geodata']['lat'] )===true)\r
+ \r
+ {\r
+ $sqls[]="delete from rest_points where userid='".$random."' AND id=".$key.";";\r
+ \r
+ foreach ($geodata[$key]['geodata']['lat'] as $k=>$v)\r
+ \r
+ {\r
+ $long=$geodata[$key]['geodata']['lon'][$k];\r
+ if(is_numeric($geodata[$key]['geodata']['lat'][$k])===true&& is_numeric($geodata[$key]['geodata']['lon'][$k])===true)\r
+ {\r
+ \r
+ $sql="insert into rest_points(userid,id,the_geom,label,timestamp_point) values('$random',".$key.",";\r
+ \r
+ $sql.="GeometryFromText('POINT(".$long." ";\r
+ \r
+ $sql.=$v;\r
+ \r
+ $sql.=")',4326),'".$geodata[$key]['legend']."',";\r
+ \r
+ $sql.=" current_timestamp);";\r
+ \r
+ $sqls[]=$sql;\r
+\r
+ //ftheeten\r
+ if(isset($p_dest_epsg_projection)&&strtolower($p_img)=='false')\r
+ {\r
+ if(strlen($p_dest_epsg_projection)>0)\r
+ {\r
+ $convProj=convertPointProjection($conn, $v,$long, "4326", $p_dest_epsg_projection);\r
+ $convertedCoordinates[]=$convProj;\r
+ }\r
+ }\r
+\r
+ }\r
+ else//error coordinates not numeric (ftheeten March 2013)\r
+ {\r
+ $flagError=true;\r
+ $errorMessages[]=EXC_001;\r
+ handle_exception_rest($errorMessages);\r
+ return;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ $sql_total="";\r
+ \r
+ \r
+ \r
+ foreach ($sqls as $k=>$v)\r
+ \r
+ {\r
+ \r
+ // echo $v."<br>";\r
+ \r
+ $sql_total.=$v;\r
+ \r
+ }\r
+ \r
+ \r
+ //print($sql_total);\r
+ $conn = pg_pconnect(POSTGIS_CS);\r
+ \r
+ if (pg_ErrorMessage($conn))\r
+ \r
+ { \r
+ \r
+ echo "<p><b>Ocurrio un error conectando a la base de datos: .</b></p>"; \r
+ \r
+ }\r
+ \r
+ else\r
+ \r
+ {\r
+ \r
+ // echo $sql_total;\r
+ \r
+ pg_exec($sql_total); \r
+ }\r
+ $xml="<gml>";\r
+ \r
+ $xml.="<feature>Species definition</feature>";\r
+ \r
+ \r
+ \r
+ foreach ($geodata as $k=>$v)\r
+ \r
+ {\r
+ \r
+ switch ($geodata[$k]['symbol'])\r
+ \r
+ {\r
+ \r
+ case('c'):$geodata[$k]['symbol']="Circle"; break; \r
+ \r
+ case('s'):$geodata[$k]['symbol']="Star"; break;\r
+ \r
+ case('sq'):$geodata[$k]['symbol']="Square"; break;\r
+ \r
+ }\r
+ \r
+ //echo $geodata[$k]['legend']."<br>";\r
+ \r
+ $xml.="<specie>";\r
+ \r
+ $xml.="<id>".$k."</id>";\r
+ \r
+ $xml.="<name>".$geodata[$k]['legend']."</name>";\r
+ \r
+ $xml.="<style>";\r
+ \r
+ $xml.="<color>".$geodata[$k]['color']."</color>";\r
+ \r
+ $xml.="<symbol>".$geodata[$k]['symbol']."</symbol>";\r
+ \r
+ $xml.="<size>".$geodata[$k]['size']."</size>";\r
+ \r
+ if(isset($geodata[$k]['outlinecolor']))\r
+ {\r
+ $xml.="<outlinecolor>".$geodata[$k]['outlinecolor']."</outlinecolor>";\r
+ }\r
+\r
+ if(isset($geodata[$k]['linewidth']))\r
+ {\r
+ $xml.="<linewidth>".$geodata[$k]['linewidth']."</linewidth>";\r
+ }\r
+ \r
+\r
+ if(isset($geodata[$k]['opacity']))\r
+ {\r
+ $xml.="<opacity>".$geodata[$k]['opacity']."</opacity>";\r
+ }\r
+ \r
+ $xml.="</style>";\r
+ \r
+ $xml.="</specie>"; \r
+ \r
+ }\r
+ \r
+ $xml.="</gml>";\r
+ \r
+ //echo $xml;\r
+ \r
+ $dom_new = new DOMDocument();\r
+ \r
+ $xsl = new XSLTProcessor;\r
+ \r
+ $xsl->setParameter( '', 'userid', $random);\r
+ \r
+ $style = realpath(dirname(__FILE__)."/".'points_transparent.xsl');\r
+ \r
+ $dom_new->load($style);\r
+ \r
+ $xsl->importStyleSheet($dom_new);\r
+ \r
+ $dom_new->loadXML($xml);\r
+ \r
+ $out = $xsl->transformToXML($dom_new);\r
+ \r
+ \r
+ \r
+ $path_towrite="/var/www/synthesys/www/v1/sld/point_".$random.".sld";\r
+ \r
+ //print($path_towrite);\r
+ \r
+ $fp=fopen("$path_towrite","w+");\r
+ \r
+ $write=fwrite($fp,$out);\r
+ \r
+ }\r
+ \r
+ //end point part\r
+ \r
+ \r
+ //ftheeten 2011/04/13\r
+ $arrayBackgroundStyle=array();\r
+ \r
+ \r
+ if (count($layers)>0)//(ereg(",",$layers))\r
+ \r
+ {\r
+ //print("case1");\r
+ \r
+ \r
+ \r
+ //$layers=explode(",",$layers);\r
+ \r
+ $ls=array();\r
+ \r
+ $ls_styles=array();\r
+ $ls_types=array();\r
+ $i=0;\r
+ \r
+ //foreach ($layers as $k=>$v)\r
+ //print($layers);\r
+ //print_r($arrayTableStyles);\r
+ $v2="";\r
+ \r
+ foreach($layers as $v) \r
+ {\r
+ \r
+ $k=$i; \r
+ switch ($v)\r
+ \r
+ { \r
+ \r
+ case ('earth'): \r
+ \r
+ $v2="country_earth";\r
+ \r
+ \r
+ \r
+ $ls[]=$v2;\r
+ if(strlen($arrayTableStyles[$v]['value'])==0)\r
+ {\r
+ $ls_styles[]='line';\r
+ }\r
+ else\r
+ {\r
+ $ls_styles[]=$arrayTableStyles[$v]['value'];\r
+ }\r
+ $ls_types[]=$arrayTableStyles[$v]['type'];\r
+ \r
+ \r
+ break;\r
+ \r
+ case ('tdwg1'): \r
+ \r
+ $v2="topp:tdwg_level_1";\r
+ \r
+ //end loop array key in symbol$ls[]=$v2;\r
+ \r
+ if(strlen($arrayTableStyles[$v]['value'])==0)\r
+ {\r
+ $ls_styles[]='line';\r
+ }\r
+ else\r
+ {\r
+ $ls_styles[]=$arrayTableStyles[$v]['value'];\r
+ }\r
+ $ls_types[]=$arrayTableStyles[$v]['type'];\r
+ \r
+ \r
+ // array_push($ls,$v);\r
+ \r
+ break;\r
+ \r
+ case ('tdwg2'): \r
+ \r
+ $v2="topp:tdwg_level_2";\r
+ \r
+ $ls[]=$v2;\r
+ \r
+ if(strlen($arrayTableStyles[$v]['value'])==0)\r
+ {\r
+ $ls_styles[]='line';\r
+ }\r
+ else\r
+ {\r
+ $ls_styles[]=$arrayTableStyles[$v]['value'];\r
+ }\r
+ $ls_types[]=$arrayTableStyles[$v]['type'];\r
+ \r
+ \r
+ // array_push($ls,$v);\r
+ \r
+ break;\r
+ \r
+ case ('tdwg3'): \r
+ \r
+ $v2="topp:tdwg_level_3";\r
+ \r
+ $ls[]=$v2;\r
+ if(strlen($arrayTableStyles[$v]['value'])==0)\r
+ {\r
+ $ls_styles[]='line';\r
+ }\r
+ else\r
+ {\r
+ $ls_styles[]=$arrayTableStyles[$v]['value'];\r
+ }\r
+ $ls_types[]=$arrayTableStyles[$v]['type'];\r
+ \r
+ \r
+ break;\r
+ \r
+ case ('tdwg4'): \r
+ \r
+ $v2="topp:tdwg_level_4";\r
+ \r
+ $ls[]=$v2;\r
+ if(strlen($arrayTableStyles[$v]['value'])==0)\r
+ {\r
+ $ls_styles[]='line';\r
+ }\r
+ else\r
+ {\r
+ $ls_styles[]=$arrayTableStyles[$v]['value'];\r
+ }\r
+ $ls_types[]=$arrayTableStyles[$v]['type'];\r
+ \r
+ \r
+ break;\r
+ default:\r
+ \r
+ $ls[]=$v;\r
+ \r
+ if(strlen($arrayTableStyles[$v]['value'])==0)\r
+ {\r
+ $ls_styles[]='';\r
+ }\r
+ else\r
+ {\r
+ $ls_styles[]=$arrayTableStyles[$v]['value'];\r
+ }\r
+ $ls_types[]=$arrayTableStyles[$v]['type'];\r
+ \r
+ break;\r
+ \r
+ }\r
+ \r
+ $i++;\r
+ \r
+ //Æ? $v;\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ $styles_string="";\r
+ \r
+ //ftheeten april 2011 \r
+ $i=0;\r
+ \r
+ foreach ($ls as $k=>$v)\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ $ls_string.=$v.",";\r
+ \r
+ //ftheeten\r
+ \r
+ //$styles_string.="line,";\r
+ $styles_string.=$ls_styles[$i];\r
+ $arrayBackgroundStyle[$i]['name']=$v;\r
+\r
+ $arrayBackgroundStyle[$i]['style']=$ls_styles[$i];\r
+ $arrayBackgroundStyle[$i]['type']=$ls_types[$i];\r
+\r
+ if(array_key_exists($v,$arrayWMSIdxURLs)===TRUE)\r
+ {\r
+ //print("key exists for $v");\r
+ $arrayBackgroundStyle[$i]['external_wms']="yes";\r
+\r
+ $arrayBackgroundStyle[$i]['external_wms_url']=$arrayWMSIdxURLs[$v]["url"];\r
+ $arrayBackgroundStyle[$i]['external_wms_version']=$arrayWMSIdxURLs[$v]["version"];\r
+ $arrayBackgroundStyle[$i]['external_wms_filter']=$arrayWMSIdxURLs[$v]["filter"];\r
+ }\r
+ else\r
+ {\r
+ $arrayBackgroundStyle[$i]['external_wms']="no";\r
+ }\r
+ $i++;\r
+ \r
+ }\r
+ \r
+ $ls_string=substr($ls_string,0,-1);\r
+ \r
+ $styles_string=substr($styles_string,0,-1);\r
+ \r
+ // $styles_string.=$ls[count($ls)-1];\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ else\r
+ \r
+ {\r
+ //print("case 2");\r
+ $type_string="";\r
+ \r
+ switch ($layers[0])\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ case ('earth'): \r
+ \r
+ $ls_string="topp:country_earth";\r
+ //ftheeten 13/04/2011 \r
+ if(strlen($arrayTableStyles[$layers[0]]['value'])==0)\r
+ {\r
+ $styles_string="line";\r
+ }\r
+ else\r
+ {\r
+ $style_string=$arrayTableStyles[$layers[0]]['value'];\r
+ }\r
+ $type_string=$arrayTableStyles[$layers[0]]['type'];\r
+ \r
+ \r
+ break;\r
+ \r
+ case ('e_prov'): \r
+ \r
+ $ls_string="topp:province_europe";\r
+ //ftheeten 13/04/2011 \r
+ if(strlen($arrayTableStyles[$layers[0]]['value'])==0)\r
+ {\r
+ $styles_string="line";\r
+ }\r
+ else\r
+ {\r
+ $style_string=$arrayTableStyles[$layers[0]]['value'];\r
+ }\r
+ $type_string=$arrayTableStyles[$layers[0]]['type'];\r
+ \r
+ \r
+ \r
+ break;\r
+ \r
+ case ('tdwg1'): \r
+ \r
+ $ls_string="topp:tdwg_level_1";\r
+ //ftheeten 13/04/2011 \r
+ if(strlen($arrayTableStyles[$layers[0]]['value'])==0)\r
+ {\r
+ $styles_string="line";\r
+ }\r
+ else\r
+ {\r
+ $style_string=$arrayTableStyles[$layers[0]]['value'];\r
+ }\r
+ $type_string=$arrayTableStyles[$layers[0]]['type'];\r
+ \r
+ \r
+ break;\r
+ \r
+ case ('tdwg2'): \r
+ \r
+ $ls_string="topp:tdwg_level_2";\r
+ //ftheeten 13/04/2011 \r
+ if(strlen($arrayTableStyles[$layers[0]]['value'])==0)\r
+ {\r
+ $styles_string="line";\r
+ }\r
+ else\r
+ {\r
+ $style_string=$arrayTableStyles[$layers[0]]['value'];\r
+ }\r
+ $type_string=$arrayTableStyles[$layers[0]]['type'];\r
+ \r
+ break;\r
+ \r
+ case ('tdwg3'): \r
+ \r
+ $ls_string="topp:tdwg_level_3";\r
+ //ftheeten 13/04/2011 \r
+ if(strlen($arrayTableStyles[$layers[0]]['value'])==0)\r
+ {\r
+ $styles_string="line";\r
+ }\r
+ else\r
+ {\r
+ $style_string=$arrayTableStyles[$layers[0]]['value'];\r
+ }\r
+ $type_string=$arrayTableStyles[$layers[0]]['type'];\r
+ \r
+ \r
+ \r
+ break;\r
+ \r
+ case ('tdwg4'): \r
+ \r
+ $ls_string="topp:tdwg_level_4";\r
+ //ftheeten 13/04/2011 \r
+ if(strlen($arrayTableStyles[$layers[0]]['value'])==0)\r
+ {\r
+ $styles_string="line";\r
+ }\r
+ else\r
+ {\r
+ $style_string=$arrayTableStyles[$layers[0]]['value'];\r
+ }\r
+ $type_string=$arrayTableStyles[$layers[0]]['type'];\r
+ \r
+ \r
+ break;\r
+ \r
+ default:\r
+ \r
+ $ls_string=$layers;\r
+ //ftheeten 13/04/2011 \r
+ if(strlen($arrayTableStyles[$layers[0]]['value'])==0)\r
+ {\r
+ $styles_string="";\r
+ }\r
+ else\r
+ {\r
+ $style_string=$arrayTableStyles[$layers[0]]['value'];\r
+ }\r
+ $type_string=$arrayTableStyles[$layers[0]]['type'];\r
+ \r
+ \r
+ break;\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ \r
+ //comment out ftheeten 13/04/2011\r
+ \r
+ //$styles_string="line";\r
+ $arrayBackgroundStyle[0]['name']=$ls_string;\r
+ $arrayBackgroundStyle[0]['style']=$styles_string;\r
+ $arrayBackgroundStyle[0]['type']=$type_string;\r
+ if(array_key_exists($v,$arrayWMSIdxURLs)===TRUE)\r
+ {\r
+ \r
+ $arrayBackgroundStyle[$i]['external_wms']="yes";\r
+ $arrayBackgroundStyle[$i]['external_wms_url']=$arrayWMSIdxURLs[$v]["url"];\r
+ $arrayBackgroundStyle[$i]['external_wms_version']=$arrayWMSIdxURLs[$v]["version"];\r
+ $arrayBackgroundStyle[$i]['external_wms_filter']=$arrayWMSIdxURLs[$v]["filter"]; \r
+ }\r
+ else\r
+ {\r
+ $arrayBackgroundStyle[$i]['external_wms']="no";\r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ //print_r($arrayWMSIdxURLs);\r
+ //print_r($arrayBackgroundStyle);\r
+ \r
+ $ad=explode('||',$ad);\r
+ //print_r($ad);\r
+ \r
+ \r
+ foreach ($ad as $k=>$v)\r
+ {// loop ad\r
+ \r
+ //tdwg3:a:PHI,SPA|b:ITA\r
+ \r
+ \r
+ if ($p_title)\r
+ \r
+ {//if title\r
+ \r
+ $title_external=$p_title;\r
+ \r
+ }//if title\r
+ \r
+ //title=a:cultivated|b:forest\r
+ \r
+ $t=explode('|',$title_external);\r
+ \r
+ $title_array=array();\r
+ \r
+ \r
+ \r
+ foreach ($t as $k=>$v)\r
+ \r
+ {//loop t\r
+ \r
+ $title=explode(':',$v);\r
+ if(isset($title[1]))\r
+ {\r
+ $title_array[$title[0]]=$title[1];\r
+ }\r
+ else\r
+ {\r
+ $title_array[$title[0]]=NULL;\r
+ }\r
+ }//loop t\r
+ \r
+ \r
+ \r
+ if ($p_label)\r
+ \r
+ {//if label\r
+ \r
+ $label=$p_label;\r
+ \r
+ }// if label\r
+ \r
+ \r
+ //$images=a,b:orange,green\r
+ \r
+ if ($p_img_url)\r
+ \r
+ {//if images_url\r
+ \r
+ $images_url=$p_img_url;\r
+ \r
+ //$images_url="a,b:edit.csic.es/fitxers/hatch_images|c:edit.csic.es/fitxers/hatch_images";\r
+ \r
+ $images_url=explode('|',$images_url);\r
+ \r
+ \r
+ \r
+ }//image_url\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ $symbols=$p_symbols;\r
+ \r
+ //$symbols="a,b:hatch_orange.gif|c:hatch_green.gif";\r
+ \r
+ $symbols=explode('|',$symbols);\r
+ \r
+ $symbols_url=array();\r
+ \r
+ foreach ($symbols as $k=>$v)\r
+ \r
+ {//for symbols\r
+ \r
+ $symbols=explode(':',$v);\r
+ \r
+ $keys=explode(',',$symbols[0]);\r
+ if(isset($symbols[1]))\r
+ {\r
+ $get_v=explode(',',$symbols[1]);\r
+ }\r
+ else\r
+ {\r
+ $get_v=array();\r
+ }\r
+ // var_dump ($get_v);\r
+ \r
+ if ($p_img_url)\r
+ \r
+ {//if images urls\r
+ \r
+ foreach ($keys as $k=>$v)\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ $symbols_url[$v]['symbols']=$get_v[0];\r
+ \r
+ $symbols_url[$v]['size']=$get_v[1]; \r
+ \r
+ $symbols_url[$v]['format']=$get_v[2]; \r
+ \r
+ } \r
+ \r
+ }\r
+ \r
+ }// for symbols\r
+ \r
+ if ($p_img_url)\r
+ \r
+ {//if images url\r
+ \r
+ foreach ($images_url as $k=>$v)\r
+ \r
+ {\r
+ \r
+ $images=explode(':',$v);\r
+ \r
+ //echo $images[0];\r
+ \r
+ $keys=explode(',',$images[0]);\r
+ \r
+ //var_dump($keys);\r
+ \r
+ foreach ($keys as $k=>$v)\r
+ \r
+ {\r
+ \r
+ $symbols_url[$v]['url']=$images[1]; \r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }//end if images_url\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
+ \r
+ \r
+ $color=$p_areas_style;\r
+ \r
+ \r
+ \r
+ $ms=$p_size;\r
+ \r
+ if (@ereg(",",$ms))\r
+ {\r
+ \r
+ $ms=explode(',',$ms);\r
+ \r
+ $width=$ms[0];\r
+ \r
+ $height=$ms[1];\r
+ \r
+ }\r
+ \r
+ else \r
+ \r
+ {\r
+ \r
+ $width=$ms; \r
+ \r
+ $height=$width/2;\r
+ \r
+ };\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ //var_dump($ls_string);\r
+ \r
+ \r
+ \r
+ $col=explode('|',$color);\r
+ \r
+ //no dóna error al haver-n'hi només un!\r
+ \r
+ $total_symbols=array();\r
+ \r
+ //$color="a:d7add2,AOOOOOF,2,dotted,cultivated|b:ab8dc9F";\r
+ \r
+ foreach ($col as $color)\r
+ \r
+ {//loop col\r
+ //ftheeten 14/03/2011\r
+ if(strpos($color,'http://')===false)\r
+ {\r
+ $color=explode(':',$color);\r
+ \r
+ $symbols_key=$color[0];\r
+ \r
+ $symbols_val=$color[1];\r
+ }\r
+ else\r
+ {\r
+ $color=explode(':',$color,2);\r
+ \r
+ $symbols_key=$color[0];\r
+ \r
+ $symbols_val=$color[1];\r
+ }\r
+ \r
+ \r
+ \r
+ /*$color=explode(':',$color);\r
+ \r
+ $symbols_key=$color[0];\r
+ \r
+ $symbols_val=$color[1];\r
+ */\r
+ \r
+ if (!@ereg(",",$symbols_val))\r
+ \r
+ {\r
+ \r
+ //only fill area; others are default\r
+ \r
+ $total_symbols[$symbols_key][]=$symbols_val; \r
+ \r
+ } \r
+ \r
+ else \r
+ \r
+ {\r
+ \r
+ $s=explode(',',$symbols_val);\r
+ \r
+ foreach ($s as $k=>$v)\r
+ \r
+ {\r
+ \r
+ $total_symbols[$symbols_key][]=$v; \r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ // $total_symbols[$symbols_key]=$col_val;\r
+ \r
+ }//loop col\r
+ \r
+ //var_dump($total_symbols);\r
+ \r
+ //'a'-->array 'blue'\r
+ \r
+ \r
+ foreach ($total_symbols as $k=>$v)\r
+ \r
+ {//loop total symbols\r
+ \r
+ \r
+ \r
+ //foreach ($total_symbols as $k2=>$v2)\r
+ \r
+ //echo $total_symbols[$k][0]."<br>";\r
+ \r
+ //var_dump($total_symbols[$k]);\r
+ \r
+ //$color="a:d7add2,AOOOOOF,2,dotted|b:ab8dc9F"; \r
+ \r
+ \r
+ \r
+ for ($i=0;$i<5;$i++)\r
+ \r
+ {// for loop\r
+ \r
+ //echo $total_symbols[$k][$i]."<br>";\r
+ \r
+ switch ($i)\r
+ \r
+ {\r
+ \r
+ \r
+ case 0:\r
+ \r
+ \r
+ \r
+ // if (array_key_exists($i,$total_symbols[$k])){ \r
+ \r
+ if($total_symbols[$k][$i]=="")\r
+ \r
+ {\r
+ \r
+ $total_symbols[$k][$i]="c5bec0";\r
+ \r
+ }\r
+ \r
+ //}\r
+ \r
+ break;\r
+ \r
+ case 1:\r
+ if(isset($total_symbols[$k][$i]))\r
+ {\r
+ if($total_symbols[$k][$i]=="")\r
+ \r
+ {\r
+ \r
+ $total_symbols[$k][$i]="10090b"; \r
+ \r
+ }\r
+ }\r
+ break;\r
+ case 2:\r
+ \r
+ if(isset($total_symbols[$k][$i])===FALSE||$total_symbols[$k][$i]=="")\r
+ \r
+ {\r
+ \r
+ $total_symbols[$k][$i]="0.5"; \r
+ \r
+ }\r
+ break;\r
+ /* case 3:\r
+ \r
+ if($total_symbols[$k][$i]=="")\r
+ \r
+ {\r
+ \r
+ $total_symbols[$k][$i]=""; \r
+ \r
+ }*/\r
+ \r
+ /* case 4:\r
+ \r
+ if($total_symbols[$k][$i]=="")\r
+ \r
+ {\r
+ \r
+ $total_symbols[$k][$i]="no_style";\r
+ \r
+ }*/\r
+ \r
+ case 3:\r
+ \r
+ if(isset($total_symbols[$k][$i])===FALSE||$total_symbols[$k][$i]=="")\r
+ \r
+ {\r
+ \r
+ $total_symbols[$k][$i]="no_style";\r
+ \r
+ }\r
+ break;\r
+ case 4:\r
+ \r
+ if(isset($total_symbols[$k][$i])===FALSE||$total_symbols[$k][$i]=="")\r
+ \r
+ {\r
+ \r
+ $total_symbols[$k][$i]="no_label";\r
+ \r
+ }\r
+ break;\r
+ \r
+ }//fi switch\r
+ \r
+ } //fi for\r
+ \r
+ if (array_key_exists($k,$symbols_url))\r
+ \r
+ {\r
+ \r
+ $total_symbols[$k]['5']=$symbols_url[$k]['url'];\r
+ \r
+ $total_symbols[$k]['6']=$symbols_url[$k]['symbols'];\r
+ \r
+ $total_symbols[$k]['7']=$symbols_url[$k]['size'];\r
+ \r
+ $total_symbols[$k]['8']=$symbols_url[$k]['format'];\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }//for total symbols\r
+ \r
+ //var_dump($total_symbols);\r
+ \r
+ \r
+ \r
+ $tdwg=array();\r
+ \r
+ //ftheeten 21/02/2011\r
+ \r
+ $wms_field_array=array();\r
+ \r
+ foreach ($ad as $k=>$v)\r
+ \r
+ {//for ad\r
+ \r
+ $v=explode('|',$v);\r
+ \r
+\r
+ foreach ($v as $k=>$v)\r
+ \r
+ {//for v\r
+ \r
+ if ($k==0)\r
+ \r
+ {//if k\r
+ \r
+ \r
+ \r
+ $first_data=explode(':',$v);\r
+ \r
+ /*$first_layer=$first_data[0];\r
+\r
+ \r
+ $first_style=$first_data[1];\r
+ \r
+ $first_pol=$first_data[2];\r
+ \r
+ */\r
+ \r
+ //ftheeten 21/02/2011 (WMS field for non hardcded tdwg layers)\r
+ \r
+ $first_wms_field='';\r
+ \r
+ if(count($first_data)==4)\r
+ \r
+ {//loop first data\r
+ \r
+ //print("WMS field found!!!!="); \r
+ \r
+ //print($first_data[1]);\r
+ \r
+ //print("!!!!");\r
+ \r
+ $first_layer=$first_data[0];\r
+ \r
+ $first_wms_field=$first_data[1];\r
+ \r
+ $first_style=$first_data[2];\r
+ \r
+ $first_pol=$first_data[3];\r
+ \r
+ }//loop first data\r
+ \r
+ else\r
+ \r
+ {//loop first data\r
+ \r
+ $first_layer=$first_data[0];\r
+ \r
+ $first_style=$first_data[1];\r
+ \r
+ $first_pol=$first_data[2];\r
+ \r
+ \r
+ \r
+ }//loop first data \r
+ \r
+ //var_dump($v);\r
+ \r
+ \r
+ if (!@ereg(",",$first_pol))\r
+ \r
+ {//loop first pol\r
+ \r
+ \r
+ \r
+ $tdwg[$first_layer][$first_style]['zones']=$first_pol;\r
+ \r
+ //ftheeten 2010/02/21\r
+ \r
+ $wms_field_array[$first_layer]=$first_wms_field;\r
+ \r
+ \r
+ \r
+ }//loop first pol\r
+ \r
+ else\r
+ \r
+ {//loop first pol\r
+ \r
+ //ftheeten 2010/02/21\r
+ \r
+ $wms_field_array[$first_layer]=$first_wms_field;\r
+ \r
+ //tdwg4:c:Nicaragua,Chiapas,Oaxaca,Veracruz\r
+ \r
+ $l3=explode(',',$first_pol);\r
+ \r
+ foreach($l3 as $value)\r
+ \r
+ {\r
+ \r
+ $tdwg[$first_layer][$first_style]['zones'][]=$value;\r
+ \r
+ //echo $value."<br>";\r
+ \r
+ }\r
+ \r
+ }//loop first pol\r
+ \r
+ \r
+ \r
+ }//if k \r
+ \r
+ else //not the first data \r
+ \r
+ {//if k \r
+ \r
+ //b:Mexico\r
+ \r
+ //si no trobem cap comma, (ex: b:IRQ )d:NA o c:NA|b:PI\r
+ \r
+ // a cada estil l'hi correspon només un paÃs \r
+ \r
+ // var_dump($v);\r
+ \r
+ $data=explode(':',$v);\r
+ \r
+ //ftheeten 2010/02/21\r
+ \r
+ $wms_field_array[$first_layer]=$first_wms_field;\r
+ \r
+ if (!@ereg(",",$data[1]))\r
+ \r
+ {//if data 1\r
+ \r
+ \r
+ $tdwg[$first_layer][$data[0]]['zones']=$data[1];\r
+ \r
+ // var_dump($tdwg[$first_layer]);\r
+ \r
+ //var_dump($data[1]);\r
+ \r
+ //$styles[$key]['zones'];\r
+ \r
+ // echo $val;\r
+ \r
+ }//if data 1\r
+ \r
+ else\r
+ \r
+ {//if data 1\r
+ \r
+ //c:Nicaragua,Chiapas,Oaxaca,Veracruz\r
+ \r
+ $l3=explode(',',$data[1]);\r
+ \r
+ foreach($l3 as $value)\r
+ \r
+ {//$l3\r
+ \r
+ $tdwg[$first_layer][$data[0]]['zones'][]=$value;\r
+ //echo $value."<br>";\r
+ \r
+ }//$l3\r
+ \r
+ }//if data 1\r
+ \r
+ \r
+ \r
+ }//if k\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ }//for v \r
+ \r
+ \r
+ \r
+ }//for ad (line 566)\r
+ \r
+ \r
+ \r
+ }//for ad \r
+ \r
+ \r
+ \r
+ \r
+ $tdwg3_val=array();\r
+ \r
+ $tdwg3_total=array();\r
+ \r
+ \r
+ \r
+ $legend="<gml>";\r
+ \r
+ foreach ($total_symbols as $k=>$v)\r
+ \r
+ {//loop total symbols in gml\r
+ if(isset($title_array[$k]))\r
+ {\r
+ if(strlen($title_array[$k])>0)\r
+ {\r
+ \r
+ //var_dump($k); //a,b\r
+ \r
+ $legend.="<style><name>".$title_array[$k]."</name>";\r
+ \r
+ //$legend.="<style><name>".$total_symbols[$k][4]."</name>";\r
+ \r
+ \r
+ \r
+ $legend.="<label>".$k."</label>";\r
+ \r
+ \r
+ \r
+ if (array_key_exists($k['url'],$symbols_url))\r
+ \r
+ {//if key in symbol\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ $legend.="<hatching>http://".$symbols_url[$k]['url']."/".$symbols_url[$k]['symbols'].".".$symbols_url[$k]['format']."</hatching>";\r
+ \r
+ switch ($symbols_url[$k]['format'])\r
+ \r
+ {\r
+ \r
+ case ('gif'): $format='image/gif';break;\r
+ \r
+ case ('png'): $format='image/png';break;\r
+ \r
+ case ('jpeg'): $format='image/jpeg';break;\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ $legend.="<symbol_size>".$symbols_url[$k]['size']."</symbol_size>";\r
+ \r
+ $legend.="<symbol_format>".$format."</symbol_format>";\r
+ \r
+ //$xml.="<hatch_symbol>".."</hatch_symbol>";\r
+ \r
+ $legend.="<color>hatching</color>";\r
+ \r
+ }//end if array key in symbol\r
+ \r
+ else \r
+ { // if array key in symbol\r
+ \r
+ $legend.="<hatching>NO</hatching>";\r
+ \r
+ $legend.="<color>".$total_symbols[$k][0]."</color>";\r
+ \r
+ } //end array key in symbol\r
+\r
+\r
+\r
+\r
+\r
+\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ $legend.="<stroke_color>".$total_symbols[$k][1]."</stroke_color>";\r
+ \r
+ $legend.="<stroke_width>".$total_symbols[$k][2]."</stroke_width>";\r
+ \r
+ switch ($total_symbols[$k][3])\r
+ \r
+ {// switch total symbols\r
+ \r
+ case ('1_2'): \r
+ $total_symbols[$k][3]="1 2 1 2";\r
+ break;\r
+ \r
+ case ('1_4'): \r
+ $total_symbols[$k][3]="1 4 1 4";\r
+ break;\r
+ \r
+ case ('2_2'): \r
+ $total_symbols[$k][3]="2 2 2 2";\r
+ break;\r
+ \r
+ case ('2_4'):\r
+ $total_symbols[$k][3]="2 4 2 4";\r
+ break;\r
+ \r
+ case ('5_7'): \r
+ $total_symbols[$k][3]="5 7 5 7";\r
+ break;\r
+ \r
+ case ('10_5'): \r
+ $total_symbols[$k][3]="10 5 10 5";\r
+ break;\r
+ \r
+ }//end switch\r
+ \r
+ $legend.="<stroke_style>".$total_symbols[$k][3]."</stroke_style>";\r
+ \r
+ $legend.="</style>";\r
+ }\r
+ }\r
+ \r
+ }//end loop symbols in gml\r
+ \r
+ \r
+ $legend.="</gml>";\r
+ \r
+ $legend_xml[]=$legend;\r
+ \r
+ //var_dump($legend_xml);\r
+\r
+ \r
+ //echo $legend;\r
+ \r
+ $p=simplexml_load_string($legend_xml[0]);\r
+ \r
+ $hatching=$p->style->hatching;\r
+ \r
+ $xsl = new XSLTProcessor;\r
+ \r
+ $xsl->setParameter( '', 'symbol', $hatching);\r
+ \r
+ $xsl->setParameter( '', 'layer', $layer);\r
+ \r
+ $xsl->setParameter( '', 'field', $field);\r
+ \r
+ $xsl->setParameter( '', 'label_field', $label_field);\r
+ \r
+ $style = realpath(dirname(__FILE__)."/".'areas_legend_no.xsl');\r
+ \r
+ $dom_new = new DOMDocument();\r
+ \r
+ $dom_new->load($style);\r
+ \r
+ $xsl->importStyleSheet($dom_new);\r
+ \r
+ $dom_new->loadXML($legend_xml[0]);\r
+ \r
+ $out = $xsl->transformToXML($dom_new);\r
+ \r
+ \r
+ \r
+ //$random = (rand()%300).".sld";\r
+ \r
+ //$leg_path_towrite=DIR_PLATFORM."/edit_wp5/fitxers/sld/$random";\r
+ \r
+ $leg_path_towrite="/var/www/synthesys/www/v1/sld/$random";\r
+ \r
+ $fp=fopen("$leg_path_towrite","w+");\r
+ \r
+ $write=fwrite($fp,$out);\r
+ \r
+ //$leg_url="/var/www/synthesys/www/v1/sld/$random";\r
+ \r
+ $leg_url=LEGEND_URL."/".$random;\r
+ \r
+ \r
+ \r
+ $legs=array();\r
+ //print_r($tdwg);\r
+ foreach ($tdwg as $k=>$v)\r
+ \r
+ {//loop tdwg 1\r
+ \r
+ $tmp_wms_field="default";\r
+ \r
+ foreach ($tdwg[$k] as $k2=>$v2)\r
+ \r
+ {\r
+ \r
+ \r
+ $legs[$k2]=$k;\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ $xml="<gml>";\r
+ \r
+ $pos_prefix = substr_count($k,$prefix_wms);\r
+ \r
+ $displayedLayer=$k;\r
+ \r
+ //print("pos=".$pos_prefix."=");\r
+ \r
+ if($pos_prefix===0) \r
+ \r
+ {\r
+ \r
+ //print("prefix");\r
+ \r
+ $displayedLayer=$prefix_wms.$k;\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ $xml.="<feature>".$displayedLayer."</feature>";\r
+ \r
+ \r
+ \r
+ foreach ($v as $style=>$value)\r
+ \r
+ {// loop style=>value\r
+ \r
+ \r
+ $xml.="<style><name>".$style."</name>";\r
+ \r
+ $xml.="<label>".$label."</label>";\r
+ \r
+ \r
+ \r
+ if (array_key_exists($style,$symbols_url))\r
+ \r
+ {//if key exists\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
+ \r
+ switch ($symbols_url[$style]['format'])\r
+ \r
+ {\r
+ \r
+ case ('gif'): \r
+ $format='image/gif';\r
+ break;\r
+ \r
+ case ('png'): \r
+ $format='image/png';\r
+ break;\r
+ \r
+ case ('jpeg'): \r
+ $format='image/jpeg';\r
+ break;\r
+ \r
+ }\r
+ \r
+ $xml.="<symbol_size>".$symbols_url[$style]['size']."</symbol_size>";\r
+ \r
+ $xml.="<symbol_format>".$format."</symbol_format>";\r
+ \r
+ //$xml.="<hatch_symbol>".."</hatch_symbol>";\r
+ \r
+ $xml.="<color>hatching</color>";\r
+ \r
+ }//if key exists\r
+ \r
+ else \r
+ \r
+ {//if key not exists \r
+ \r
+ $xml.="<hatching>NO</hatching>";\r
+ \r
+ $xml.="<color>".$total_symbols[$style][0]."</color>";\r
+ \r
+ }//if key not exists\r
+ \r
+ $xml.="<stroke_color>".$total_symbols[$style][1]."</stroke_color>";\r
+ \r
+ $xml.="<stroke_width>".$total_symbols[$style][2]."</stroke_width>";\r
+ \r
+ switch ($total_symbols[$style][3])\r
+ \r
+ {//loop total symbols\r
+ \r
+ case ('1_2'): \r
+ $total_symbols[$style][3]="1 2 1 2";\r
+ break;\r
+ \r
+ case ('1_4'): \r
+ $total_symbols[$style][3]="1 4 1 4";\r
+ break;\r
+ \r
+ case ('2_2'): \r
+ $total_symbols[$style][3]="2 2 2 2";\r
+ break;\r
+ \r
+ case ('2_4'): \r
+ $total_symbols[$style][3]="2 4 2 4";\r
+ break;\r
+ \r
+ case ('5_7'): \r
+ $total_symbols[$style][3]="5 7 5 7";\r
+ break;\r
+ \r
+ case ('10_5'): \r
+ $total_symbols[$style][3]="10 5 10 5";\r
+ break;\r
+ \r
+ }//loop total symbols\r
+ \r
+ $xml.="<stroke_style>".$total_symbols[$style][3]."</stroke_style>";\r
+ \r
+ \r
+ \r
+ foreach ($value as $key=>$country)\r
+ \r
+ {//loop key=> country\r
+ \r
+ if(!is_array($country))\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ $xml.="<country>".$country."</country>";\r
+ \r
+ $xml.="</style>";\r
+ \r
+ }\r
+ \r
+ else \r
+ \r
+ {\r
+ \r
+ foreach ($tdwg[$k][$style]['zones'] as $zones)\r
+ \r
+ {\r
+ \r
+ $xml.="<country>".$zones."</country>";\r
+ \r
+ }\r
+ \r
+ $xml.="</style>";\r
+ \r
+ } //fi foreach country\r
+ \r
+ }// end loop key country\r
+ \r
+ }//loop styles=>values\r
+ \r
+ $xml.="</gml>";\r
+ \r
+ //print($xml);\r
+ \r
+ $gmls[$k]=$xml;\r
+ \r
+ }//end loop tdwg 1\r
+ \r
+ //var_dump($gmls[$k]);\r
+ \r
+ \r
+ \r
+ if ($p_bbox)\r
+ \r
+ {\r
+ \r
+ $bbox=$p_bbox;\r
+ \r
+ \r
+ }\r
+ \r
+ else\r
+ \r
+ {\r
+\r
+ //ftheeten 24/01/2013\r
+ \r
+ //$conn = pg_pconnect(POSTGIS_CS);\r
+ \r
+ if (pg_ErrorMessage($conn)) \r
+ \r
+ { \r
+ \r
+ echo "<p><b>Ocurrio un error conectando a la base de datos: .</b></p>"; \r
+ \r
+ }\r
+ \r
+ else\r
+ { //else BBOX SQL\r
+\r
+ $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from tdwgs where "; \r
+ $c=0;\r
+ //print("before switch");\r
+ $flagUserTable=false;\r
+ $ibbox=0;\r
+ foreach ($tdwg as $k=>$v)\r
+ {//BEGIN FOR GENERATE SQL BBOX\r
+ //if added ftheeten 25/01/2013\r
+ if(array_key_exists($k,$arrayWMSIdxURLs)===FALSE)\r
+ {\r
+ $c=0;\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
+ if($ibbox==0)\r
+ {\r
+ $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from ".$db_layer." where ";\r
+ }\r
+ elseif($ibbox>0)\r
+ {\r
+ $BBOX_sql.="UNION ALL select extent(the_geom) as g from ".$db_layer." where ";\r
+ //print("toto");\r
+ } \r
+ $ibbox++; \r
+ break;\r
+ case ('tdwg2'): $layer='topp:tdwg_level_2';$db_layer='tdwg_level_2';\r
+ $field='code';\r
+ $label_field='code';\r
+ if($ibbox==0)\r
+ {\r
+ $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from ".$db_layer." where ";\r
+ }\r
+ elseif($ibbox>0)\r
+ {\r
+ $BBOX_sql.="UNION ALL select extent(the_geom) as g from ".$db_layer." where ";\r
+ //print("toto");\r
+ } \r
+ $ibbox++;\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
+ if($ibbox==0)\r
+ {\r
+ $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from ".$db_layer." where ";\r
+ }\r
+ elseif($ibbox>0)\r
+ {\r
+ $BBOX_sql.="UNION ALL select extent(the_geom) as g from ".$db_layer." where ";\r
+ //print("toto");\r
+ } \r
+ $ibbox++; \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
+ if($ibbox==0)\r
+ {\r
+ $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from ".$db_layer." where ";\r
+ }\r
+ elseif($ibbox>0)\r
+ {\r
+ $BBOX_sql.="UNION ALL select extent(the_geom) as g from ".$db_layer." where ";\r
+ //print("toto");\r
+ } \r
+ $ibbox++;\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
+ if($ibbox==0)\r
+ {\r
+\r
+ $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from ".$db_layer." where ";\r
+ }\r
+ elseif($ibbox>0)\r
+ {\r
+ $BBOX_sql.="UNION ALL select extent(the_geom) as g from ".$db_layer." where ";\r
+ \r
+ //print("toto");\r
+ } \r
+ $ibbox++;\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
+ if($ibbox==0)\r
+ {\r
+ $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from ".$db_layer." where ";\r
+ }\r
+ elseif($ibbox>0)\r
+ {\r
+ $BBOX_sql.="UNION ALL select extent(the_geom) as g from ".$db_layer." where ";\r
+ //print("toto");\r
+ } \r
+ $ibbox++;\r
+ break;\r
+ //ftheeten 21/01/2011 (for other layers than tdwg)\r
+ default:\r
+ $layer=$k;\r
+ $field=$wms_field_array[$k];\r
+ $label_field=$wms_field_array[$k];//'?';\r
+ //print("________________________layer=".$layer);\r
+ //print("________________________field=".$field);\r
+ //ftheeten auto boox 24/08/2011\r
+ if($ibbox==0)\r
+ {\r
+ $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from ".$layer." where ";\r
+ }\r
+ elseif($ibbox>0)\r
+ {\r
+ $BBOX_sql="UNION ALL select extent(the_geom) as g from ".$layer." where ";\r
+ //print("toto");\r
+ } \r
+ $flagUserTable=true;\r
+ $ibbox++;\r
+ //print('====>ibbox='.$ibbox);\r
+ break;\r
+ \r
+ }\r
+ \r
+ \r
+ foreach($v as $key=>$val)\r
+ {// for $v as $key=>$val)\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
+ $BBOX_sql.=$field."='".$val['zones']."' ";\r
+ \r
+ }\r
+ else\r
+ {//begin else\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
+ $BBOX_sql.=$field."='".$val['zones'][0]."'";\r
+ }\r
+ else\r
+ {\r
+ //$BBOX_sql.=" OR code='".$val['zones'][$i]."'";\r
+ $BBOX_sql.=" OR ".$field."='".$val['zones'][$i]."'";\r
+ }\r
+ \r
+ }//end for\r
+ \r
+ \r
+ //QUINA CUTRADA!!!!!\r
+ \r
+ //$BBOX_sql.=" OR code='".$val['zones'][$count-1]."'";\r
+ $BBOX_sql.=" OR ".$field."='".$val['zones'][$count-1]."'";\r
+ \r
+ \r
+ }//end else\r
+ $c++;\r
+ }// end for $v as $key=>$val)\r
+ }//end test if(array_key_exists($v,$arrayWMSIdxURLs)===FALSE)\r
+ }//end FOR bbox\r
+ //ftheeten 24/08/2011\r
+ $BBOX_sql.=") AS foo;";\r
+ //print($BBOX_sql);\r
+ \r
+ //ftheeten 24/08/2011\r
+ \r
+ $postgis_result=pg_query($BBOX_sql);\r
+ while ($row = pg_fetch_array($postgis_result, NULL, PGSQL_ASSOC))\r
+ {\r
+ $b=substr($row['extent'],4);\r
+ $cadena=substr($b,0,-1); \r
+ $bbox=str_replace(' ',',',$cadena);\r
+ //echo "this is bbox".$bbox;\r
+ \r
+ }\r
+ \r
+ }//end if BBOX SQL\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ //print($BBOX_sql);\r
+ \r
+ $recalculate="true";\r
+ \r
+ if ($p_recalculate)\r
+ \r
+ {\r
+ \r
+ if ($p_recalculate=='false')\r
+ \r
+ {\r
+ \r
+ $recalculate='false';\r
+ \r
+ }\r
+ \r
+ };\r
+ \r
+ //print("old bbox");\r
+//print($bbox);\r
+ \r
+ \r
+ \r
+ \r
+ if ($recalculate=="true")\r
+ \r
+ {\r
+ \r
+ $bbox2=explode(',',$bbox); \r
+ \r
+ \r
+ \r
+ $ratio_x=$bbox2[2]-$bbox2[0];\r
+ \r
+ $ratio_y=abs($bbox2[1]-$bbox2[3]);\r
+ \r
+ if (((($ratio_x)/$ratio_y))<2)\r
+ \r
+ {\r
+ \r
+ $to_change='x';\r
+ \r
+ // echo "yesss XXXX";\r
+ \r
+ //echo "ratio is ".(($ratio_x*2)/$ratio_y)."<br>";\r
+ \r
+ }\r
+ \r
+ else \r
+ \r
+ { \r
+ \r
+ $to_change='y';\r
+ \r
+ }\r
+ \r
+ switch ($to_change)\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ case 'x':\r
+ \r
+ $diff_x=abs((($ratio_x)/2 -$ratio_y)/2); \r
+ \r
+ $bbox2[0]=$bbox2[0]-$diff_x; \r
+ \r
+ $bbox2[2]=$bbox2[2]+$diff_x; \r
+ \r
+ $bbox=$bbox2[0].",".$bbox2[1].",".$bbox2[2].",".$bbox2[3];\r
+ \r
+ $ratio=$ratio_x/$ratio_y;\r
+ \r
+ $width = (int)($height+($ratio*30));\r
+ \r
+ break; \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ case 'y':\r
+ \r
+ \r
+ \r
+ $diff_x=abs((($ratio_x -$ratio_y)/2)/2); \r
+ \r
+ if ($bbox2[1]<0)\r
+ \r
+ {\r
+ \r
+ //echo "bbox_1 negativa";\r
+ \r
+ $bbox2[1]=$bbox2[1]-$diff_x;\r
+ \r
+ if (abs($bbox2[1])>90)\r
+ \r
+ {\r
+ \r
+ $bbox2[1]=-90;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ else \r
+ \r
+ {\r
+ \r
+ $bbox2[1]=$bbox2[1]-$diff_x; \r
+ \r
+ if (abs($bbox2[1])>90)\r
+ \r
+ {\r
+ \r
+ $bbox2[1]=90; \r
+ \r
+ }\r
+ \r
+ };\r
+ \r
+ if ($bbox2[3]<0 )\r
+ \r
+ {\r
+ \r
+ $bbox2[3]=$bbox2[3]+$diff_x; \r
+ \r
+ if (abs($bbox2[3])>90)\r
+ \r
+ {\r
+ \r
+ $bbox2[3]=-90; \r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ else\r
+ \r
+ {\r
+ \r
+ $bbox2[3]=$bbox2[3]+$diff_x;\r
+ \r
+ if (abs($bbox2[3])>90)\r
+ \r
+ {\r
+ \r
+ $bbox2[3]=90; \r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ $bbox=$bbox2[0].",".$bbox2[1].",".$bbox2[2].",".$bbox2[3];\r
+//print("new bbox");\r
+//print($bbox);\r
+ \r
+ break;\r
+ \r
+ }//fi switch\r
+ \r
+ }//fi recalculate=true\r
+ \r
+ else\r
+ \r
+ {\r
+ \r
+ //Recalculate =false (we try to put everything)\r
+ \r
+ //test added by ftheeten 2010/04/09 to avoid error message\r
+ \r
+ if($ratio_y!=0)\r
+ \r
+ {\r
+ \r
+ $ratio=$ratio_x/$ratio_y;\r
+ \r
+ }\r
+ \r
+ //echo $ratio;\r
+ \r
+ // $height = (int)($width / $ratio);\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ //echo $height;\r
+ \r
+ $url_list=array();\r
+ \r
+ $legend_list=array();\r
+ \r
+ $files_list=array();\r
+ \r
+ \r
+ \r
+ $c=count($gmls);\r
+ \r
+ //print("BBOX=".$bbox);\r
+ \r
+ //global $bbox;\r
+ //print("GLOBALBBOX=".$bbox);\r
+ if (isset($p_foo))\r
+ \r
+ {\r
+ \r
+ $json='foo({"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":['; \r
+ \r
+ }\r
+ \r
+ elseif (isset($p_callback)) //addition ftheeten 16/06/2010\r
+ \r
+ {\r
+ \r
+ $json=$p_callback.'({"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';\r
+ //$json='({"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';\r
+ \r
+ }\r
+ \r
+ else\r
+ \r
+ {\r
+ \r
+ $json='[{"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ $i=0;\r
+//print("GML="); \r
+//print_r($gmls);\r
+ foreach ($gmls as $feature=>$v)\r
+ \r
+ {\r
+ \r
+ $i++;\r
+ //print($feature);\r
+ //print("-------");\r
+ //print($v);\r
+ $dom_new = new DOMDocument();\r
+ \r
+ //print("-----------------------");\r
+ \r
+ //print_r($v);\r
+ $flagExternalWMS=FALSE;\r
+ $urlExternalWMS="";\r
+ \r
+ switch ($feature)\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ case ('tdwg1'): $layer='topp:tdwg_level_1';$db_layer='tdwg_level_1';\r
+ \r
+ $field='code';\r
+ \r
+ $label_field='zona';\r
+ \r
+ break;\r
+ \r
+ case ('tdwg2'): $layer='topp:tdwg_level_2';$db_layer='tdwg_level_2';\r
+ \r
+ $field='code';\r
+ \r
+ $label_field='code';\r
+ \r
+ break;\r
+ \r
+ case ('tdwg3'): $layer='topp:tdwg_level_3'; $db_layer='tdwg_level_3';\r
+ \r
+ $field='code';$layer_sh="TDWG 3";$label_field='code';\r
+ \r
+ break;\r
+ \r
+ case ('tdwg4'): $layer='topp:tdwg_level_4';$db_layer='tdwg_level_4';\r
+ \r
+ $field="code";\r
+ \r
+ $label_field='code';$layer_sh="TDWG 4";\r
+ \r
+ break;\r
+ \r
+ case ('e_w_0'): $layer='topp:europe_west_level_0';$db_layer='europe_west_level_0';\r
+ \r
+ $field="code";\r
+ \r
+ $label_field='code';$layer_sh="EURW 0";\r
+ \r
+ break;\r
+ \r
+ case ('e_w_1'): $layer='topp:europe_west_level_1';$db_layer='europe_west_level_1';\r
+ \r
+ $field="code";\r
+ \r
+ $label_field='code';$layer_sh="EURW 1";\r
+ \r
+ break;\r
+ \r
+ //ftheeten 21/02/2011\r
+ \r
+ default:\r
+ //print("default");\r
+ if(array_key_exists($feature,$arrayWMSIdxURLs))\r
+ {\r
+ \r
+ //print("external for $feature");\r
+ $prefix="";\r
+ $ext_layer="";\r
+ $prefix_array=array_keys($tdwg[$feature]);\r
+ $flagExternalWMS=TRUE;\r
+ if(count($prefix_array)>0)\r
+ {\r
+ $prefix=$prefix_array[0];\r
+ \r
+ $ext_layer_array=$tdwg[$feature][$prefix];\r
+ $ext_layer=$ext_layer_array["zones"];\r
+ \r
+ if(strlen($prefix)>0)\r
+ {\r
+ \r
+ $ext_layer=$prefix.":".$ext_layer;\r
+ \r
+\r
+ \r
+ }\r
+ \r
+ }\r
+ $urlExternalWMS=f_autoFillWMSURL($arrayWMSIdxURLs[$feature]["url"], $arrayWMSIdxURLs[$feature]["version"], $ext_layer,"", $bbox, $width, $height,$arrayWMSIdxURLs[$feature]["filter"]);\r
+ \r
+\r
+ \r
+ \r
+\r
+ }\r
+ else\r
+ {\r
+ //print("NOT external for $feature");\r
+ $layer=$feature;\r
+ \r
+ $field=$wms_field_array[$feature];\r
+ \r
+ $label_field=$tmp_wms_field;\r
+ }\r
+ \r
+ break;\r
+ \r
+ }\r
+ \r
+ //print_r($tdwg);\r
+ \r
+ $p=simplexml_load_string($gmls[$feature]);\r
+ \r
+ $hatching=$p->style->hatching;\r
+ \r
+ $xsl = new XSLTProcessor;\r
+ \r
+ $xsl->setParameter( '', 'symbol', $hatching);\r
+ \r
+ $pos_prefix = substr_count($layer,$prefix_wms);\r
+ \r
+ $displayedLayer=$layer;\r
+ \r
+ //print("pos=".$pos_prefix."=");\r
+ \r
+ if($pos_prefix===0) \r
+ \r
+ {\r
+ \r
+ //print("prefix");\r
+ \r
+ $displayedLayer=$prefix_wms.$layer;\r
+ \r
+ }\r
+ \r
+ if(strlen($displayedLayer)==0||strlen($field)==0)\r
+ {\r
+ print("It seems that the name of the layer for area and/or the name of its indexing column is missing. \n Syntax is \"ad=layer_name:indexer_column:alias_for_style:Value in DB\" (exemple: \"&ad=em_tiny_jan2003:emarea:a:Ge\")\n Please check the structure of the layer in WMS/WFS for the name of the columns");\r
+ }\r
+\r
+ $xsl->setParameter( '', 'layer', $displayedLayer);\r
+ //ftheeten 2011/05/27\r
+ \r
+ $xsl->setParameter( '', 'field', $field);\r
+ \r
+ //$xsl->setParameter( '', 'label_field', $label_field);\r
+ $xsl->setParameter( '', 'label_field', $field);\r
+ \r
+ $style = realpath(dirname(__FILE__)."/".'areas_pattern.xsl');\r
+ \r
+ $dom_new->load($style);\r
+ \r
+ $xsl->importStyleSheet($dom_new);\r
+ \r
+ $dom_new->loadXML($gmls[$feature]);\r
+ \r
+ $out = $xsl->transformToXML($dom_new);\r
+ \r
+ srand(time());\r
+ \r
+ //$random = (rand()%300).".sld";\r
+ \r
+ $path_towrite="/var/www/synthesys/www/v1/sld/".$feature."_".$random;\r
+ \r
+ //echo $path_towrite;\r
+ \r
+ $fp=fopen("$path_towrite","w");\r
+ \r
+ $write=fwrite($fp,$out);\r
+ \r
+ array_push($files_list,$path_towrite);\r
+ \r
+ //echo $out;\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ $json.='{"tdwg": "' . $feature. '","session": "'.$sessionid.'",';\r
+ \r
+ \r
+ \r
+ //$json.='"sld": "' . $feature."_".$random.'"}';\r
+ \r
+ //correction ftheeten 09/04/2010\r
+ \r
+ $nameSLDFile=$feature."_".$random;\r
+ \r
+ $json.='"sld": "' . V1_SLD_URL."/".$nameSLDFile.'"';\r
+ \r
+ \r
+ $json.='}';\r
+ \r
+ \r
+ \r
+ if ($i < $c)\r
+ \r
+ {\r
+ \r
+ $json.=',';\r
+ \r
+ }\r
+ \r
+\r
+ if(strlen($layer)>0||((strlen($urlExternalWMS)>0)&&$flagExternalWMS===TRUE))\r
+ {\r
+ //print("BBOX=".$bbox);\r
+ //print("ADDED");\r
+ $url="";\r
+ //test added ftheeten 2013/01/25\r
+ if($flagExternalWMS===TRUE&&strlen($urlExternalWMS)>0)\r
+ {\r
+ $url=$urlExternalWMS;\r
+ }\r
+ else\r
+ { \r
+ $url=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&TRANSPARENT=TRUE&SERVICE=WMS&EPSG=4326&layers=";\r
+ \r
+ $url.=$layer."&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height."&SLD=".V1_SLD_URL."/".$nameSLDFile;\r
+ } \r
+ //print($url); \r
+ $url_list[]=$url;\r
+ \r
+ $legend_list[]=$legend_url;\r
+ }\r
+ \r
+ }\r
+ \r
+ //correction ftheeten 09/04/2010\r
+ \r
+ $json.="]";\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ $json.=",\"geoserver\": \"".URL_GEOSERVER."\"";\r
+ if($p_occ_data)\r
+ { \r
+ $json.=",\"points_sld\": \"".URL_SITE."/synthesys/www/v1/sld/point_".$random.".sld\"";\r
+ if(isset($p_dest_epsg_projection)&&strtolower($p_img)=='false')\r
+ {\r
+ if(strlen($p_dest_epsg_projection)>0)\r
+ {\r
+ $json.=",\"dest_projection\": \"".$p_dest_epsg_projection."\"";\r
+ $bbox_dest_proj=explode(",",$bbox);\r
+ \r
+ $point1_conv=convertPointProjection($conn,$bbox_dest_proj[1],$bbox_dest_proj[0],"4236","900913");\r
+ $point2_conv=convertPointProjection($conn,$bbox_dest_proj[3],$bbox_dest_proj[2],"4236","900913");\r
+ $json.=",\"bbox_dest_projection\": \"".$point1_conv.",".$point2_conv."\"";\r
+ $json.=",\"points_dest_projection\": \"".implode("|",$convertedCoordinates)."\"";\r
+ }\r
+ }\r
+ }\r
+ if(strtolower($p_jsoncreatefile)==="true")\r
+ {\r
+ $imgpathforjsonurl=V1_IMG;\r
+ $json.=", \"img\": \"".$random2_www."\""; \r
+ }\r
+ \r
+ $json.="}";\r
+ \r
+ if (isset($p_foo))\r
+ \r
+ {\r
+ \r
+ $json.=")"; \r
+ \r
+ }\r
+ \r
+ elseif(isset($p_callback))////addition ftheeten 16/06/2010\r
+ \r
+ {\r
+ \r
+ $json.=");"; \r
+ \r
+ }\r
+ \r
+ else\r
+ \r
+ {\r
+ \r
+ $json.="]"; \r
+ \r
+ }\r
+ \r
+ \r
+ $random3="/var/www/synthesys/www/v1/img/".md5($p_uri )."bckgrd_layers.png";\r
+ $random4="/var/www/synthesys/www/v1/img/".md5($p_uri )."wms_layers.png";\r
+ \r
+ //ftheeten 22/02/2011 (sometimes bug if image previously exists)\r
+ if(file_exists($random3))\r
+ {\r
+ unlink($random3);\r
+ \r
+ }\r
+ if(file_exists($random4))\r
+ {\r
+ unlink($random4);\r
+ \r
+ }\r
+ \r
+ $url2_array=array();\r
+ $url2="";\r
+ $c=" convert -size '".$width."x".$height."' xc:transparent $random3";\r
+ if(isset($arrayBackgroundStyle)===true)\r
+ {\r
+ if(count($arrayBackgroundStyle)>0)\r
+ {\r
+ $c='';\r
+ for ($i=0;$i<count($arrayBackgroundStyle);$i++)\r
+ {\r
+ if($arrayBackgroundStyle[$i]['external_wms']=="yes")\r
+ {\r
+ $url2=f_autoFillWMSURL($arrayBackgroundStyle[$i]['external_wms_url'],$arrayBackgroundStyle[$i]['external_wms_version'], $arrayBackgroundStyle[$i]['style'],"",$bbox, $width, $height, $arrayBackgroundStyle[$i]['external_wms_filter']);\r
+ $url2_array[]=$url2;\r
+ \r
+ }\r
+ else\r
+ {\r
+ $url2=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&TRANSPARENT=TRUE&SERVICE=WMS&EPSG=4326&layers=".$arrayBackgroundStyle[$i]['name'];\r
+ \r
+ $url2.="&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height;\r
+ \r
+ if($arrayBackgroundStyle[$i]['type']=="sld")\r
+ {\r
+ $url2.="&SLD=".$arrayBackgroundStyle[$i]['style'];\r
+ }\r
+ elseif($arrayBackgroundStyle[$i]['type']=="wms_style")\r
+ {\r
+ $url2.="&STYLES=".$arrayBackgroundStyle[$i]['style'];\r
+ }\r
+ elseif($arrayBackgroundStyle[$i]['type']=="user_sld")\r
+ {\r
+ $pos_prefix_sld = substr_count($arrayBackgroundStyle[$i]['name'],$prefix_wms);\r
+ $displayedLayer_sld=$arrayBackgroundStyle[$i]['name'];\r
+ //print("pos=".$pos_prefix."=");\r
+ if($pos_prefix_sld===0) \r
+ {\r
+ //print("prefix");\r
+ $displayedLayer_sld=$prefix_wms.$arrayBackgroundStyle[$i]['name'];\r
+ }\r
+ $returnedXML=generate_xml_simple_style_no_zone($displayedLayer_sld, $arrayBackgroundStyle[$i]['style'], $arrayBackgroundStyle[$i]['style'], $total_symbols, $symbols_url);\r
+ //print($returnedXML);\r
+ $path_towrite="/var/www/synthesys/www/v1/sld/"."_backsld_".$displayedLayer_sld.$random;\r
+ //print($path_towrite);\r
+ xml_to_sld_xslt($returnedXML, $displayedLayer_sld,dirname(__FILE__)."/".'areas_pattern.xsl', $path_towrite );\r
+ $url_back_sld=V1_SLD_URL."/_backsld_".$displayedLayer_sld.$random;\r
+ $url2.="&SLD=".$url_back_sld;\r
+ }\r
+ \r
+ $url2_array[]=$url2;\r
+ \r
+ }\r
+ \r
+ }\r
+ }\r
+ }\r
+ if(strlen($c)>0)\r
+ {\r
+ shell_exec($c);\r
+ }\r
+ \r
+ \r
+ \r
+ \r
+ $c=" convert -size '".$width."x".$height."' xc:transparent $random3";\r
+ \r
+ shell_exec($c);\r
+ \r
+ if(count($url_list)>1)\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ for ($i=0;$i<count($url_list);$i++)\r
+ {\r
+ \r
+ \r
+ if($i==0)\r
+ {\r
+ $c="composite '".$url_list[$i]."' '".$url_list[$i]."' '".$random4."'";\r
+ shell_exec($c);\r
+ \r
+ }\r
+ else\r
+ {\r
+ $c="composite '".$url_list[$i]."' '".$random4."' '".$random4."'";\r
+ shell_exec($c); \r
+ //print($c); \r
+ }\r
+ \r
+ }\r
+ $c="composite '$random4' '$random3' '$random2'";\r
+ \r
+ //print($c);\r
+ //readfile($random2);\r
+ \r
+ shell_exec($c);\r
+ \r
+ //print($url2);\r
+ \r
+ }\r
+ \r
+ elseif(count($url_list)==1)\r
+ \r
+ {\r
+ \r
+ //SLDs over normal layers\r
+ \r
+ $c="composite '$url_list[0]' '$url_list[0]' '$random4'";\r
+ \r
+ //print($c);\r
+ \r
+ shell_exec($c);\r
+ $c="composite '$random4' '$random3' '$random2'";\r
+ \r
+ \r
+ //print($c);\r
+ shell_exec($c);\r
+\r
+\r
+\r
+ }\r
+ elseif(count($url_list)==0)\r
+ {\r
+ $c="convert -size '".$width."x".$height."' xc:transparent $random2";\r
+ \r
+ shell_exec($c);\r
+ }\r
+ \r
+ \r
+ \r
+ \r
+\r
+ \r
+ \r
+ \r
+ //part ftheeten 12/08/2010 external WMS\r
+ \r
+ /*\r
+ $flagExternalWMS=false;\r
+ $flagExternalWMSForeground=FALSE;\r
+ $extWFURLArray=array();\r
+ \r
+ $extWFSURL="";\r
+\r
+ \r
+ if(isset($p_externalwms)===true&&isset($p_externalwms_layer)===true) \r
+ {\r
+ \r
+ $flagExternalWMS=true;\r
+ \r
+ $versionWFS=NULL;\r
+\r
+ if(isset($p_wms_foreground)===true)\r
+ {\r
+ if(strtolower($p_wms_foreground)==="true")\r
+ {\r
+ $flagExternalWMSForeground=TRUE;\r
+ } \r
+ }\r
+ \r
+ \r
+ if(isset($p_externalwms_versions)===true)\r
+ \r
+ {\r
+ \r
+ $versionWFS=$p_externalwms_versions;\r
+ \r
+ }\r
+ \r
+ $externalWMSStyle="";\r
+ \r
+ if(isset($p_externalwms_style)===true)\r
+ \r
+ {\r
+ \r
+ $externalWMSStyle=$p_externalwms_style;\r
+ \r
+ }\r
+ \r
+ if(strlen($p_externalwms)>0&&strlen($p_externalwms_layer)>0)\r
+ \r
+ {\r
+ \r
+ $versionWFS=NULL;\r
+ \r
+ if(isset($p_externalwms_versions)===true)\r
+ \r
+ {\r
+ \r
+ $versionWFS=$p_externalwms_versions;\r
+ \r
+ }\r
+ \r
+ $externalWMSStyle=NULL;\r
+ \r
+ if(isset($p_externalwms_style)===true)\r
+ \r
+ {\r
+ \r
+ $externalWMSStyle=$p_externalwms_style;\r
+ \r
+ }\r
+ \r
+ if(strpos($p_externalwms,"|")>0)\r
+ \r
+ {\r
+ \r
+ $arrayWFS=array();\r
+ \r
+ \r
+ \r
+ $arrayWFS=f_checkWMSParams($arrayWFS,$p_externalwms,"URL","[\|]","[:]");\r
+ \r
+ $arrayWFS=f_checkWMSParams($arrayWFS,$versionWFS,"VERSION","[\|]","[:]");\r
+ \r
+ $arrayWFS=f_checkWMSParams($arrayWFS,$p_externalwms_layer,"LAYERS","[\|]","[:]");\r
+ \r
+ $arrayWFS=f_checkWMSParams($arrayWFS,$externalWMSStyle,"STYLES","[\|]","[:]");\r
+ \r
+ //print("!!!arrayWFS=>");\r
+ \r
+ //print_r($arrayWFS);\r
+ \r
+ foreach($arrayWFS as $key=>$arrayWFSitem)\r
+ \r
+ {\r
+ \r
+ $extWFSURLArray[]=f_writeKeyWFSURL($arrayWFS,$key,$bbox,$width,$height);\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ else\r
+ \r
+ {\r
+ \r
+ $externalWMS=$p_externalwms;\r
+ \r
+ $externalWMSLayer=$p_externalwms_layer;\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ $extWFSURL=f_autoFillWMSURL($externalWMS,$externalWMSVersion,$externalWMSLayer,$externalWMSStyle,$bbox,$width,$height, $p_externalwms_filter);\r
+ \r
+ $extWFSURLArray[]=$extWFSURL;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ //27/09/2012 mmodif franck foreground\r
+ if($flagExternalWMS===true&&$flagExternalWMSForeground==FALSE)\r
+ \r
+ {\r
+ \r
+ $cptLayers=count($extWFSURLArray);\r
+ \r
+ for($i=$cptLayers-1;$i>=0;$i--)\r
+ \r
+ {\r
+ \r
+ $c="composite '$random2' '$extWFSURLArray[$i]' '$random2'";\r
+ \r
+ shell_exec($c);\r
+ \r
+ } \r
+ \r
+ \r
+ \r
+ }\r
+*/\r
+ if(isset($url2_array)===true)\r
+ {\r
+ if(count($url2_array)>0)\r
+ \r
+ {\r
+ \r
+ $cptLayers=count($url2_array);\r
+ \r
+ for($i=$cptLayers-1;$i>=0;$i--)\r
+ \r
+ {\r
+ \r
+ $c="composite '$random2' '$url2_array[$i]' '$random2'";\r
+ //print($url2_array[$i]);\r
+\r
+ \r
+ shell_exec($c);\r
+ \r
+ } \r
+ \r
+ \r
+ \r
+ } \r
+ }\r
+ \r
+ /*\r
+ if(strlen($url2)>0)\r
+ {\r
+ $c=" composite '$random2' '$url2' '$random2' ";\r
+ shell_exec($c);\r
+ }\r
+ \r
+ */\r
+ \r
+ \r
+ //---display points\r
+ if($flagDisplayPoints===true)\r
+ { //print("point=true");\r
+ \r
+ if ($p_raster)\r
+ {\r
+ \r
+ if ($p_raster=='mercantour')\r
+ {\r
+ $raster='atbi_mercantour.png';\r
+ }\r
+ \r
+ if ($p_raster=='gemer')\r
+ {\r
+ $raster='atbi_gemer.png';\r
+ //$raster='gemer2.jpg';\r
+ }\r
+ $c="composite '$random2' '$raster' '$random2'";\r
+ shell_exec($c);\r
+ \r
+ }\r
+ \r
+ \r
+ $sld_url.=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&TRANSPARENT=true&STYLES=&REQUEST=GetMap&SERVICE=WMS&EPSG=4326&layers=rest_points&EPSG=4326&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height."&SLD=".URL_SITE."/synthesys/www/v1/sld/point_".$random.".sld";\r
+ \r
+ //print($sld_url);\r
+ \r
+ //$image=imagecreatefrompng($edit_url);\r
+ \r
+ $points= (rand()%300)."_p.png";\r
+ //ftheeten 22/02/2011 (sometimes bug if image previously exists)\r
+ if(file_exists(V1_IMG.'/'.$points))\r
+ {\r
+ unlink(V1_IMG.'/'.$points);\r
+ }\r
+ //print($sld_url);\r
+ $c="convert '$sld_url' '".V1_IMG."/$points'";\r
+ shell_exec($c) ;\r
+\r
+//print("----");\r
+//print($c);\r
+//print("----");\r
+ $c="composite '".V1_IMG."/$points' '$random2' '$random2'";\r
+ shell_exec($c); \r
+\r
+//print($c); \r
+//print("----");\r
+ }\r
+ //end display points\r
+ \r
+ //27/09/2012 mmodif franck foreground\r
+ /*if($flagExternalWMS===true&&$flagExternalWMSForeground==TRUE)\r
+ \r
+ {\r
+ \r
+ $cptLayers=count($extWFSURLArray);\r
+ \r
+ for($i=$cptLayers-1;$i>=0;$i--)\r
+ \r
+ {\r
+ \r
+ $c="composite '".$extWFSURLArray[$i]."' '$random2' '$random2'";\r
+ \r
+ shell_exec($c);\r
+ \r
+ } \r
+ \r
+ \r
+ \r
+ }*/\r
+ \r
+ if ($leg=='1')\r
+ \r
+ {\r
+ //print("display");\r
+ \r
+ $legend_url=URL_GEOSERVER."/wms?REQUEST=GetLegendGraphic&VERSION=1.1.1&format=image/png&WIDTH=64&HEIGHT=36&";\r
+ \r
+\r
+ $legend_url.="layer=topp:tdwg_level_3&LEGEND_OPTIONS=forceLabels:on;fontStyle:italic;fontSize:12&SLD=".$leg_url;\r
+ $com="convert '$legend_url' '$random2_legend'";\r
+ shell_exec($com);\r
+ if($flagDisplayPoints===true)\r
+ {\r
+ $legend_url_point.=URL_GEOSERVER."/wms?REQUEST=GetLegendGraphic&LEGEND_OPTIONS=forceLabels:on;fontStyle:italic;fontSize:12&VERSION=1.1.1&format=image/png&WIDTH=20&HEIGHT=30&layer=rest_points&SLD=".URL_SITE."/synthesys/www/v1/sld/point_".$random.".sld";\r
+ $com="convert -background white -append '$legend_url_point' '$random2_legend' '$random2_legend' ";\r
+ shell_exec($com);\r
+ }\r
+ \r
+ //print(">>>"); \r
+ //print($legend_url);\r
+ //print("<<<<"); \r
+ \r
+ $mlp=$p_mlp;\r
+\r
+ if(strlen($mlp)==0)\r
+ {\r
+ //print("no"); \r
+ $mlp='3';\r
+ }\r
+//print($mlp);\r
+ \r
+ switch ($mlp)\r
+ \r
+ {\r
+ \r
+ case ('1'):\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ $com="convert -background white +append '$random2_legend' '$random2' '$random2'"; //-->exterior ul \r
+ \r
+ break;\r
+ \r
+ }\r
+ \r
+ case ('2'):\r
+ \r
+ {\r
+ \r
+ $com="convert -background white -append '$random2_legend' '$random2' '$random2' "; //2\r
+ \r
+ break;\r
+ \r
+ }\r
+ \r
+ case ('3'):\r
+ \r
+ {\r
+ \r
+ $com="convert -background white +append '$random2' '$random2_legend' '$random2' "; //4\r
+ \r
+ break;\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ case ('4'):\r
+ \r
+ {\r
+ \r
+ \r
+ \r
+ $com="convert -background white -append '$random2' '$random2_legend' '$random2'"; //7\r
+ \r
+ break;\r
+ \r
+ }\r
+ \r
+ case ('5'):\r
+ \r
+ { \r
+ \r
+ $com="composite -gravity SouthEast '$random2_legend' '$random2' '$random2'";//9\r
+ \r
+ break;\r
+ \r
+ } \r
+ \r
+ case ('6'):\r
+ \r
+ { \r
+ \r
+ $com="composite -gravity SouthWest '$random2_legend' '$random2' '$random2'";//10\r
+ \r
+ break;\r
+ \r
+ } \r
+ \r
+ case ('7'):\r
+ \r
+ { \r
+ \r
+ $com="composite -gravity NorthEast '$random2_legend' '$random2' '$random2'";//11\r
+ \r
+ break;\r
+ \r
+ } \r
+ \r
+ case ('8'):\r
+ \r
+ { \r
+ \r
+ $com="composite -gravity NorthWest '$random2_legend' '$random2' '$random2'";//12\r
+ \r
+ break;//$c.="'".$url_list[$i]."' ";?\r
+ \r
+ } \r
+ \r
+ }\r
+ \r
+ shell_exec($com);\r
+ //print($com);\r
+ \r
+ //B&W mode ftheeten 2011/07/05\r
+ \r
+ if (strtolower($p_grayscale)==='true')\r
+ {\r
+ $com_monochrome="convert -type Grayscale '$random2' '$random2'";\r
+ shell_exec($com_monochrome);\r
+ }\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ //RMCA 09/04/2010\r
+ $img=$p_img;\r
+ //if($flagError===false)\r
+ //{\r
+ if(strtolower($img)=='false')\r
+ {\r
+ $headerText="Content-Type: application/json";\r
+ if($p_no_header_for_tests===FALSE)\r
+ { \r
+ header($headerText);\r
+ header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1\r
+ header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé\r
+ } \r
+ print($json);\r
+ }\r
+ else\r
+ {\r
+ if($p_no_header_for_tests===FALSE)\r
+ {\r
+ $headerText="Content-Type: image/png"; \r
+ header($headerText);\r
+ header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1\r
+ header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé\r
+ }\r
+ \r
+ readfile($random2);\r
+\r
+ }\r
+ //}\r
+ //else//Error\r
+ //{ //print($_SERVER['SERVER_PROTOCOL']. '400 Bad Request');\r
+ // $headerText=$_SERVER['SERVER_PROTOCOL']. ' 400 Bad Request'; \r
+ // header($headerText,true,"400");\r
+ // header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1\r
+ // \r
+ // print($errorMessage);\r
+ //}\r
+ \r
+ //ob_flush();\r
+ if(strtolower($p_jsoncreatefile)!="true")\r
+ {\r
+ unlink($random2);\r
+ }\r
+ \r
+ \r
+ //} oold if for 'img==true'\r
+ \r
+ //clearstatcache();\r
+ \r
+ $time=time();\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ /* commented by ftheeten 2010/04/13 (to have sld still available) -> should be repalced by a Cron job*/\r
+ \r
+ while($entry = $d->read()) { \r
+ \r
+ if ($entry!= "." && $entry!= "..") { \r
+ \r
+ \r
+ \r
+ $f_last_modified = filemtime($sld_dir."/".$entry);\r
+ \r
+ \r
+ \r
+ if ($time-$f_last_modified >400)\r
+ \r
+ {\r
+ \r
+ unlink($sld_dir."/".$entry);\r
+ \r
+ } \r
+ \r
+ \r
+ \r
+ } \r
+ \r
+ } \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ while($entry = $e->read()) { \r
+ \r
+ if ($entry!= "." && $entry!= "..") { \r
+ \r
+ \r
+ \r
+ $f_last_modified = filemtime($img_dir."/".$entry);\r
+ \r
+ \r
+ \r
+ if ($time-$f_last_modified >400000)\r
+ \r
+ {\r
+ \r
+ unlink($img_dir."/".$entry);\r
+ \r
+ } \r
+ \r
+ \r
+ \r
+ } \r
+ \r
+ } \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ //$d->close(); \r
+ \r
+ $e->close();\r
+ \r
+ }\r
+\r
+\r
+}\r
+\r
+\r
+?>\r