/** * creates dynamic layer based on text definition (map file syntax) * layer is then added to map object */ protected function createDynLayer($layerName, $layerString) { //error_log($layerString); $dynLayer = ms_newLayerObj($this->map); $dynLayer->updateFromString($layerString); $this->setLayerParameters($dynLayer); }
private function url_createLayer() { if (!is_file($_SESSION['PM_TPL_MAP_FILE'])) { error_log("P.MAPPER ERROR: cannot find template map. Check INI settings for 'tplMapFile'"); return false; } $tplMap = ms_newMapObj($_SESSION['PM_TPL_MAP_FILE']); $poiLayer = $tplMap->getLayerByName("poi"); $txtLayer = ms_newLayerObj($this->map, $poiLayer); $txtLayer->set("name", "url_txtlayer"); $txtLayer->set("type", 0); $txtLayer->set("status", MS_ON); $url_points = $_SESSION['url_points']; foreach ($url_points as $upnt) { // Create line, add xp point, create shape and add line and text, add shape to layer //$pointList = explode(",", $f); $px = $upnt[0]; $py = $upnt[1]; $txt = $upnt[2]; $newLine = ms_newLineObj(); $newLine->addXY($px, $py); $newShape = ms_newShapeObj(0); $newShape->add($newLine); $newShape->set("text", $txt); $txtLayer->addFeature($newShape); } }
function gml2wkt($gml) { // Parse GML file include "funcoes_gerais.php"; $k = array_keys($_GET); session_name("i3GeoPHP"); session_id($_GET[$k[0]]); session_start(); //var_dump($_SESSION);exit; $nome = $_SESSION["dir_tmp"] . "/gml_" . nomeRandomico(); $nomegml = $nome . ".gml"; $nomemap = $_SESSION["map_file"]; $gml = str_replace("xsi:schemaLocation", "erro", $gml); gravaDados(array($gml), $nomegml); $map = new mapObj($nomemap); $layer = ms_newLayerObj($map); $layer->setConnectionType(MS_OGR); $layer->set("connection", $nomegml); $layer->set("template", "none.html"); $layer->set("type", MS_LAYER_POLYGON); $layer->set("name", $nome); $layer->set("status", MS_DEFAULT); $layer->setmetadata("tema", $nome); $classe = ms_newClassObj($layer); $novoestilo = ms_newStyleObj($classe); $ncor = $novoestilo->color; $ncor->setrgb(255, 255, 255); //$map->save($nomemap); //exit; $layer->queryByrect($map->extent); $sopen = $layer->open(); $shape = $layer->getShape($layer->getResult(0)); $wkt = $shape->towkt(); return json_encode(array($wkt)); }
function markerclusterMapfile() { global $dir, $map_file, $layer, $base, $locaplic, $dir_tmp, $postgis_mapa; if (empty($map_file) && file_exists($dir . "/../../temas/{$layer}.map")) { $versao = versao(); $versao = $versao["principal"]; if (!isset($base) || $base == "") { if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $base = $locaplic . "/aplicmap/geral1windowsv" . $versao . ".map"; } else { if ($base == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv' . $versao . '.map')) { $base = "/var/www/i3geo/aplicmap/geral1debianv" . $versao . ".map"; } if ($base == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { $base = "/var/www/html/i3geo/aplicmap/geral1fedorav" . $versao . ".map"; } if ($base == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { $base = "/opt/www/html/i3geo/aplicmap/geral1v" . $versao . ".map"; } if ($base == "") { $base = $locaplic . "/aplicmap/geral1v" . $versao . ".map"; } } } $map_file = $dir_tmp . "/" . nomeRandomico() . ".map"; $mapa = ms_newMapObj($base); $tempMapa = ms_newMapObj($dir . "/../../temas/{$layer}.map"); $layern = $tempMapa->getlayer(0); restauraConObj($mapa, $postgis_mapa); ms_newLayerObj($mapa, $layern); $mapa->save($map_file); } return $map_file; }
function draw_header($map, $img, $width, $height) { /* * Draw the black bar at the top of the screen */ $layer = ms_newLayerObj($map); $layer->set("status", MS_ON); $layer->set("type", MS_LAYER_POLYGON); $layer->set("transform", MS_OFF); $wkt = "POLYGON((0 0, 0 {$height}, {$width} {$height}, {$width} 0, 0 0))"; $layer->addFeature(ms_shapeObjFromWkt($wkt)); $layerc0 = ms_newClassObj($layer); $layerc0s0 = ms_newStyleObj($layerc0); $layerc0s0->color->setRGB(0, 0, 0); $layer->draw($img); }
function mktitle($map, $imgObj, $titlet, $subtitle = "", $width = 640) { $height = $subtitle == "" ? 36 : 53; $layer = ms_newLayerObj($map); $layer->set("status", MS_ON); $layer->set("type", MS_LAYER_POLYGON); $layer->set("transform", MS_OFF); $wkt = "POLYGON((0 0, 0 {$height}, {$width} {$height}, {$width} 0, 0 0))"; $layer->addFeature(ms_shapeObjFromWkt($wkt)); $layerc0 = ms_newClassObj($layer); $layerc0s0 = ms_newStyleObj($layerc0); $layerc0s0->color->setRGB(0, 0, 0); $layer->draw($imgObj); $tlayer = $map->getLayerByName("iem_headerbar_title"); $point = ms_newpointobj(); $point->setXY(82, 22); $point->draw($map, $tlayer, $imgObj, 0, $titlet); if ($subtitle != "") { $point = ms_newpointobj(); $point->setXY(82, 39); $point->draw($map, $tlayer, $imgObj, 1, $subtitle); } }
if ($lcon == " " || $lcon == "" || in_array($lcon, array_keys($postgis_mapa))) { // //o metadata CONEXAOORIGINAL guarda o valor original para posterior substituição // if ($lcon == " " || $lcon == "") { $l->set("connection", $postgis_mapa); $l->setmetadata("CONEXAOORIGINAL", $lcon); } else { $l->set("connection", $postgis_mapa[$lcon]); $l->setmetadata("CONEXAOORIGINAL", $lcon); } } } } autoClasses($l, $oMap); ms_newLayerObj($oMap, $l); $oMap->save($nomeMapfileTmp); validaAcessoTemas($nomeMapfileTmp, true); $oMap = ms_newMapobj($nomeMapfileTmp); restauraCon($nomeMapfileTmp, $postgis_mapa); $layer = $oMap->getlayerbyname($tema); if ($layer == "") { echo "Layer nao encontrado"; exit; } $data = pegaDadosJ(); $format = $_GET["format"]; $jsonp = $_GET["jsonp"]; if ($format == "storymap") { //parametros via URL $storymap = $layer->getmetadata("storymap");
function __construct() { if (\app\inc\Input::getPath()->part(3) == "tilecache") { $postgisschema = \app\inc\Input::getPath()->part(4); } else { $postgisschema = \app\inc\Input::getPath()->part(3); } $db = \app\inc\Input::getPath()->part(2); $dbSplit = explode("@", $db); if (sizeof($dbSplit) == 2) { $db = $dbSplit[1]; } $path = App::$param['path'] . "/app/wms/mapfiles/"; $name = $db . "_" . $postgisschema . ".map"; $oMap = new \mapObj($path . $name); $request = new \OWSRequestObj(); if ($_SERVER['REQUEST_METHOD'] === 'GET') { foreach ($_GET as $k => $v) { if (strtolower($k) == "layers" || strtolower($k) == "layer" || strtolower($k) == "typename" || strtolower($k) == "typenames") { $layers = $v; } $request->setParameter($k, $v); } } else { $request->loadParams(); } if ($_SESSION['http_auth'] != $db) { \app\models\Database::setDb($db); $postgisObject = new \app\inc\Model(); foreach (explode(",", $layers) as $layer) { $auth = $postgisObject->getGeometryColumns($layer, "authentication"); $layerSplit = explode(".", $layer); $HTTP_FORM_VARS["TYPENAME"] = $layerSplit[1]; if ($auth == "Read/write") { include 'inc/http_basic_authen.php'; } else { include 'inc/http_basic_authen_subuser.php'; } } } if ($_GET['sql_layer']) { include '../libs/functions.php'; include '../conf/main.php'; $postgisdb = "mydb"; $request->setParameter("SLD_BODY", "<StyledLayerDescriptor version='1.1.0'><NamedLayer><Name>sql</Name><UserStyle><Title>xxx</Title><FeatureTypeStyle><Rule><LineSymbolizer><Stroke><CssParameter name='stroke'>#FFFF00</CssParameter><CssParameter name='stroke-width'>15</CssParameter></Stroke></LineSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>\n "); $postgisObj = new postgis(); $postgisObj2 = new postgis(); $view = "public.hello"; $sqlView = "CREATE VIEW {$view} as " . urldecode($_GET['sql_layer']); $postgisObj->connect(); $postgisObj->execQuery($sqlView); $postgisObj->execQuery("CREATE SEQUENCE _serial START 1"); $arrayWithFields = $postgisObj2->getMetaData($view); foreach ($arrayWithFields as $key => $arr) { if ($arr['type'] == "geometry") { $fieldsArr[] = "transform(" . $key . ",900913) as the_geom"; } else { $fieldsArr[] = $key; } } $fieldsArr[] = "nextval('_serial') as _serial"; $sql = implode(",", $fieldsArr); $sql = "SELECT {$sql} FROM {$view}"; $request->setParameter("LAYERS", $_GET['LAYERS'] . ",sql"); $layer = ms_newLayerObj($oMap); $layer->updateFromString("\n\tLAYER\n\t\tNAME 'sql'\n\t\tSTATUS off\n\t\tPROCESSING 'CLOSE_CONNECTION=DEFER'\n\t\tDATA \"the_geom from ({$sql}) as foo using unique _serial using srid=900913\"\n\t\tTYPE POLYGON\n\t\tCONNECTIONTYPE POSTGIS\n\t\tCONNECTION 'user=postgres dbname=mydb host=127.0.0.1'\n\t\tMETADATA\n\t\t 'wms_title' 'sql'\n\t\t 'wms_srs' 'EPSG:4326'\n\t\t 'wms_name' 'sql'\n\t\tEND\n\t\tPROJECTION\n\t\t 'init=epsg:900913'\n\t\tEND\n\t\tCLASS\n\t\t NAME 'New style'\n\t\t STYLE\n\t\t\tOUTLINECOLOR 255 0 0\n\t\t END\n \t\tEND\n \tEND\n\t"); } ms_ioinstallstdouttobuffer(); $oMap->owsdispatch($request); if ($_GET['sql_layer']) { $sql = "DROP VIEW {$view}"; $result = $postgisObj->execQuery($sql); } $contenttype = ms_iostripstdoutbuffercontenttype(); if ($contenttype == 'image/png') { header('Content-type: image/png'); } else { header('Content-type: text/xml'); } ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); }
$e_track = ms_newLayerObj($e_map); $e_track->set('name', 'temptrack'); $e_track->set('status', MS_ON); $e_track->set('type', MS_LAYER_LINE); $e_track->addFeature($e_shape); $e_class = ms_newClassObj($e_track); $e_style = ms_newStyleObj($e_class); $e_style->color->setRGB(255, 255, 20); $e_style->set("size", 3); $e_style->set("symbolname", 'circle'); $e_shapestart = ms_newShapeObj(MS_SHAPE_POINT); $e_line = ms_newLineObj(); list($px, $py) = split(' ', $_SESSION['track'][0]); $e_line->addXY($px, $py); $e_shapestart->add($e_line); $e_track3 = ms_newLayerObj($e_map); $e_track3->set('name', 'temptrackstart'); $e_track3->set('status', MS_ON); $e_track3->set('type', MS_LAYER_POINT); $e_track3->addFeature($e_shapestart); $e_class3 = ms_newClassObj($e_track3); $e_style3 = ms_newStyleObj($e_class3); $e_style3->set("symbolname", 'flag2'); } $e_image = $e_map->draw(); $image = $e_image->saveWebImage(); $e_ref = $e_map->drawreferencemap(); $refsrc = $e_ref->saveWebImage('MS_PNG', 0, 0, -1); // affichage l?gende if ($e_map->scale < $minscaledispscan100legend) { $smarty->assign('booldisplegscan100', true);
$ia511 = $map->getlayerbyname("ia511"); $c0 = $ia511->getClass(0); $s0 = $c0->getStyle(0); $s0->set("symbolname", "ia511-8bit"); if (!$metroview) { //$ia511->draw($img); $pt = ms_newPointObj(); $pt->setXY(555, 160); //$pt->draw($map, $ia511, $img, 0, ""); } $logokey2 = $map->getlayerbyname("colorkey"); $c1 = $logokey2->getClass(0); $s1 = $c1->getStyle(0); $s1->set("symbolname", "logokey-8bit"); $s1->set("size", 60); $logokey = ms_newLayerObj($map); $logokey->set("type", MS_SHP_POINT); $logokey->set("transform", MS_FALSE); $logokey->set("status", MS_ON); $logokey->set("labelcache", MS_ON); $logokey_c3 = ms_newClassObj($logokey); $logokey_c3s0 = ms_newStyleObj($logokey_c3); //$logokey_c3s0->set("symbolname", "iem"); //$logokey_c3s0->set("size", 45); $l = $logokey_c3->addLabel(new labelObj()); $logokey_c3->getLabel(0)->set("buffer", 10); $logokey_c3->getLabel(0)->set("type", MS_BITMAP); $logokey_c3->getLabel(0)->set("size", MS_MEDIUM); $logokey_c3->getLabel(0)->color->setRGB(0, 0, 0); $bpt = ms_newpointobj(); $bpt->setXY(300, 300);
function updateMapfile($layer_tablename,$hex_colors,$expressions,$classitem) { if (PHP_OS == "WINNT" || PHP_OS == "WIN32") { define( "MODULE", "php_mapscript.dll" ); // load the mapscript module if (!extension_loaded("MapScript")) dl(MODULE); } else { dl("php_mapscript.so"); } $FILEPATH = $_SERVER['SCRIPT_FILENAME']; // remove the file name and append the new directory name if (PHP_OS == "WINNT" || PHP_OS == "WIN32") { $pos1 = strrpos($FILEPATH,'\\'); $FILEPATH= substr($FILEPATH,0,$pos1)."\\choropleth\\"; }else{ $pos1 = strrpos($FILEPATH,'/'); $FILEPATH= substr($FILEPATH,0,$pos1)."/choropleth/"; } $base_path = base_path(); global $user; $ret_file= array(); //global $db_url; $layer_type =''; $query = "select layer_type from \"Meta_Layer\" where layer_tablename='".$layer_tablename."'"; $result = db_query($query); if($obj = db_fetch_object($result)){ switch($obj->layer_type){ case 'POLYGON': case 'MULTIPOLYGON': $layer_type = 'polygon'; break; case 'LINESTRING': case 'MULTILINESTRING': $layer_type = 'line'; break; case 'POINT': case 'MULTIPOINT': $layer_type = 'point'; break; } } $mapfilename = $layer_tablename; // $dbpasswd = substr($db_url,$index2,$index2-$index1); // $dbuser = preg_replace('/pgsql:\/\/(.*)@[^@]*/','$1',$db_url); // $dbname = substr(strrchr($db_url,'/'),1); // if(strpos($dbuser,':') >= 0) { // list($dbuser,$dbpasswd) = split(":",$dbuser); // } else { // $dbpasswd = ""; // } $name = $FILEPATH.$mapfilename.".map"; /* create a file */ $fh = fopen($name,"w"); fwrite($fh,"map\n"); fwrite($fh,"end"); fclose($fh); /* create new map object and set the parameters */ $map = ms_newMapObj($name); $map->setExtent(60,0,100,40); $map->setSize(725,800); $map->set("units",MS_DD); $map->setProjection("init=epsg:4326"); $map->set("maxsize",4096); $map->selectOutputFormat('PNG'); $map->outputformat->set("transparent", MS_ON); $map->outputformat->set("imagemode", "rgba"); $map->outputformat->setOption("formatoption","INTERLACE=OFF"); //web object $map->setMetaData("wms_srs","epsg:4326 epsg:2805 epsg:24600 epsg:54004 EPSG:900913"); /* set layer specific parameters */ $layer = ms_newLayerObj($map); $layer->set("name",$layer_tablename); switch($layer_type){ case 'polygon': $layer->set("type", MS_LAYER_POLYGON); break; case 'line': $layer->set("type", MS_LAYER_LINE); break; case 'point': $layer->set("type", MS_LAYER_POINT); } $layer->set("status", MS_ON); $layer->set("connectiontype",MS_POSTGIS); $layer->set("connection", getDBConnectionString()); /* if("" == $dbpasswd) { $layer->set("connection","user="******" dbname=".$dbname." host=localhost"); } else { $layer->set("connection","user="******" password="******" dbname=".$dbname." host=localhost"); } */ $layer->set("data","__mlocate__topology from ".$layer_tablename . " using unique __mlocate__id"); $layer->set("classitem",trim($classitem)); $layer->set("transparency",65); $layer->set("template","template.html"); $layer->setMetaData("wms_feature_info_mime_type","text/html"); $layer->setMetaData("wms_include_items","all"); // loop through the list of values and create the corresponding classes $len = count($expressions); for($i = 0;$i<$len;$i++) { $class = ms_newClassObj($layer); $class->set("status",MS_ON); $cat = str_replace(' COMMA ',',' ,$expressions[$i] ); $class->set("name",urldecode($cat)); $class->setExpression("$cat"); $style = ms_newStyleObj($class); $rgb_color = hex2rgb($hex_colors[$i]); $style->color->setRGB($rgb_color[0],$rgb_color[1],$rgb_color[2]); $style->outlinecolor->setRGB(000,000,000); $style->set("angle",0); } /* set layer specific parameters for select layer*/ $layer_select = ms_newLayerObj($map); $layer_select->set("name",$layer_tablename.'_select'); switch($layer_type){ case 'polygon': $layer_select->set("type", MS_LAYER_POLYGON); break; case 'line': $layer_select->set("type", MS_LAYER_LINE); break; case 'point': $layer_select->set("type", MS_LAYER_POINT); } $layer_select->set("status", MS_ON); //MS_LAYER_POLYGON $layer_select->set("connectiontype",MS_POSTGIS); $layer->set("connection", getDBConnectionString()); /* if("" == $dbpasswd) { $layer_select->set("connection","user="******" dbname=".$dbname." host=localhost"); } else { $layer_select->set("connection","user="******" password="******" dbname=".$dbname." host=localhost"); } */ $class_select = ms_newClassObj($layer_select); $style_select = ms_newStyleObj($class_select); $style_select->outlinecolor->setRGB(000,000,255); $style_select->set("width",3); $layer_select->setfilter("'__mlocate__id = %pid%'"); $layer_select->set("data","__mlocate__topology from ".$layer_tablename . " using unique __mlocate__id"); /* set layer specific parameters for Search layer*/ $layer_search = ms_newLayerObj($map); $layer_search->set("name",$layer_tablename.'_search'); switch($layer_type){ case 'polygon': $layer_search->set("type", MS_LAYER_POLYGON); break; case 'line': $layer_search->set("type", MS_LAYER_LINE); break; case 'point': $layer_search->set("type", MS_LAYER_POINT); } $layer_search->set("status", MS_ON); $layer_search->set("connectiontype",MS_POSTGIS); $layer->set("connection", getDBConnectionString()); /* if("" == $dbpasswd) { $layer_search->set("connection","user="******" dbname=".$dbname." host=localhost"); } else { $layer_search->set("connection","user="******" password="******" dbname=".$dbname." host=localhost"); } */ $layer_search->set("transparency",65); $layer_search->set("template","template.html"); $layer_search->setMetaData("wms_feature_info_mime_type","text/html"); $layer_search->setMetaData("wms_include_items","all"); $class_search = ms_newClassObj($layer_search); $style_search = ms_newStyleObj($class_search); $style_search->color->setRGB(228,245,205); $style_search->outlinecolor->setRGB(000,000,000); $style_search->set("width",3); $layer_search->setfilter("'__mlocate__id IN (%pid%)'"); $layer_search->set("data","__mlocate__topology from ".$layer_tablename . " using unique __mlocate__id"); /* set layer specific parameters for Search BBOX layer*/ $layer_searchBB = ms_newLayerObj($map); $layer_searchBB->set("name",$layer_tablename.'_searchBB'); switch($layer_type){ case 'polygon': $layer_searchBB->set("type", MS_LAYER_POLYGON); break; case 'line': $layer_searchBB->set("type", MS_LAYER_LINE); break; case 'point': $layer_searchBB->set("type", MS_LAYER_POINT); } $layer_searchBB->set("status", MS_ON); $layer_searchBB->set("connectiontype",MS_POSTGIS); $layer->set("connection", getDBConnectionString()); $class_searchBB = ms_newClassObj($layer_searchBB); $style_searchBB = ms_newStyleObj($class_searchBB); $style_searchBB->outlinecolor->setRGB(000,000,255); $style_searchBB->set("width",3); $layer_searchBB->setfilter("'__mlocate__id IN (%pid%)'"); $layer_searchBB->set("data","__mlocate__topology from ".$layer_tablename . " using unique __mlocate__id"); $map->save($name); }
unlink($dirmap . "/" . $nomePrefixo . ".shx"); unlink($dirmap . "/" . $nomePrefixo . ".dbf"); unlink($dirmap . "/" . $nomePrefixo . ".shp"); exit; } $arqshp = $dir_tmp . "/" . $nomePrefixo . ".shp"; //pega os parametros de conexao include "classe_metaestat.php"; $m = new Metaestat(); $conexao = $m->listaConexao($_POST["i3GEOuploadcodigoconexao"], true); //array(5) { ["codigo_estat_conexao"]=> string(1) "1" ["bancodedados"]=> string(8) "geosaude" ["host"]=> string(9) "localhost" ["porta"]=> string(4) "5432" ["usuario"]=> string(8) "postgres" } //pega as colunas do shapefile $shapefileObj = ms_newShapefileObj($arqshp, -1); $numshapes = $shapefileObj->numshapes; $mapObj = ms_newMapObjFromString("MAP END"); $layer = ms_newLayerObj($mapObj); $layer->set("data", $arqshp); if (file_exists($dir_tmp . "/" . $nomePrefixo . ".prj")) { $layer->setprojection("AUTO"); } $layer->open(); $colunasTemp = $layer->getItems(); $colunas = array(); foreach ($colunasTemp as $c) { //abaixo gid e forcado a entrar if (!is_numeric($c) && strtolower($c) != "gid") { $colunas[] = $c; } } echo "<br>Numshapes existentes no SHP: " . $numshapes; $tipo = $shapefileObj->type;
function sobeAnno($map_file) { $mapa = ms_newMapObj($map_file); $numlayers = $mapa->numlayers; for ($i = 0; $i < $numlayers; ++$i) { $layer = $mapa->getlayer($i); if ($layer->type == 4) { $temp = ms_newLayerObj($mapa, $layer); $layer->set("status", MS_DELETE); } } $mapa->save($map_file); }
function criaToponimia($item, $position, $partials, $offsetx, $offsety, $minfeaturesize, $mindistance, $force, $shadowcolor, $shadowsizex, $shadowsizey, $outlinecolor, $cor, $sombray, $sombrax, $sombra, $fundo, $angulo, $tamanho, $fonte, $tipo, $wrap, $novotema = "sim") { error_reporting(0); if (!$this->layer) { return "erro"; } $this->removeToponimia(); if (!isset($tipo)) { $tipo = ""; } if ($item != "") { if ($novotema == "sim") { $nome = pegaNome($this->layer); $novolayer = ms_newLayerObj($this->mapa, $this->layer); $nomer = nomeRandomico(); $novolayer->set("name", $nomer); $novolayer->set("group", ""); $novolayer->set("type", $this->layer->type); $nclasses = $novolayer->numclasses; for ($i = 0; $i < $nclasses; ++$i) { $c = $novolayer->getclass($i); $c->set("status", MS_DELETE); } $novac = ms_newClassObj($novolayer); $novolayer->set("status", MS_DEFAULT); $novolayer->setmetadata("tema", "texto de " . $nome); $novolayer->setmetadata("tip", ""); $novolayer->setmetadata("tiles", "nao"); $novolayer->setmetadata("identifica", "nao"); $novolayer->set("labelitem", $item); } else { $nomer = $this->layer->name; $novolayer = $this->mapa->getlayerbyname($nomer); } $novolayer->setmetadata("cache", ""); $this->layer = $novolayer; } else { //$novac = $this->layer->getclass(0); $nomer = $this->layer->name; } if (!($this->vi >= 60200)) { $this->layer->set("labelitem", $item); } $nclasses = $this->layer->numclasses; for ($i = 0; $i < $nclasses; ++$i) { $novac = $this->layer->getclass($i); if ($this->vi >= 60200) { //$indiceLabel = $novac->addLabel(new labelObj()); $s = "CLASS LABEL TEXT '[" . $item . "]' END END"; $novac->updateFromString($s); $label = $novac->getLabel($indiceLabel); } else { $label = $novac->label; } if ($wrap != "") { $label->set("maxlength", 1); $s = $novac->getTextString; $s = "CLASS LABEL WRAP '{$wrap}' END END"; $novac->updateFromString($s); } if ($this->vi >= 60200) { $label = $novac->getLabel($indiceLabel); } else { $label = $novac->label; } if ($fonte != "bitmap") { //$label->set("type",MS_TRUETYPE); $label->updatefromstring("LABEL TYPE TRUETYPE END"); $label->set("font", $fonte); $label->set("size", $tamanho); } else { //$label->set("type",MS_BITMAP); $label->updatefromstring("LABEL TYPE BITMAP END"); //$label->set("font",$fonte); $t = MS_TINY; if ($tamanho > 5) { $t = MS_TINY; } if ($tamanho >= 7) { $t = MS_SMALL; } if ($tamanho >= 10) { $t = MS_MEDIUM; } if ($tamanho >= 12) { $t = MS_LARGE; } if ($tamanho >= 14) { $t = MS_GIANT; } $label->set("size", $t); } if ($angulo > 0) { $label->set("angle", $angulo); } if ($angulo == "AUTO") { $label->updatefromstring("LABEL ANGLE AUTO END"); } if (strtoupper($angulo) == "CURVO" || strtoupper($angulo) == "FOLLOW") { $label->updatefromstring("LABEL ANGLE FOLLOW END"); } corE($label, $cor, "color"); corE($label, $fundo, "backgroundcolor"); corE($label, $sombra, "backgroundshadowcolor", $sombrax, $sombray); //$label->set("backgroundshadowsizex",$sombrax); //$label->set("backgroundshadowsizey",$sombray); corE($label, $outlinecolor, "outlinecolor"); corE($label, $shadowcolor, "shadowcolor"); $label->set("shadowsizex", $shadowsizex); $label->set("shadowsizey", $shadowsizey); $label->set("force", $force); $label->set("mindistance", $mindistance); $label->set("minfeaturesize", $minfeaturesize); $label->set("offsetx", $offsetx); $label->set("offsety", $offsety); $label->set("partials", $partials); $p = array("MS_AUTO" => MS_AUTO, "MS_UL" => MS_UL, "MS_LR" => MS_LR, "MS_UR" => MS_UR, "MS_LL" => MS_LL, "MS_CR" => MS_CR, "MS_CL" => MS_CL, "MS_UC" => MS_UC, "MS_LC" => MS_LC, "MS_CC" => MS_CC); $label->set("position", $p[$position]); } if ($tipo == "teste") { $i = gravaImagemMapa($this->mapa); return $i["url"]; } else { return $nomer; } }
function pontoEmPoligono($temaPt, $temasPo, $locaplic) { set_time_limit(3000); if ($this->dbaseExiste == false) { include_once dirname(__FILE__) . "/../pacotes/phpxbase/api_conversion.php"; } $layerPt = $this->mapa->getlayerbyname($temaPt); $layerPt->set("template", "none.htm"); $layerPt->set("tolerance", 0); // define o nome do novo shapefile que será criado $nomefinal = nomeRandomico(); $nomeshp = $this->diretorio . "/" . $nomefinal; // $spts = retornaShapesSelecionados($layerPt, $this->arquivo, $this->mapa); if (count($spts) == 0) { $spts = retornaShapesMapext($layerPt, $this->mapa); } // $itemspt = pegaItens($layerPt); // gera o novo arquivo shape file // cria o dbf $def = $this->criaDefDb($itemspt, false); // pega os itens dos temas poligonais $layersPol = array(); $temas = explode(",", $temasPo); $layers = array(); $nomesitens = array(); // guarda os nomes dos temas e seus itens $conta = 0; $listaItens = array(); foreach ($temas as $tema) { $layer = $this->mapa->getlayerbyname($tema); $layer->set("template", "none.htm"); $layer->set("status", MS_DEFAULT); $items = pegaItens($layer); if ($layer->type == MS_LAYER_RASTER) { $lineo = $spts[0]->line(0); $pt = $lineo->point(0); $layer->queryByPoint($pt, 0, 0); } $layers[] = $layer; if (!$items) { return "erro ao obter a lista de itens do tema {$layer->name}"; } $listaItens[$layer->name] = $items; foreach ($items as $ni) { $def[] = array("I" . $conta, "C", "254"); $nomesitens[] = "Tema: " . $layer->name . ", Item: " . $ni . " Novo: I" . $conta . "<br>"; $conta = $conta + 1; } } if ($this->dbaseExiste == false) { $db = xbase_create($nomeshp . ".dbf", $def); xbase_close($db); } else { $db = dbase_create($nomeshp . ".dbf", $def); dbase_close($db); } // acrescenta os pontos no novo shapefile $dbname = $nomeshp . ".dbf"; if ($this->dbaseExiste == false) { $db = xbase_open($dbname, 2); } else { $db = dbase_open($dbname, 2); } // cria o shapefile $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POINT); foreach ($spts as $spt) { foreach ($itemspt as $ni) { $reg[] = $this->truncaS($spt->values[$ni]); } $novoshpf->addShape($spt); $lineo = $spt->line(0); $pt = $lineo->point(0); // faz a pesquisa // error_reporting(0); foreach ($layers as $layer) { $layer->set("template", "none.htm"); $layer->set("toleranceunits", MS_PIXELS); $layer->set("tolerance", 1); $ident = @$layer->queryByPoint($pt, 0, 0); if ($ident == "MS_SUCCESS") { $itens = $listaItens[$layer->name]; $sopen = $layer->open(); if ($sopen == MS_FAILURE) { return "erro"; } if ($layer->getResult(0) !== FALSE) { if ($this->v >= 6) { $shape = $layer->getShape($layer->getResult(0)); } else { $result = $layer->getResult(0); $shp_index = $result->shapeindex; $shape = $layer->getfeature($shp_index, -1); } foreach ($itens as $item) { $p = $this->truncaS($shape->values[$item]); if (empty($p)) { $p = "-"; } $reg[] = $p; } } else { foreach ($itens as $item) { $reg[] = "???"; } } } else { foreach ($itens as $item) { $reg[] = "???"; } } $layer->close(); } if ($this->dbaseExiste == false) { xbase_add_record($db, $reg); } else { dbase_add_record($db, $reg); } $reg = array(); } if ($this->dbaseExiste == false) { xbase_close($db); } else { dbase_close($db); } $novolayer = ms_newLayerObj($this->mapa, $layerPt); $novolayer->set("data", $nomeshp . ".shp"); $novolayer->set("name", $nomefinal); $novolayer->setmetadata("TEMA", "Cruzamento (" . $nomefinal . ")"); $novolayer->setmetadata("TEMALOCAL", "SIM"); $novolayer->setmetadata("DOWNLOAD", "SIM"); $novolayer->setmetadata("ITENS", ""); $novolayer->setmetadata("ITENSDESC", ""); $novolayer->setmetadata("CACHE", ""); if (ms_GetVersionInt() > 50201) { $novolayer->setconnectiontype(MS_SHAPEFILE); } else { $novolayer->set("connectiontype", MS_SHAPEFILE); } if (file_exists($this->qyfile)) { unlink($this->qyfile); } return implode(" ", $nomesitens); }
/** * Complementa um mapfile resumido inserindo seus layers em um mapfile completo, contendo todos os elementos necessarios para uso * Usado na geracao de WMS e outros servicos * @param mapfile resumido * @return nome do arquivo com o mapfile completo */ function mapfileCompleto($mapfile) { $f = $this->base; if ($f == "") { include_once $this->locaplic . "/classesphp/funcoes_gerais.php"; $versao = versao(); $versao = $versao["principal"]; $f = ""; if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $f = $this->locaplic . "/aplicmap/geral1windowsv" . $versao . ".map"; } else { if ($f == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv' . $versao . '.map')) { $f = "/var/www/i3geo/aplicmap/geral1debianv" . $versao . ".map"; } if ($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { $f = "/var/www/html/i3geo/aplicmap/geral1fedorav" . $versao . ".map"; } if ($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { $f = "/opt/www/html/i3geo/aplicmap/geral1v" . $versao . ".map"; } if ($f == "") { $f = $this->locaplic . "/aplicmap/geral1v" . $versao . ".map"; } } } $mapa = ms_newMapObj($f); $n = $mapa->numlayers; for ($i = 0; $i < $n; $i++) { $l = $mapa->getlayer($i); $l->set("status", MS_DELETE); } $mapatemp = ms_newMapObj($mapfile); $l = $mapatemp->getlayer(0); $l->set("status", MS_DEFAULT); $novonome = str_replace(".map", "completo.map", $mapfile); //necessario para o kml $mapa->setmetadata("ows_enable_request", "*"); $listaepsg = "EPSG:4618 EPSG:4291 EPSG:4326 EPSG:22521 EPSG:22522 EPSG:22523 EPSG:22524 EPSG:22525 EPSG:29101 EPSG:29119 EPSG:29120 EPSG:29121 EPSG:29122 EPSG:29177 EPSG:29178 EPSG:29179 EPSG:29180 EPSG:29181 EPSG:29182 EPSG:29183 EPSG:29184 EPSG:29185"; $l->setmetadata("ows_srs", $listaepsg); $temp = ms_newLayerObj($mapa, $l); $mapa->save($novonome); return $novonome; }
/** * Load the map and create the map instance */ function load_map() { if (!file_exists($this->map) && is_readable($this->map)) { $this->set_error('Cannot read mapfile ' . $this->map); } else { $protocolo = explode("/", $_SERVER['SERVER_PROTOCOL']); $servidor = strtolower($protocolo[0]) . "://" . $_SERVER['HTTP_HOST']; $temp = $this->map; if (file_exists(dirname(__FILE__) . "/ms_configura.php")) { include dirname(__FILE__) . "/ms_configura.php"; } if (file_exists(dirname(__FILE__) . "/../../ms_configura.php")) { include dirname(__FILE__) . "/../../ms_configura.php"; } if (file_exists(dirname(__FILE__) . "/../../../ms_configura.php")) { include dirname(__FILE__) . "/../../../ms_configura.php"; } if (!file_exists($this->map)) { $maptemp = ms_newMapObj($locaplic . "/temas/" . $this->map . ".map"); //if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) //{$this->map = $locaplic."/aplicmap/geral1windows.map";} //else //{$this->map = $locaplic."/aplicmap/geral1.map";} $versao = $this->versao(); $versao = $versao["principal"]; if (!isset($base) || $base == "") { if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $base = $locaplic . "/aplicmap/geral1windowsv" . $versao . ".map"; } else { if ($base == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv' . $versao . '.map')) { $base = "/var/www/i3geo/aplicmap/geral1debianv" . $versao . ".map"; } if ($base == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { $base = "/var/www/html/i3geo/aplicmap/geral1fedorav" . $versao . ".map"; } if ($base == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { $base = "/opt/www/html/i3geo/aplicmap/geral1v" . $versao . ".map"; } if ($base == "") { $base = $locaplic . "/aplicmap/geral1v" . $versao . ".map"; } } } $this->map = $base; $this->map_object = ms_newMapObj($this->map); if (!$this->_zipped) { $this->map_object->setmetadata('wms_onlineresource', $servidor . ":80/i3geo/ogc.php?tema=" . $temp . "&width=1500&height=1500&TRANSPARENT=true&FORMAT=image/png&"); $this->map_object->setmetadata("ows_enable_request", "*"); } $n = $this->map_object->numlayers; for ($i = 0; $i < $n; $i++) { $l = $this->map_object->getlayer($i); $l->set("status", MS_DELETE); $l->set("name", ""); } for ($i = 0; $i < $maptemp->numlayers; $i++) { $l = $maptemp->getlayer($i); $l->set("status", MS_DEFAULT); if (!$this->_zipped) { $l->set("type", MS_LAYER_RASTER); $l->setmetadata('wms_onlineresource', "../../ogc.php?tema=" . $temp . "&width=1500&height=1500&TRANSPARENT=true&FORMAT=image/png&"); $l->setmetadata("ows_enable_request", "*"); } ms_newLayerObj($this->map_object, $l); } } else { $this->map_object = ms_newMapObj($this->map); //$w = $this->map_object->web; //$w->set("template","none.htm"); if (!$this->_zipped) { //$this->map_object->setmetadata('wms_onlineresource',$servidor.":80".$locmapserv."?map=".$temp."&width=1500&height=1500&"); $this->map_object->setmetadata('wms_onlineresource', "../../ogc.php?tema=" . $temp . "&width=1500&height=1500&TRANSPARENT=true&FORMAT=image/png&"); $this->map_object->setmetadata("ows_enable_request", "*"); } $n = $this->map_object->numlayers; for ($i = 0; $i < $n; $i++) { $l = $this->map_object->getlayer($i); $l->set("status", MS_DEFAULT); if (!$this->_zipped) { $l->set("type", MS_LAYER_RASTER); } //$l->setmetadata('wms_onlineresource',"../../ogc.php?tema=".$temp."&width=500&height=500&"); //ms_newLayerObj($this->map_object, $l); } } if (!$this->map_object) { $this->set_error('Cannot load mapfile ' . $this->map); } } }
<?php include_once dirname(__FILE__) . "/../safe.php"; verificaBlFerramentas(basename(dirname(__FILE__)), $i3geoBlFerramentas, false); $retorno = ""; //string que será retornada ao browser via JSON $url = $_GET["url"]; switch (strtoupper($funcao)) { case "CRIALAYER": $mapa = ms_newMapObj($map_file); $novolayer = ms_newLayerObj($mapa); $novolayer->set("name", $url); $novolayer->setmetadata("TEMA", $url); $novolayer->setmetadata("CLASSE", "SIM"); $novolayer->setmetadata("PLUGINI3GEO", '{"plugin":"layerkml","parametros":{"url":"' . $url . '"}}'); $novolayer->set("type", MS_LAYER_POINT); $classe = ms_newClassObj($novolayer); $classe->set("name", ""); $novolayer->set("status", MS_DEFAULT); $novolayer->set("template", "none.htm"); $salvo = $mapa->save(str_replace(".map", "", $map_file) . ".map"); $retorno = "ok"; break; } if (isset($map_file) && isset($postgis_mapa) && $map_file != "") { restauraCon($map_file, $postgis_mapa); } cpjson($retorno);
$db_ts = gmstrftime("%Y-%m-%d %H:%M+00", $ts); $year = date("Y", $ts); $c0->set("data", "geom from " . " (select significance, phenomena, geom, random() as oid from sbw_{$year} " . " WHERE polygon_end > '{$db_ts}' and polygon_begin <= '{$db_ts}' and " . " issue <= '{$db_ts}' " . " and significance = 'W' ORDER by phenomena ASC) as foo " . " using unique oid using SRID=4326"); $radar = $map->getlayerbyname("nexrad_n0q"); $radar->set("status", MS_ON); $fp = "/mesonet/ARCHIVE/data/" . gmdate('Y/m/d/', $radts) . "GIS/uscomp/n0r_" . gmdate('YmdHi', $radts) . ".png"; if (file_exists($fp)) { $radar->set("data", $fp); $title = "RADAR"; $y = 10; } else { $radar->set("status", MS_OFF); $title = "RADAR Unavailable\n"; $y = 20; } $cp = ms_newLayerObj($map); $cp->set("type", MS_SHAPE_POINT); $cp->set("status", MS_ON); $cp->set("labelcache", MS_ON); $cl = ms_newClassObj($cp); $lbl = new labelObj(); $cl->addLabel($lbl); $cl->getLabel(0)->set("type", MS_TRUETYPE); $cl->getLabel(0)->set("size", 10); $cl->getLabel(0)->set("position", MS_CR); $cl->getLabel(0)->set("font", "liberation-bold"); $cl->getLabel(0)->set("force", MS_ON); $cl->getLabel(0)->set("offsetx", 6); $cl->getLabel(0)->set("offsety", 0); $cl->getLabel(0)->outlinecolor->setRGB(255, 255, 255); $cl->getLabel(0)->color->setRGB(0, 0, 0);
function graficotema($lista, $tamanho = "50", $tipo = "PIE", $outlinecolor = "", $offset = 0, $mesmoTema = false) { if (!$this->layer) { return "erro"; } $nome = pegaNome($this->layer); $novolayer = ms_newLayerObj($this->mapa, $this->layer); $nomer = nomeRandomico(); $novolayer->set("name", $nomer); $novolayer->set("group", ""); $novolayer->setmetadata("cache", "nao"); $novolayer->set("type", MS_LAYER_CHART); $novolayer->setprocessing("CHART_TYPE={$tipo}"); $novolayer->setprocessing("CHART_SIZE={$tamanho}"); $nclasses = $novolayer->numclasses; for ($i = 0; $i < $nclasses; ++$i) { $c = $novolayer->getclass($i); $c->set("status", MS_DELETE); } $novolayer->set("status", MS_DEFAULT); $novolayer->setmetadata("tema", "grafico de " . $nome); $lista = explode("*", $lista); foreach ($lista as $l) { $ll = explode(",", $l); $novac = ms_newClassObj($novolayer); $novac->set("name", $ll[0]); $novoestilo = ms_newStyleObj($novac); $novoestilo->setBinding(MS_STYLE_BINDING_SIZE, $ll[0]); $cor = $novoestilo->color; $cor->setrgb($ll[1], $ll[2], $ll[3]); if ($outlinecolor != "") { $o = explode(",", $outlinecolor); $corl = $novoestilo->outlinecolor; $corl->setrgb($o[0], $o[1], $o[2]); } if ($tipo == "PIE") { $novoestilo->set("offsetx", $offset); } } if ($mesmoTema == true) { $this->layer->set("status", MS_DELETE); $novolayer->set("name", $this->layer->name); $novolayer->setmetadata("tema", $this->layer->getmetadata("tema")); } }
function inserePoligonosUrl() { global $tamanhosimbolo, $simbolo, $corsimbolo, $poligonos, $nometemapoligonos, $dir_tmp, $imgdir, $tmpfname, $locaplic; include_once "pacotes/phpxbase/api_conversion.php"; if (!isset($nometemapoligonos)) { $nometemapoligonos = "Poligonos"; } if ($nometemapoligonos == "") { $nometemapoligonos = "Poligonos"; } // //cria o shape file // $tipol = MS_SHP_POLYGON; $nomeshp = $dir_tmp . "/" . $imgdir . "/poligonosins"; // cria o dbf $def = array(); $items = array("COORD"); foreach ($items as $ni) { $def[] = array($ni, "C", "254"); } if (!function_exists(dbase_create)) { xbase_create($nomeshp . ".dbf", $def); } else { dbase_create($nomeshp . ".dbf", $def); } $dbname = $nomeshp . ".dbf"; $db = xbase_open($dbname, 2); $novoshpf = ms_newShapefileObj($nomeshp, $tipol); $linhas = explode(",", trim($poligonos)); $pontosLinhas = array(); //guarda os pontos de cada linha em arrays foreach ($linhas as $l) { $tempPTs = explode(" ", trim($l)); $temp = array(); foreach ($tempPTs as $p) { if (is_numeric($p)) { $temp[] = $p; } } $pontosLinhas[] = $temp; } foreach ($pontosLinhas as $ptsl) { $linhas = $ptsl; $shape = ms_newShapeObj($tipol); $linha = ms_newLineObj(); $reg = array(); $reg[] = ""; for ($ci = 0; $ci < count($linhas); $ci = $ci + 2) { $linha->addXY($linhas[$ci], $linhas[$ci + 1]); } $shape->add($linha); $novoshpf->addShape($shape); xbase_add_record($db, $reg); } $novoshpf->free(); xbase_close($db); //adiciona o layer $mapa = ms_newMapObj($tmpfname); $layer = ms_newLayerObj($mapa); $layer->set("name", "linhains"); $layer->set("data", $nomeshp . ".shp"); $layer->setmetadata("DOWNLOAD", "sim"); $layer->setmetadata("temalocal", "sim"); $layer->setmetadata("tema", $nometemapoligonos); $layer->setmetadata("classe", "sim"); $layer->setmetadata("ATLAS", "nao"); $layer->set("type", MS_LAYER_POLYGON); $layer->set("opacity", "50"); $layer->set("status", MS_DEFAULT); $classe = ms_newClassObj($layer); $classe->set("name", " "); $estilo = ms_newStyleObj($classe); $cor = $estilo->color; if (!isset($corsimbolo)) { $corsimbolo = "255,0,0"; } $corsimbolo = str_replace(" ", ",", $corsimbolo); $corsimbolo = explode(",", $corsimbolo); $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); $salvo = $mapa->save($tmpfname); erroCriacao(); }
function verificaMiniatura($map, $tipo, $admin = false) { global $locaplic, $versao, $base, $postgis_mapa; if ($versao == "") { $versao = versao(); $versao = $versao["principal"]; } ms_ResetErrorList(); $tema = ""; $map = str_replace("\\", "/", $map); $map = basename($map); $extensao = ".map"; if (file_exists($locaplic . '/temas/' . $map)) { $tema = $locaplic . '/temas/' . $map; } else { if (file_exists($locaplic . '/temas/' . $map . '.gvp')) { $extensao = ".gvp"; } $tema = $locaplic . '/temas/' . $map . $extensao; } if ($tema != "") { if (isset($base) && $base != "") { if (file_exists($base)) { $f = $base; } else { $f = $locaplic . "/aplicmap/" . $base . ".map"; } if (!file_exists($base)) { echo "<div class='alert alert-danger'>ARQUIVO {$base} NÂO FOI ENCONTRADO. CORRIJA ISSO EM ms_configura.php"; exit; } } else { $f = ""; if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $f = $locaplic . "/aplicmap/geral1windowsv" . $versao . ".map"; } else { if ($f == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv' . $versao . '.map')) { $f = "/var/www/i3geo/aplicmap/geral1debianv" . $versao . ".map"; } if ($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { $f = "/var/www/html/i3geo/aplicmap/geral1fedorav" . $versao . ".map"; } if ($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { $f = "/opt/www/html/i3geo/aplicmap/geral1v" . $versao . ".map"; } if ($f == "") { $f = $locaplic . "/aplicmap/geral1v" . $versao . ".map"; } } } $mapa = ms_newMapObj($f); if ($extensao == ".map") { if (@ms_newMapObj($tema)) { $nmapa = ms_newMapObj($tema); } else { echo "<div class='alert alert-danger'>erro no arquivo {$tema} </div>"; return; } $dados = ""; $numlayers = $nmapa->numlayers; for ($i = 0; $i < $numlayers; $i++) { $layern = $nmapa->getlayer($i); $layern->set("status", MS_DEFAULT); cloneInlineSymbol($layern, $nmapa, $mapa); ms_newLayerObj($mapa, $layern); autoClasses($layern, $mapa, $locaplic); if ($layern->data == "") { $dados = $layern->connection; } else { $dados = $layern->data; } $pegarext = $teman->name; } if (isset($postgis_mapa)) { if ($postgis_mapa != "") { $numlayers = $mapa->numlayers; for ($i = 0; $i < $numlayers; $i++) { $layern = $mapa->getlayer($i); if (!empty($postgis_mapa)) { if ($layern->connectiontype == MS_POSTGIS) { $lcon = $layern->connection; if ($lcon == " " || $lcon == "" || in_array($lcon, array_keys($postgis_mapa))) { if ($lcon == " " || $lcon == "") { $layern->set("connection", $postgis_mapa); } else { $layern->set("connection", $postgis_mapa[$lcon]); } } } } } } } zoomTemaMiniatura($pegarext, $mapa); } if ($extensao == ".gvp") { include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php"; $gm = new gvsig2mapfile($tema); $gvsigview = $gm->getViewsNames(); foreach ($gvsigview as $v) { $dataView = $gm->getViewData($v); $mapa = $gm->addLayers($mapa, $v, $dataView["layerNames"]); } $next = $dataView["extent"]; $ext = $mapa->extent; $ext->setextent($next[0], $next[1], $next[2], $next[3]); } if ($tipo == "mini" || $tipo == "todos") { $mapa->setsize(50, 50); $sca = $mapa->scalebar; $sca->set("status", MS_OFF); $objImagemM = @$mapa->draw(); //if ($objImagemM == "" || $objImagemM == MS_FAILURE) //{echo "Problemas ao gerar o mapa<br>";return;} $weboM = $mapa->web; $urlM = $weboM->imageurl . "/" . $map; } if ($tipo == "grande" || $tipo == "todos") { $mapa->setsize(300, 300); $sca = $mapa->scalebar; $sca->set("status", MS_OFF); $objImagemG = @$mapa->draw(); //if ($objImagemG == "" || $objImagemG == MS_FAILURE) //{echo "Problemas ao gerar o mapa<br>";return;} $weboG = $mapa->web; $urlG = $weboG->imageurl . "/" . $map; } if ($tipo == "mini" || $tipo == "todos") { if (!$objImagemM) { echo "Problemas ao gerar o mapa<br>"; $error = ""; $error = ms_GetErrorObj(); while ($error && $error->code != MS_NOERR) { echo "<div class='alert alert-danger'>Error in %s: %s</div>", $error->routine, $error->message; $error = $error->next(); } return; } if ($objImagemM->imagepath == "") { echo "<div class='alert alert-danger'>Erro IMAGEPATH vazio</div>"; return; } $nomecM = $objImagemM->imagepath . $map . ".mini.png"; $objImagemM->saveImage($nomecM); } if ($tipo == "grande" || $tipo == "todos") { if (!$objImagemG) { echo "<div class='alert alert-danger'>Problemas ao gerar o mapa</div>"; $error = ""; $error = ms_GetErrorObj(); while ($error && $error->code != MS_NOERR) { echo "<div class='alert alert-danger'>Error in %s: %s</div>", $error->routine, $error->message; $error = $error->next(); } return; } if ($objImagemG->imagepath == "") { echo "<div class='alert alert-danger'>Erro IMAGEPATH vazio</div>"; return; } $nomecG = $objImagemG->imagepath . $map . ".grande.png"; $objImagemG->saveImage($nomecG); } if ($admin === false) { if ($tipo == "mini" || $tipo == "todos") { echo "<img class='img-thumbnail' src='" . $urlM . ".mini.png' />"; } if ($tipo == "grande" || $tipo == "todos") { echo "<img class='img-thumbnail' src='" . $urlG . ".grande.png' />"; } } // //copia a imagem // if ($admin === true) { $dir = $locaplic . "/temas/miniaturas"; $mini = $dir . "/" . $map . ".map.mini.png"; $grande = $dir . "/" . $map . ".map.grande.png"; if (file_exists($mini)) { unlink($mini); } if (file_exists($grande)) { unlink($grande); } copy($objImagemG->imagepath . $map . ".grande.png", $grande); copy($objImagemM->imagepath . $map . ".mini.png", $mini); } } }
// //ajusta parametros que o usuario pode ter modificado // if ($layert->status == 2) { $layero->set("status", MS_DEFAULT); } else { $layero->set("status", MS_OFF); } $layero->set("opacity", $layert->opacity); $layero->setmetadata("TEMA", $layert->getmetadata("TEMA")); // //adiciona o layer ao mapa atual // ms_newLayerObj($map, $layero); } elseif ($layert->connectiontype == MS_INLINE || $layert->connectiontype == MS_WMS || $layert->connectiontype == MS_GRATICULE) { ms_newLayerObj($map, $layert); } } $map->save($map_file); validaAcessoTemas($map_file); echo "<p class='paragrafo' >Ok. redesenhando."; echo "<script>window.parent.i3GEO.atualiza();</script>"; //echo "<script>window.parent.i3GEO.navega.zoomExt(window.parent.i3GEO.configura.locaplic,window.parent.i3GEO.configura.sid,'nenhum','".$extatual."');</script>"; } else { echo "<p class='paragrafo' >Erro ao enviar o arquivo."; } } else { echo "<p class='paragrafo' >Erro ao enviar o arquivo."; } paraAguarde(); function paraAguarde()
/** * Create dynamic layers based on its definition from the metadata record */ protected function createDynLayer($layerName, $layerString) { //error_log("createDynLayer: " . $layerName . "-" . $layerString); $newLayer = ms_newLayerObj($this->map); $newLayer->updateFromString($layerString); $dataSpecs = $_SESSION['catalogueDataSpecs'][$layerName]; $connectionType = $dataSpecs['connParams']['type']; if ($connectionType == "generic") { $newLayer->set("data", $this->data_path_prefix . $dataSpecs['path']); } else { $connTypeList['POSTGIS'] = MS_POSTGIS; $connTypeList['OGR'] = MS_OGR; $connTypeList['WMS'] = MS_WMS; $connTypeList['ORACLESPATIAL'] = MS_ORACLESPATIAL; $newLayer->setConnectiontype($connTypeList[$connectionType]); $newLayer->set("connection", $dataSpecs['connParams']['connection']); if ($connectionType == "POSTGIS") { $geom = $dataSpecs['connParams']['geom']; $table = $dataSpecs['connParams']['schema'] . "." . $dataSpecs['connParams']['layer']; $uniqueFid = $dataSpecs['connParams']['uniqueFid']; $epsg = $dataSpecs['srscode']; $newLayer->set("data", "{$geom} FROM {$table} USING UNIQUE {$uniqueFid} USING SRID={$epsg}"); } else { $newLayer->set("data", $dataSpecs['path']); } } $newLayer->set("name", $dataSpecs['uuid']); $newLayer->setMetaData("DESCRIPTION", $dataSpecs['title']); $newLayer->setMetaData("UUID", $dataSpecs['uuid']); if (isset($dataSpecs['feature_catalogue_url'])) { $newLayer->setMetaData("FEATURE_CATALOGUE_URL", $dataSpecs['feature_catalogue_url']); } $newLayer->setMetaData("CATEGORY", $this->config['layer_category']); // Move layer to configured index $newLayerCurrentIdx = $newLayer->index; $newLayerTargetIdx = $this->config['layeridx']; $newDrawingOrder = $this->getNewDrawingOrder($this->map->getLayersDrawingOrder(), $newLayerCurrentIdx, $newLayerTargetIdx); $this->map->setLayersDrawingOrder($newDrawingOrder); // Set projections and extent $projStr = "init=" . $dataSpecs['epsg']; $newLayer->setProjection($projStr); $this->map->setProjection($projStr, 1); $_SESSION['DYNLAYERCAT_PROJ'] = $projStr; $le = $dataSpecs['mapext']; $this->map->setExtent($le['minx'], $le['miny'], $le['maxx'], $le['maxy']); if (!empty($this->config['mapfile_dir'])) { $this->map->save($this->config['mapfile_dir'] . $layerName . '.map'); } }
function addLayer($szValue) { global $mapName; global $gwmsServiceTitle; $szReturn->addedLayer = false; // adding a layer from the atlas if ($_REQUEST["layertype"] == 'atlas') { $oMap = ms_newMapObj($_SESSION['maps'][$mapName]); $oCatalogMapFile = ms_newMapObj(APP_LAYER_CATALOG); for ($i = 0; $i < $oCatalogMapFile->numlayers; $i++) { $oLayer = $oCatalogMapFile->getLayer($i); if ($oLayer->name == $_REQUEST["layername"] && $oLayer->group == $_REQUEST["group"]) { //found layer clone it. ms_newLayerObj($oMap, $oLayer); $szReturn->addedLayer = true; } } // save map file. $oMap->save($_SESSION['maps'][$mapName]); } // adding a layer from a wms server if ($_REQUEST["layertype"] == 'wms') { $oMap = ms_newMapObj($_SESSION['maps'][$mapName]); $oLayer = ms_newLayerObj($oMap); if ($_REQUEST["metadataurl"]) { $metadataurl = $_REQUEST["metadataurl"]; } else { $join = strpos($_REQUEST["servername"], "?") ? "&" : "?"; $metadataurl = $_REQUEST["servername"] . $join . "request=GetCapabilities&service=WMS&version=1.1.1"; } $oLayer->set("name", $_REQUEST["layername"]); $oLayer->set("status", MS_ON); //$oLayer->set("connectiontype",MS_WMS); // in mapserver 5.4 we need to set the connection type with the method "setConnectionType" $oLayer->setConnectionType(MS_WMS); $oLayer->set("connection", $_REQUEST["servername"]); $oLayer->set("type", MS_LAYER_RASTER); $oLayer->setMetaData("legendLabel", $_REQUEST["owstitle"]); $aSRS = explode(" ", $_REQUEST["srs"]); $oLayer->setMetaData("ows_name", $_REQUEST["layername"]); $oLayer->setMetaData("ows_format", $_REQUEST["imageFormat"]); $oLayer->setMetaData("ows_server_version", "1.1.1"); $oLayer->setMetaData("ows_srs", $aSRS[0]); $oLayer->setMetaData("wms_metadataurl_href", $metadataurl); $oLayer->setMetaData("selectable", $_REQUEST["queryable"] == '1' ? 'true' : 'false'); $oLayer->setprojection("+init=" . strtolower($aSRS[0])); $oMap->save($_SESSION['maps'][$mapName]); $szReturn->wms_connection = $_REQUEST["servername"]; $szReturn->wms_format = $_REQUEST["imageFormat"]; $szReturn->wms_name = $_REQUEST["layername"]; $szReturn->wms_title = $_REQUEST["owstitle"]; $szReturn->wms_version = "1.1.1"; $szReturn->wms_srs = $aSRS[0]; $szReturn->wmsservicetitle = $gwmsServiceTitle; $szReturn->addedLayer = true; } return $szReturn; }
$map->setExtent($extentArray[0], $extentArray[1], $extentArray[2], $extentArray[3]); // Construct layer objects based on requested layers $phplayers = getLayersForTokenWithPROJ4($token); for ($i = 1; $i < count($phplayers); $i++) { $skipThisLayer = 1; for ($j = 0; $j < count($layers); $j++) { if (strtolower($phplayers[$i]['name']) == strtolower($layers[$j])) { $skipThisLayer = 0; break; } } //print_r($phplayers[$i]); if ($skipThisLayer) { continue; } $layer = ms_newLayerObj($map); $layer->set("status", MS_ON); $layer->set("opacity", 100); $layer->set("name", $phplayers[$i]['name']); $layer->setMetaData("wms_title", $phplayers[$i]['name']); //$layer->setConnectionType(MS_POSTGIS); $layer->set("connectiontype", MS_POSTGIS); $layer->set("connection", "user={$postgis_user} dbname={$postgis_dbname} host={$postgis_host} port={$postgis_port} password={$postgis_pass}"); $layer->set("data", $phplayers[$i]['geometry_name'] . " FROM " . $phplayers[$i]['name']); // If the layer does not have a projection, set the projection to WGS84. if ($phplayers[$i]['PROJ4'] == NULL) { $layer->setProjection("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"); } else { $layer->setProjection($phplayers[$i]['PROJ4']); } // Construct a class object, with style
apesar de ser gerada dentro do ms_tmp (vc pode verificar se as imagens do mapa estão sendo criadas no ms_tmp apos rodar o testainstal.php).Para solucionar esse problema, vc pode criar um link simbólico (nos sistemas linux), no mesmo local onde está instalado o i3geo, apontando para o local físico onde está o ms_tmp. O nome do link simbolico deve ser o mesmo que estiver definido em aplicmap/geral1.map ou geral1debian.map na linha IMAGEURL. Esse nome por default é definido como ms_tmp. No wiki do portal do software público vc poderá encontrar mais detalhes sobre isso.</h4> HTML; for ($i = 0; $i < $maptemp->numlayers; $i++) { $layern = $maptemp->getLayer($i); if ($layern->name == "estadosl") { $layern->set("data", $locaplic . "/aplicmap/dados/estados.shp"); } ms_newLayerObj($mapa, $layern); } $imgo = @$mapa->draw(); if (!$imgo) { echo "Problemas ao gerar o mapa<br>"; $error = ""; $error = ms_GetErrorObj(); while ($error && $error->code != MS_NOERR) { echo "<div class='alert alert-danger' role='alert'>Error in %s: %s</div>", $error->routine, $error->message; $error = $error->next(); } } if ($imgo->imagepath == "") { echo "<div class='alert alert-danger' role='alert'>Erro IMAGEPATH vazio</div>"; } $nome = $imgo->imagepath . "teste1.png";
$wc = ms_newLayerObj($map); $wc->setConnectionType(MS_POSTGIS); $wc->set("connection", $_DATABASES["postgis"]); $wc->set("status", MS_ON); $sql = sprintf("geom from (select oid, geom from sbw_{$year} WHERE oid = " . $oid0 . ") as foo using unique oid using SRID=4326"); $wc->set("data", $sql); $wc->set("type", MS_LAYER_LINE); $wc->setProjection("init=epsg:4326"); $wcc0 = ms_newClassObj($wc); $wcc0s0 = ms_newStyleObj($wcc0); $wcc0s0->color->setRGB(255, 255, 255); $wcc0s0->set("width", 2); $wcc0s0->set("symbol", 'circle'); $wc->draw($img); $map->drawLabelCache($img); $wc = ms_newLayerObj($map); $wc->setConnectionType(MS_POSTGIS); $wc->set("connection", $_DATABASES["postgis"]); $wc->set("status", MS_ON); $sql = sprintf("geom from (select oid, geom from sbw_{$year} WHERE oid = " . $row["oid"] . ") as foo using unique oid using SRID=4326"); $wc->set("data", $sql); $wc->set("type", MS_LAYER_LINE); $wc->setProjection("init=epsg:4326"); $wcc0 = ms_newClassObj($wc); $wcc0->set("name", $row["area"] . " sq km [" . intval($row["area"] / $sz0 * 100) . "%]"); $wcc0s0 = ms_newStyleObj($wcc0); $wcc0s0->color->setRGB(255, 0, 0); $wcc0s0->set("width", 3); $wcc0s0->set("symbol", 'circle'); $wc->draw($img); $map->drawLabelCache($img);
function adicionaTemaGeoJson($servico, $dir_tmp, $locaplic) { $servico = str_replace("|", "?", $servico); $servico = str_replace("#", "&", $servico); $tipos = array("pontos", "linhas", "poligonos"); foreach ($tipos as $tipo) { $novolayer = ms_newLayerObj($this->mapa); $novolayer->set("connection", $servico); if (ms_GetVersionInt() > 50201) { $novolayer->setconnectiontype(MS_OGR); } else { $novolayer->set("connectiontype", MS_OGR); } $nome = nomeRandomico(10) . "geoJson"; $novolayer->set("name", $nome . $tipo); $novolayer->setmetadata("TEMA", "GeoJson " . $nome . " " . $tipo); $novolayer->setmetadata("DOWNLOAD", "SIM"); $novolayer->setmetadata("CLASSE", "SIM"); if ($tipo == "pontos") { $novolayer->set("type", MS_LAYER_POINT); } if ($tipo == "linhas") { $novolayer->set("type", MS_LAYER_LINE); } if ($tipo == "poligonos") { $novolayer->set("type", MS_LAYER_POLYGON); } $novolayer->set("type", $tipo); $novolayer->set("data", "OGRGeoJSON"); $novolayer->setfilter(""); $classe = ms_newClassObj($novolayer); $classe->set("name", ""); $estilo = ms_newStyleObj($classe); if ($tipo == "pontos") { $estilo->set("symbolname", "ponto"); $estilo->set("size", 10); } $estilo->color->setrgb(200, 50, 0); $estilo->outlinecolor->setrgb(0, 0, 0); // le os itens $novolayer->set("status", MS_DEFAULT); $novolayer->set("template", "none.htm"); } return "ok"; }
function listaSimbolos($tipo, $dir_tmp, $imgdir, $onclick, $tamanho = 8, $width = 1, $forca = false) { $versao = versao(); $versao = $versao["principal"]; error_reporting(0); if ($tipo == 3) { $tipo = 2; } //tipo raster if ($imgdir == "") { $dir = $dir_tmp; } else { $dir = $dir_tmp . "/" . $imgdir; } if ($forca == true) { unlink($dir . "/simbolos" . $tipo . ".inc"); } $ins = ""; //pega imagens que podem ser usadas como simbolos if ($tipo == 0) { if (!isset($locaplic)) { include dirname(__FILE__) . "/../ms_configura.php"; } //veja esse codigo tambem em ferramentas/uploadsimbolo/exec.php $pasta = $locaplic . "/temas"; $url = "../temas"; if ($customDir != "interface") { $teste = $locaplic . "/" . $customDir; if (file_exists($teste)) { $pasta = $teste; $url = "../" . $customDir; } $teste = $locaplic . "/" . $customDir . "/images"; if (file_exists($teste)) { $pasta = $teste; $url = "../" . $customDir . "/images"; } $teste = $locaplic . "/" . $customDir . "/imagens"; if (file_exists($teste)) { $pasta = $teste; $url = "../" . $customDir . "/imagens"; } } if (file_exists($pasta)) { $lista = listaArquivos($pasta, true, array("png", "PNG")); //var_dump($lista);exit; $n = count($lista["nomes"]); for ($i = 0; $i < $n; $i++) { $ins .= "<img src='" . $url . "/" . $lista["nomes"][$i] . "' style='max-width: 80px;cursor:pointer;border: 5px solid #FFFFFF' title=" . $pasta . "/" . $lista["nomes"][$i] . " onclick='" . $onclick . "'>"; } } } if (!file_exists($dir . "/simbolos" . $tipo . ".inc")) { $f = fopen($dir . "/simbolos" . $tipo . ".inc", "w"); if ($tipo == 2) { $t = "simpolv" . $versao . ".map"; } if ($tipo == 0) { $t = "simptv" . $versao . ".map"; } if ($tipo == 1) { $t = "simlinv" . $versao . ".map"; $tamanho = $tamanho / 4; } if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $mapatemp = ms_newMapObj($this->localaplicacao . "\\aplicmap\\" . $t); } else { $mapatemp = ms_newMapObj($this->localaplicacao . "/aplicmap/" . $t); } $l = $mapatemp->getlayer(0); if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $novoss = dirname($this->mapa->symbolsetfilename) . "\\" . basename($mapatemp->symbolsetfilename); } else { $novoss = dirname($this->mapa->symbolsetfilename) . "/" . basename($mapatemp->symbolsetfilename); } $this->mapa->setsymbolset($novoss); $ns = $this->mapa->getnumsymbols(); $inis = 0; //na versao 7 nao tem o simbolo 0 if ($this->v >= 7) { $inis = 1; //se for versao 7 inclui um primeiro simbolo com valor 0 e imagem $oSymbol = $this->mapa->getSymbolObjectById(1); $adiciona = ms_newLayerObj($this->mapa, $l); $nomel = $l->name; $tematemp = $this->mapa->getlayerbyname($nomel); $c = $tematemp->getClass(0); $e = $c->getstyle(0); $e->set("size", 1); $e->set("width", 1); $ico = $c->createLegendIcon(40, 40); $nimg = $ico->saveWebImage(); $pat = $this->mapa->web->imageurl; $ins .= "<img src='" . $nimg . "' style='cursor:pointer;border: 5px solid #FFFFFF' title='0' onclick='" . $onclick . "'>"; } for ($i = $inis; $i < $ns; ++$i) { $oSymbol = $this->mapa->getSymbolObjectById($i); $nomes = $oSymbol->name; if ($nomes == "") { $nomes = $i; } $adiciona = ms_newLayerObj($this->mapa, $l); $nomel = $l->name; $tematemp = $this->mapa->getlayerbyname($nomel); $c = $tematemp->getClass(0); $e = $c->getstyle(0); $e->set("symbolname", $nomes); $e->set("size", $tamanho); $e->set("width", $width); $ico = $c->createLegendIcon(40, 40); $nimg = $ico->saveWebImage(); $pat = $this->mapa->web->imageurl; $ins .= "<img src='" . $nimg . "' style='cursor:pointer;border: 5px solid #FFFFFF' title=" . $nomes . " onclick='" . $onclick . "'>"; } fwrite($f, "<?php \$res = \"" . $ins . "\";?>"); fclose($f); //copy ($dir."/simbolos".$tipo.".inc",$dir_tmp."/comum/simbolos".$tipo.".inc"); return $ins; } else { $res = ""; include_once $dir . "/simbolos" . $tipo . ".inc"; return $res; } }