function montaMenu($id = 0) { // if($id==0) $tmp = " and popup=1"; else $tmp = ""; $Conexao = Conn(); if ($Conexao) { $sql = "Select distinct m.codpaimenu from menu m, acessousu a, usuario u\n where u.codusuario = a.codusuario and m.codpaimenu =" . $id . "\n and m.codmenu = a.codmenu and u.codusuario = " . $_SESSION['codusuarioadm']; $rs = mysql_query($sql, $Conexao) or die(mysql_error()); $rs1 = mysql_fetch_array($rs); $menu = ""; if ($rs1 == 0) { return $menu; } $i = 0; // while($a = mysql_fetch_array($rs)) while (!($rs1 == 0)) { $x = pegaItens($rs1['codpaimenu']); $menu .= $x[1]; $menu .= 'window.menu_' . $rs1['codpaimenu'] . ' = new Menu("root",220,22,"Verdana, Arial, Helvetica, sans-serif",9,"#003333","#FFFFFF","#F2F2F2","#79A289","left","middle",2,0,1000,-5,7,true,true,true,0,true,true);' . chr(10); $menu .= $x[0]; $menu .= 'menu_' . $rs1['codpaimenu'] . ".hideOnMouseOut=true;" . chr(10); $menu .= 'menu_' . $rs1['codpaimenu'] . ".bgColor='#669999';" . chr(10); $menu .= 'menu_' . $rs1['codpaimenu'] . ".menuBorder=1;" . chr(10); $menu .= 'menu_' . $rs1['codpaimenu'] . ".menuLiteBgColor='#669999';" . chr(10); $menu .= 'menu_' . $rs1['codpaimenu'] . ".menuBorderBgColor='#C4D7CD';" . chr(10); $i = $rs1['codpaimenu']; $rs1 = mysql_fetch_array($rs); } //$menu .= 'menu_'.$i.".writeMenus();"; } else { $menu = "<script> alert('Erro ao conectar-se ao Banco de Dados!')</script>"; } return $menu; }
function capturaGeometrias($dir_tmp, $imgdir, $nome = "") { if (!$this->layer) { return "erro"; } $this->mapa->setsize(30, 30); $ext = $this->mapa->extent; $sb = $this->mapa->scalebar; $sb->set("status", MS_OFF); $items = pegaItens($this->layer); $final["layer"] = pegaNome($this->layer, "UTF-8"); $shapes = retornaShapesSelecionados($this->layer, $this->arquivo, $this->mapa); $registros = array(); $i = 0; foreach ($shapes as $shape) { $valitem = array(); foreach ($items as $item) { $v = trim($shape->values[$item]); if (function_exists("mb_convert_encoding")) { $v = mb_convert_encoding($v, "UTF-8", "ISO-8859-1"); } $valitem[] = array("item" => $item, "valor" => $v); } $wktgeo = $shape->toWkt(); if ($wktgeo != "") { $fechou = $this->layer->close(); $bounds = $shape->bounds; //gera imagem $d = 0.01; //se for do tipo ponto, faz um deslocamento do extent if ($shape->type == 2) { $d = 0; } $ext->setextent($bounds->minx - $d, $bounds->miny - $d, $bounds->maxx + $d, $bounds->maxy + $d); $im = gravaImagemMapa($this->mapa); $registros[] = array("id" => $i, "wkt" => $wktgeo, "valores" => $valitem, "imagem" => $im["url"]); $abriu = $this->layer->open(); } else { return "erro"; } $i++; } $fechou = $this->layer->close(); if (count($registros) > 0) { $final["dados"] = $registros; //salva arquivo $nome == "" ? $nome = nomerandomico(15) : ($nome = str_replace(" ", "_", $nome)); $arq = $dir_tmp . "/" . $imgdir . "/" . $nome . "keo"; if (file_exists($arq)) { unlink($arq); } $fp = fopen($arq, "w"); $r = serialize($final); fwrite($fp, $r); fclose($fp); } return "ok"; }
echo "<iframe id='mapaPreview' src='../../mashups/openlayers3.php?servidor=" . $servidor . "&fundo=e_wsm&nocache=sim&DESLIGACACHE=sim&controles=navigation,panzoombar,scaleline,mouseposition&botoes=identifica&largura=550&altura=400&temas=" . $mapfile . "' style='position:relative;top:2px;overflow:hidden;width:100%;height:450px;border:0px solid gray;'>"; } echo "</iframe>"; echo "<input type=hidden name=tipo value=gravar />"; if (!@ms_newMapObj($mapfile)) { echo "<span style=color:red <b>Não foi possível criar o mapa. Verifique as permissões ou se há algum erro no mapfile</b></span><br><br>"; } else { $mapa = ms_newMapObj($mapfile); $n = $mapa->numlayers; echo "<br>Obs.: o corte de imagens não é considerado no preview"; echo "<br>Ajudante de cores RGB: <input type=text value='clique' size=10 id='corrgb' onclick=\"i3GEO.util.abreCor('','corrgb','rgbSep')\" />"; echo "<br><br>Colunas dos layers:<br><br>"; for ($i = 0; $i < $n; $i++) { if (@$mapa->getlayer($i)) { $l = $mapa->getlayer($i); echo $l->name . ": " . implode(",", pegaItens($l)) . "<br><br>"; } else { echo "<span style=color:red <b>Não foi possível criar o LAYER {$l->name}. Verifique as permissões ou se há algum erro no mapfile</b></span><br><br>"; } } } ?> </fieldset> </form> </div> <script type="text/javascript" src="../js/core.js"></script> <script type="text/javascript" src="../dicionario/core.js"></script> <script src="../../classesjs/classe_util.js" type="text/javascript"></script> <script> i3GEO.configura = {locaplic: "../../"};
function pegaDadosJ() { global $oMap, $tema, $versao, $locaplic; set_time_limit(0); $layer = $oMap->getlayerbyname($tema); processaPluginI3geo(); $layer->set("status", MS_DEFAULT); $layer->set("template", "none.htm"); $items = pegaItens($layer, $oMap); $layer->querybyrect($oMap->extent); $layer->open(); $res_count = $layer->getNumresults(); $linhas = array(); for ($i = 0; $i < $res_count; $i++) { //echo $i." - <br>"; if ($versao >= 6) { $shape = $layer->getShape($layer->getResult($i)); } else { $shape = $layer->getFeature($layer->getResult($i)->shapeindex); } $valores = array(); foreach ($items as $item) { $v = trim($shape->values[$item]); if (is_string($v)) { $v = converteenc($v); } $valores[] = $v; } $linhas[] = array("valores" => $valores, "shape" => $shape); } //verifica os tipos dos itens $n = 10; $ni = count($items); $tipos = array(); if (count($linhas) <= 10) { $n = count($linhas); } for ($j = 0; $j < $ni; $j++) { $tipos[$j] = "string"; } for ($i = 0; $i < $n; $i++) { $valores = $linhas[$i]["valores"]; for ($j = 0; $j < $ni; $j++) { if ($tipos[$j] == "string" && $valores[$j] != "" && is_numeric($valores[$j])) { $tipos[$j] = "number"; } } } $resultado = array("items" => $items, "tipos" => $tipos, "features" => $linhas); return $resultado; }
function criaSHP($tema, $map_file, $locaplic, $dir_tmp, $nomeRand = TRUE, $prj = "", $projetaToMap = true, $shapesSel = false) { include dirname(__FILE__) . "/../ms_configura.php"; $versao = versao(); $versao = $versao["principal"]; //para manipular dbf if (file_exists($locaplic . "/pacotes/phpxbase/api_conversion.php")) { include_once $locaplic . "/pacotes/phpxbase/api_conversion.php"; } else { include_once dirname(__FILE__) . "/../pacotes/phpxbase/api_conversion.php"; } $map = @ms_newMapObj($map_file); $nameMapfile = $map->name; substituiConObj($map, $postgis_mapa); $layer = $map->getlayerbyname($tema); //e necessario abrir ou nao vai projetar $layer->open(); $prjMapa = $map->getProjection(); $prjTema = $layer->getProjection(); if ($prjTema != "") { $projInObj = new projectionObj($prjTema); $projOutObj = new projectionObj($prjMapa); } else { $projInObj = ""; $projOutObj = ""; $projetaToMap = false; } $layer->set("template", "none.htm"); $diretorio = dirname($dir_tmp); $tipol = MS_SHP_POINT; if ($layer->type == MS_LAYER_LINE) { $tipol = MS_SHP_ARC; } if ($layer->type == MS_LAYER_POLYGON) { $tipol = MS_SHP_POLYGON; } if ($nomeRand == true) { $novonomelayer = $tema . "_" . nomeRandomico(5); } else { $novonomelayer = $tema; } $novonomelayer = str_replace(".", "-", $novonomelayer); $nomeshp = $dir_tmp . "/" . $nameMapfile . "_" . $novonomelayer; if (file_exists($nomeshp . ".shp")) { return $nomeshp; } $novoshpf = ms_newShapefileObj($nomeshp, $tipol); //se for do tipo features $data = $layer->data; $resultadoFinal = true; if ($data == "") { $def[] = array("ID", "C", "50"); $reg[] = 0; if (!function_exists("dbase_create")) { $db = xbase_create($nomeshp . ".dbf", $def); xbase_add_record($db, $reg); xbase_close($db); } else { $db = dbase_create($nomeshp . ".dbf", $def); dbase_add_record($db, $reg); dbase_close($db); } if ($versao >= 6) { $shape = $layer->getshape(new resultObj(0)); } else { $s = $layer->getfeature(0, -1); $result = $layer->getResult(0); $shpi = $result->shapeindex; $shape = $layer->getfeature($shpi, -1); } $novoshpf = ms_newShapefileObj($nomeshp . ".shp", -2); $novoshpf->addShape($shape); $resultadoFinal = true; } else { if ($shapesSel == false) { $shapesSel = retornaShapesSelecionados($layer, $map_file, $map, false); } $items = pegaItens($layer); // cria o dbf $def = array(); $cni = 0; foreach ($items as $ni) { $temp = strtoupper($ni); $temp = substr($temp, 0, 8) . $cni; // //nao tem como descobrir o tamanho e tipo do campo // $def[] = array($temp, "C", "254"); $cni = $cni + 1; } if (!function_exists("dbase_create")) { $db = xbase_create($nomeshp . ".dbf", $def); } else { $db = dbase_create($nomeshp . ".dbf", $def); } $dbname = $nomeshp . ".dbf"; $reg = array(); $novoshpf = ms_newShapefileObj($nomeshp . ".shp", -2); $res_count = count($shapesSel); if ($res_count > 0) { for ($i = 0; $i < $res_count; ++$i) { $shape = $shapesSel[$i]; if ($projetaToMap == true) { $shape->project($projInObj, $projOutObj); } foreach ($items as $ni) { $vreg = $shape->values[$ni]; if (strlen($vreg) > 255) { $vreg = substr($vreg, 0, 255); } $reg[] = $vreg; } $novoshpf->addShape($shape); if (!function_exists("dbase_create")) { xbase_add_record($db, $reg); } else { dbase_add_record($db, $reg); } $reg = array(); } if (!function_exists("dbase_create")) { xbase_close($db); } else { dbase_close($db); } // //verifica a quantidade de registros no final // if (function_exists("dbase_open")) { $db = dbase_open($nomeshp . ".dbf", 0); } else { $db = xbase_open($nomeshp . ".dbf", 0); } if (function_exists("dbase_numrecords")) { $record_numbers = dbase_numrecords($db); } else { $record_numbers = xbase_numrecords($db); } if (function_exists("dbase_close")) { dbase_close($db); } else { xbase_close($db); } if ($record_numbers != $res_count) { if (file_exists($nomeshp . ".dbf")) { unlink($nomeshp . ".dbf"); } if (file_exists($nomeshp . ".shp")) { unlink($nomeshp . ".shp"); } if (file_exists($nomeshp . ".shx")) { unlink($nomeshp . ".shx"); } if (file_exists($nomeshp . ".prj")) { unlink($nomeshp . ".prj"); } $resultadoFinal = false; } } else { $resultadoFinal = false; } } if ($resultadoFinal == false) { return false; } else { //gera o arquivo prj if ($prj != "") { gravaDados(array($prj), $nomeshp . ".prj"); } elseif ($projetaToMap == false) { $nomePrjOriginal = str_replace(".shp", ".prj", $layer->data); $nomeDestino = $nomeshp . ".prj"; if (file_exists($nomePrjOriginal) && !file_exists($nomeDestino)) { copy($nomePrjOriginal, $nomeDestino); } } return $nomeshp; } }
function selecaoAtributos2($filtro, $tipo) { $items = pegaItens($this->layer); if ($tipo == "novo") { $this->selecaoLimpa(); $tipo = "adiciona"; } if ($tipo == "limpa") { return $this->selecaoLimpa(); } if ($tipo == "inverte") { return $this->selecaoInverte(); } if (!$this->layer) { return "erro"; } $this->layer->set("template", "none.htm"); $indxlayer = $this->layer->index; $shp_atual = array(); if ($this->qyfileTema != "" && file_exists($this->qyfileTema)) { $shp_atual = $this->unserializeQ($this->qyfileTema); } $shpi = array(); $filtro = str_replace("|", "'", $filtro); if ($this->layer->connectiontype == MS_POSTGIS && $this->v < 7) { $filtro = str_replace("'[", "", $filtro); $filtro = str_replace("[", "", $filtro); $filtro = str_replace("]'", "", $filtro); $filtro = str_replace("]", "", $filtro); $filtro = str_replace("(", " ", $filtro); $filtro = str_replace(")", " ", $filtro); } $teste = $this->layer->querybyattributes($items[0], $filtro, 1); if ($teste != MS_SUCCESS) { $teste = $this->layer->queryByAttributes($items[0], mb_convert_encoding($filtro, "ISO-8859-1", "UTF-8"), 1); } if ($teste != MS_SUCCESS) { $teste = $this->layer->queryByAttributes($items[0], mb_convert_encoding($filtro, "UTF-8", "ISO-8859-1"), 1); } $res_count = $this->layer->getNumresults(); $shpi = array(); for ($i = 0; $i < $res_count; ++$i) { $result = $this->layer->getResult($i); $shpi[] = $result->shapeindex; } if ($tipo == "adiciona") { return $this->selecaoAdiciona($shpi, $shp_atual); } if ($tipo == "retira") { return $this->selecaoRetira($shpi, $shp_atual); } return "ok"; }
function gravaCoordenadasPt($tema, $limitepontos = "TRUE", $extendelimite, $item = "") { $prjMapa = $this->mapa->getProjection(); $layerPt = $this->mapa->getlayerbyname($tema); $prjTema = $layerPt->getProjection(); $layerPt->set("tolerance", 0); $layerPt->set("template", "none.htm"); $nomefinal = nomeRandomico(); $nomearq = $this->diretorio . "/" . $nomefinal; $itemspt = pegaItens($layerPt); $shapes = retornaShapesSelecionados($layerPt, $this->arquivo, $this->mapa); if (count($shapes) == 0) { $shapes = retornaShapesMapext($layerPt, $this->mapa); } $pontos = array(); $pontosz = array(); if ($prjTema != "" && $prjMapa != $prjTema) { $projInObj = ms_newprojectionobj($prjTema); $projOutObj = ms_newprojectionobj($prjMapa); } foreach ($shapes as $shape) { $pt = $shape->getCentroid(); if ($prjTema != "" && $prjMapa != $prjTema) { $pt->project($projInObj, $projOutObj); } $pontos[] = $pt->x . " " . $pt->y . "\n"; $pontosx[] = $pt->x; $pontosy[] = $pt->y; if ($item != "") { $pontosz[] = trim($shape->values[$item]); } } $layerPt->close(); // grava o arquivo com os pontos em x $f = fopen($nomearq . "x", "w"); foreach ($pontosx as $pt) { fwrite($f, $pt . "\n"); } fclose($f); // grava o arquivo com os pontos em y $f = fopen($nomearq . "y", "w"); foreach ($pontosy as $pt) { fwrite($f, $pt . "\n"); } fclose($f); // grava o arquivo com os pontos em z $f = fopen($nomearq . "z", "w"); foreach ($pontosz as $pt) { fwrite($f, $pt . "\n"); } fclose($f); if ($limitepontos == "TRUE") { $xi = min($pontosx); $xf = max($pontosx); $yi = min($pontosy); $yf = max($pontosy); } else { $ext = $this->mapa->extent; $xi = $ext->minx; $xf = $ext->maxx; $yi = $ext->miny; $yf = $ext->maxy; } if ($extendelimite > 0) { $dx = $xf - $xi; $dy = $yf - $yi; $maisx = $dx * $extendelimite / 100; $maisy = $dy * $extendelimite / 100; $xi = $xi - $maisx; $xf = $xf + $maisx; $yi = $yi - $maisy; $yf = $yf + $maisy; } $dimx = "c(" . $xi . "," . $xf . ")"; $dimy = "c(" . $yi . "," . $yf . ")"; return array("dimx" => $dimx, "dimy" => $dimy, "arqx" => $nomearq . "x", "arqy" => $nomearq . "y", "arqz" => $nomearq . "z", "prefixoarquivo" => $nomearq); }
function exportaGeojson() { global $oMap, $arq, $fileName, $versao, $ows_geomtype; include "pacotes/gisconverter/gisconverter.php"; $decoder = new gisconverter\WKT(); $layer = $oMap->getlayer(0); $items = pegaItens($layer, $oMap); $layer->querybyrect($oMap->extent); $layer->open(); $res_count = $layer->getNumresults(); $linhas = array(); $features = array(); for ($i = 0; $i < $res_count; $i++) { if ($versao >= 6) { $shape = $layer->getShape($layer->getResult($i)); } else { $shape = $layer->getFeature($layer->getResult($i)->shapeindex); } $propriedades = array(); foreach ($items as $item) { $v = trim($shape->values[$item]); if (is_string($v)) { $v = '"' . converteenc($v) . '"'; } $propriedades[] = array($item => $v); } $wkt = $shape->towkt(); $features[] = array("type" => "Feature", "properties" => $propriedades, "geometry" => json_decode($decoder->geomFromText($wkt)->toGeoJSON())); } $n[] = array("type" => "FeatureCollection", "features" => $features); $contents = json_encode($n[0]); $contents = str_replace('\\"', '', $contents); file_put_contents($arq . ".json", $contents); ob_clean(); header("Content-type: application/json; subtype=geojson"); echo $contents; exit; }
function pegaClasseLabel() { global $codigoMap, $codigoLayer, $locaplic; $dados = array(); $mapfile = $locaplic . "/temas/" . $codigoMap . ".map"; $mapa = ms_newMapObj($mapfile); $layer = $mapa->getlayerbyname($codigoLayer); $classe = $layer->getclass($_GET["indiceClasse"]); $v = versao(); $vi = $v["inteiro"]; if ($vi >= 60200) { $nlabels = $classe->numlabels; if ($nlabels > 0) { $label = $classe->getLabel(0); } else { $label = ""; } } else { $label = $classe->label; } if ($label != "") { $dados["font"] = $label->font; $dados["type"] = $label->type; //$dados["backgroundcolor"] = $label->backgroundcolor->red.",".$label->backgroundcolor->green.",".$label->backgroundcolor->blue; //$dados["backgroundshadowcolor"] = $label->backgroundshadowcolor->red.",".$label->backgroundshadowcolor->green.",".$label->backgroundshadowcolor->blue; $dados["color"] = $label->color->red . "," . $label->color->green . "," . $label->color->blue; $dados["outlinecolor"] = $label->outlinecolor->red . "," . $label->outlinecolor->green . "," . $label->outlinecolor->blue; $dados["shadowcolor"] = $label->shadowcolor->red . "," . $label->shadowcolor->green . "," . $label->shadowcolor->blue; $dados["shadowsizex"] = $label->shadowsizex; $dados["shadowsizey"] = $label->shadowsizey; //$dados["backgroundshadowsizex"] = $label->backgroundshadowsizex; //$dados["backgroundshadowsizey"] = $label->backgroundshadowsizey; $dados["size"] = $label->size; $dados["minsize"] = $label->minsize; $dados["maxsize"] = $label->maxsize; $dados["position"] = $label->position; $dados["offsetx"] = $label->offsetx; $dados["offsety"] = $label->offsety; $dados["angle"] = $label->angle; //$dados["autoangle"] = $label->autoangle; $dados["buffer"] = $label->buffer; //$dados["antialias"] = $label->antialias; $dados["wrap"] = $label->wrap; $dados["minfeaturesize"] = $label->minfeaturesize; $dados["autominfeaturesize"] = $label->autominfeaturesize; $dados["mindistance"] = $label->mindistance; $dados["partials"] = $label->partials; $dados["force"] = $label->force; $dados["encoding"] = $label->encoding; } $dados["codigoMap"] = $codigoMap; $dados["codigoLayer"] = $codigoLayer; $dados["indiceClasse"] = $indiceClasse; $dados["colunas"] = implode(" ,", pegaItens($layer)); $arq = $locaplic . "/symbols/fontes.txt"; $h = fopen($arq, "r"); while ($i = fscanf($h, "%s\t%s\t")) { list($f, $g) = $i; $nome[] = $f; } $dados["fontes"] = $nome; return $dados; }
function getDataStore($nomelayer, $colunasvalor, $colunanomeregiao, $titulo, $descricao, $ext = "", $mapType = "") { //$indicatorID, $year, $region){ if (!function_exists("versao")) { include dirname(__FILE__) . "/../../classesphp/funcoes_gerais.php"; } $versao = versao(); $versao = $versao["principal"]; $mapa = ms_newMapObj($this->map_file); if ($ext == "") { $mapa = extPadrao($mapa); } else { $e = str_replace(",", " ", $ext); $e = explode(" ", $ext); $extatual = $mapa->extent; $extatual->setextent(min($e[0], $e[2]), min($e[1], $e[3]), max($e[0], $e[2]), max($e[1], $e[3])); } $layer = $mapa->getlayerbyname($nomelayer); $layer->set("template", "none.html"); $existesel = "nao"; if ($this->postgis_mapa != "" && $this->postgis_mapa != " ") { if ($layer->connectiontype == MS_POSTGIS) { $lcon = $layer->connection; if ($lcon == " " || $lcon == "" || in_array($lcon, array_keys($this->postgis_mapa))) { if ($lcon == " " || $lcon == "") { $layer->set("connection", $this->postgis_mapa); } else { $layer->set("connection", $this->postgis_mapa[$lcon]); } } } } $itens = pegaItens($layer, $mapa); carregaquery2($this->map_file, $layer, $mapa); if ($layer->getNumresults() > 0) { $existesel = "sim"; } if ($existesel == "nao") { $layer->querybyrect($mapa->extent); } $layer->open(); $res_count = $layer->getNumresults(); $dataStore = array(); $dataStore['indicators']['valores'] = array("name" => $titulo, "description" => $descricao, "source" => "", "decimals" => 2, "max" => 0, "min" => 0); for ($i = 0; $i < $res_count; $i++) { $valitem = array(); if ($versao >= 6) { $shape = $layer->getShape($layer->getResult($i)); } else { $shape = $layer->getFeature($layer->getResult($i)->shapeindex); } $pt = $shape->getCentroid(); $texto = $shape->values[$colunanomeregiao]; /* if(!mb_detect_encoding($texto,"ISO-8859-1",true)){ $texto = mb_convert_encoding($texto,"ISO-8859-1","UTF-8"); } */ if ($mapType == "bar") { $wkt = ""; } else { $wkt = $shape->toWkt(); } $dataStore['features'][$i] = array("featureID" => $i, "name" => $texto, "lon" => round($pt->x, 6), "lat" => round($pt->y, 6), "wkt" => $wkt); //[0] � o ano foreach ($colunasvalor as $colunavalor) { $valor = $shape->values[$colunavalor]; settype($valor, "float"); //echo $valor; if (is_numeric($valor)) { $valor = number_format($valor, 2, '.', ''); $dataStore['indicators']['valores']['values'][$colunavalor][$i] = $valor; $indicatorYears[$colunavalor] = $colunavalor; $todosV[] = $valor; } } } $fechou = $layer->close(); $dataStore['indicators']['valores']['years'] = $indicatorYears; $dataStore['indicators']['valores']['max'] = max($todosV); $dataStore['indicators']['valores']['min'] = min($todosV); //echo "<pre>"; //var_dump($dataStore); return $dataStore; /* $sqlregion = ''; if ($region) $sqlregion = "region = $region AND"; $sqlyear = ''; if ($year) $sqlyear = "AND year = $year"; // Add features - exclude Antarctica $sql = "SELECT un AS featureID, name, lon, lat, AsText(geom) AS wkt FROM $this->featureTable WHERE $sqlregion un != 10 ORDER BY featureID"; $features = $this->dbc->query($sql); while($row = $features->fetch_array(MYSQLI_ASSOC)) { // First field should be feature id $featureID = array_shift($row); // Add feature to dataStore $dataStore['features'][$featureID] = $row; } $indicatorYears = array(); // Select indicator metadata $sql = "SELECT name, description, source, decimals, (SELECT ROUND(MAX(value),decimals) FROM indicator_values, $this->featureTable WHERE variable=$indicatorID AND indicator_values.area=un $sqlyear) AS max, (SELECT ROUND(MIN(value),decimals) FROM indicator_values, $this->featureTable WHERE variable=$indicatorID AND indicator_values.area=un $sqlyear) AS min FROM $this->indicatorTable WHERE id=$indicatorID"; $result = $this->dbc->query($sql); $indicator = $result->fetch_assoc(); $precision = $indicator['decimals']; // Add indicator to dataStore $dataStore['indicators'][$indicatorID] = $indicator; // Select indicator values (only values that have features) $sql = "SELECT indvalues.area AS featureID, indvalues.year, indvalues.value FROM $this->valuesTable AS indvalues, $this->featureTable WHERE indvalues.variable=$indicatorID AND indvalues.area=un $sqlyear ORDER BY indvalues.value"; // Needed for qunatiles calculation $result = $this->dbc->query($sql); // Add indicator values to dataStore while($row = $result->fetch_row()) { $dataStore['indicators'][$indicatorID]['values'][$row[1]][$row[0]] = number_format($row[2], $precision, '.', ''); // Find all years with values (could also be a separate sql for better performance) $indicatorYears[$row[1]] = $row[1]; } sort($indicatorYears); $dataStore['indicators'][$indicatorID]['years'] = $indicatorYears; return $dataStore; */ }
function shpPT2shp($locaplic, $para) { if (!$this->layer) { return "erro"; } $this->layer->set("template", "none.htm"); $diretorio = dirname($this->arquivo); $tipol = MS_SHP_ARC; $tipos = MS_SHAPE_LINE; if ($para == "poligono") { $tipol = MS_SHP_POLYGON; $tipos = MS_SHAPE_POLYGON; } $novonomelayer = nomeRandomico(); $nomeshp = $diretorio . "/" . $novonomelayer; $items = pegaItens($this->layer); // cria o dbf $def = array(); foreach ($items as $ni) { $temp = strtoupper($ni); $def[] = array($temp, "C", "254"); } //para manipular dbf if ($this->dbaseExiste == false) { include_once dirname(__FILE__) . "/../pacotes/phpxbase/api_conversion.php"; $db = xbase_create($nomeshp . ".dbf", $def); } else { $db = dbase_create($nomeshp . ".dbf", $def); } $dbname = $nomeshp . ".dbf"; $reg = array(); $novoshpf = ms_newShapefileObj($nomeshp . ".shp", $tipol); $this->layer->open(); $prjMapa = $this->mapa->getProjection(); $prjTema = $this->layer->getProjection(); $ret = $this->mapa->extent; if ($prjTema != "" && $prjMapa != $prjTema) { $projOutObj = ms_newprojectionobj($prjTema); $projInObj = ms_newprojectionobj($prjMapa); $ret->project($projInObj, $projOutObj); } $this->layer->whichShapes($ret); $linha = ms_newLineObj(); $pponto = ""; $pontos = array(); while ($shape = $this->layer->nextShape()) { $lin = $shape->line(0); $pt = $lin->point(0); if ($pponto == "") { $pponto = $pt; } if ($prjTema != "" && $prjMapa != $prjTema) { $pt->project($projInObj, $projOutObj); } $pontos[] = $pt->x; $pontos[] = $pt->y; } $pontos = implode(" ", $pontos); $pontos = xy2wkt($pontos); if ($para == "poligono") { $shape = ms_shapeObjFromWkt($pontos["poligono"]); } else { $shape = ms_shapeObjFromWkt($pontos["linha"]); } foreach ($items as $ni) { $reg[] = "-"; } $novoshpf->addShape($shape); if ($this->dbaseExiste == false) { xbase_add_record($db, $reg); xbase_close($db); } else { dbase_add_record($db, $reg); dbase_close($db); } $this->layer->close(); //cria o novo layer $layer = criaLayer($this->mapa, MS_LAYER_LINE, MS_DEFAULT, "", $metaClasse = "SIM"); $layer->set("data", $nomeshp); $layer->setmetadata("tema", $novonomelayer . " (linear)"); $layer->setmetadata("download", "sim"); $layer->setmetadata("temalocal", "sim"); $classe = $layer->getclass(0); $estilo = $classe->getstyle(0); $estilo->set("symbolname", "linha"); if ($para == "poligono") { $layer->set("type", MS_LAYER_POLYGON); $layer->set("opacity", "50"); $layer->setmetadata("tema", $novonomelayer . " (poligonal)"); } return "ok"; }
function identificaQBP3($tema = "", $x = 0, $y = 0, $map_file = "", $resolucao = 0, $item = "", $tiporetorno = "", $etip = false, $ext = "", $wkt = "nao") { if ($map_file == "") { $mapa = $this->mapa; $map_file = $this->arquivo; } else { $mapa = ms_newMapObj($map_file); } if ($ext != "") { $extmapa = $mapa->extent; $e = explode(" ", $ext); $extmapa->setextent(min($e[0], $e[2]), min($e[1], $e[3]), max($e[0], $e[2]), max($e[1], $e[3])); //$mapa->save($this->arquivo); } if ($tema == "") { $layer = $this->layer; } else { $layer = $mapa->getLayerByName($tema); } $layer->set("status", MS_DEFAULT); $layer->set("template", "none.htm"); $pt = ms_newPointObj(); $pt->setXY($x, $y); if (strtoupper($layer->getmetadata("convcaracter")) == "NAO") { $convC = false; } else { $convC = true; } // //operação especial para o caso de wms // if ($layer->connectiontype == MS_WMS) { $wkt = "nao"; $layer->set("toleranceunits", MS_PIXELS); $layer->set("tolerance", $resolucao); $mapa = desligatemas($mapa); $mapa = desligamargem($mapa); $imgo = $mapa->draw(); $ptimg = xy2imagem($map_file, array($x, $y), $mapa); //$formatoinfo = "MIME"; $formatosinfo = $layer->getmetadata("formatosinfo"); if ($formatosinfo != "") { $formatosinfo = explode(",", $formatosinfo); if ($formatosinfo[0] != "") { $formatoinfo = $formatosinfo[0]; } foreach ($formatosinfo as $f) { if (strtoupper($f) == "TEXT/PLAIN") { $formatoinfo = "text/plain"; } } } else { $formatoinfo = $layer->getmetadata("wms_feature_info_type"); if ($formatoinfo == "") { $formatoinfo = $layer->getmetadata("wms_feature_info_mime_type"); } if ($formatoinfo == "") { $formatoinfo = "text/plain"; } } $res = $layer->getWMSFeatureInfoURL($ptimg->x, $ptimg->y, 1, $formatoinfo); $res = str_replace("INFOFORMAT", "INFO_FORMAT", $res); $res2 = $layer->getWMSFeatureInfoURL($ptimg->x, $ptimg->y, 1, "MIME"); $res2 = str_replace("INFOFORMAT", "INFO_FORMAT", $res2); //echo $res." ".$res2;exit; $resposta = file($res); //var_dump($resposta);exit; $n = array(); if (strtoupper($formatoinfo) != "TEXT/HTML" && strtoupper($formatoinfo) != "MIME") { foreach ($resposta as $r) { $t = explode("=", $r); if (count($t) > 1) { $v = str_replace("\\n", "", $t[1]); $v = str_replace("\\r", "", $v); if (trim($v) != "") { $va = trim($v); if ($convC == true) { $va = $this->converte($va); } $n[] = array("alias" => trim($t[0]), "valor" => $va, "link" => "", "img" => ""); } } } //caso esri if (count($n) > 0 && $n[0] == "") { //error_reporting(0); $resposta = file($res); $cabecalho = str_replace('" "', '"|"', $resposta[0]); $cabecalho = explode("|", $cabecalho); $linha = str_replace('" "', '"|"', $resposta[1]); $linha = explode("|", $linha); for ($i = 0; $i < count($cabecalho); ++$i) { if ($convC == true) { $va = $this->converte($linha[$i]); } else { $va = $linha[$i]; } $n[] = array("alias" => $cabecalho[$i], "valor" => $va, "link" => "", "img" => ""); } } } //var_dump($n);exit; $id = nomeRandomico(); if (count($n) == 0 && strtoupper($formatoinfo) != "TEXT/HTML") { $formatoinfo = "MIME"; } if (strtoupper($formatoinfo) == "TEXT/HTML" && $res != "") { $n[] = array("alias" => "", "valor" => "<iframe width=250px id='" . $id . "' name='" . $id . "' src='" . $res . "'></iframe>", "link" => "", "img" => ""); } if (strtoupper($formatoinfo) == "MIME" && $res2 != "") { $n[] = array("alias" => "", "valor" => "<iframe width=250px id='" . $id . "' name='" . $id . "' src='" . $res2 . "'></iframe>", "link" => "", "img" => ""); } if ($res != "") { $n[] = array("alias" => "Link WMS", "valor" => "getfeatureinfo " . $formatoinfo, "link" => $res, "img" => "", "idIframe" => $id); } if ($res2 != "") { $n[] = array("alias" => "Link WMS", "valor" => "getfeatureinfo padrão do serviço", "link" => $res2, "img" => "", "idIframe" => $id); } if ($res == "" && $res2 == "") { $n[] = array("alias" => "Ocorreu um erro", "valor" => "", "link" => "", "img" => ""); } return array($n); } //se o usuario estiver logado e o tema for editavel, a lista de itens //nao usa os alias para permitir a edicao dos dados if (!empty($_COOKIE["i3geocodigologin"]) && $layer->getmetadata("EDITAVEL") == "SIM") { $itens = ""; $itensdesc = ""; $lks = ""; $itemimg = ""; $locimg = ""; } else { $itens = $layer->getmetadata("ITENS"); // itens $itensdesc = $layer->getmetadata("ITENSDESC"); // descrição dos itens $lks = $layer->getmetadata("ITENSLINK"); // link dos itens $itemimg = $layer->getmetadata("ITEMIMG"); //indica um item que será utilizado para colocar um ícone $locimg = $layer->getmetadata("IMGLOC"); //indica o local onde estão os ícones } $tips = $layer->getmetadata("TIP"); $itensLayer = pegaItens($layer, $mapa); $nitens = count($itensLayer); if ($itens == "") { $itens = $itensLayer; } else { $itens = explode(",", $itens); } if ($itensdesc == "") { $itensdesc = $itensLayer; } else { $itensdesc = explode(",", $itensdesc); } if ($lks == "") { $lks = array_fill(0, $nitens - 1, ''); } else { $lks = explode(",", $lks); } if ($itemimg == "") { $itemimg = array_fill(0, $nitens - 1, ''); } else { $itemimg = explode(",", $itemimg); } if ($locimg == "") { $locimg = array_fill(0, $nitens - 1, ''); } else { $locimg = explode(",", $locimg); } $tips = str_replace(" ", ",", $tips); $tips = explode(",", $tips); //o retorno deve ser do tipo TIP if ($etip == true) { $temp = array_combine($itens, $itensdesc); $templ = array_combine($itens, $lks); $tempimg = array_combine($itens, $itemimg); $temploc = array_combine($itens, $locimg); $itensdesc = array(); $itens = array(); $lks = array(); $itemimg = array(); $locimg = array(); //foreach($tips as $t){ foreach ($itensLayer as $t) { $itens[] = $t; if ($temp[$t] != "") { $itensdesc[] = $temp[$t]; } else { $itensdesc[] = $t; } if ($templ[$t] != "") { $lks[] = $templ[$t]; } else { $lks[] = ""; } if ($tempimg[$t] != "") { $itemimg[] = $tempimg[$t]; } else { $itemimg[] = ""; } if ($temploc[$t] != "") { $locimg[] = $temploc[$t]; } else { $locimg[] = ""; } } } if ($layer->connectiontype != MS_WMS && $layer->type == MS_LAYER_RASTER) { $wkt = "nao"; $layer->set("toleranceunits", MS_PIXELS); $layer->set("tolerance", $resolucao); $ident = @$layer->queryByPoint($pt, 0, 0); //0.01); } if ($layer->type == MS_LAYER_POINT || $layer->type == MS_LAYER_LINE || $layer->type == MS_LAYER_CHART) { $layer->set("toleranceunits", MS_PIXELS); $layer->set("tolerance", $resolucao); $ident = @$layer->queryByPoint($pt, 1, -1); //0.01); } if ($layer->type == MS_LAYER_POLYGON) { $layer->set("toleranceunits", MS_PIXELS); $layer->set("tolerance", $resolucao); $ident = @$layer->queryByPoint($pt, 1, -1); } if ($ident == MS_SUCCESS) { //$ident = @$layer->queryByPoint($pt, 1, -1); //verifica se o layer e editavel no sistema METAESTAT $editavel = "nao"; // $sopen = $layer->open(); $res_count = $layer->getNumresults(); if (strtoupper($layer->getmetadata("convcaracter")) == "NAO") { $convC = false; } else { $convC = true; } if ($sopen == MS_FAILURE) { return "erro"; } for ($i = 0; $i < $res_count; ++$i) { $valori = array(); if ($this->v >= 6) { $shape = $layer->getShape($layer->getResult($i)); } else { $result = $layer->getResult($i); $shp_index = $result->shapeindex; $shape = $layer->getfeature($shp_index, -1); } $conta = 0; //var_dump($itens);exit; if ($tiporetorno == "shape" || $tiporetorno == "googlerelevo") { if ($tiporetorno == "shape") { $resultado[] = $shape; } if ($tiporetorno == "googlerelevo") { $lin = $shape->line(0); $p = $lin->point(0); $resultado = array("elevation" => $shape->values[$item], "location" => array("lat" => $p->x, "lng" => $p->y)); } } else { if ($etip == false && $item != "") { $resultado[] = $shape->values[$item]; } else { //var_dump($itens);exit; foreach ($itens as $it) { $val = $shape->values[$it]; if ($convC == true) { $val = $this->converte($val); } $link = $lks[$conta]; foreach ($itens as $t) { $valtemp = $shape->values[$t]; $busca = '[' . $t . ']'; $link = str_replace($busca, $valtemp, $link); } $img = ""; if ($locimg[$conta] != "" && $itemimg[$conta] != "") { $img = "<img src='" . $locimg[$conta] . "//" . $shape->values[$itemimg[$conta]] . "' //>"; } else { if ($itemimg[$conta] != "") { $img = "<img src='" . $shape->values[$itemimg[$conta]] . "' //>"; } } //indica se o item é tbm uma etiqueta $etiqueta = "nao"; if (in_array($it, $tips)) { $etiqueta = "sim"; } $arraytemp = array("item" => $it, "alias" => $this->converte($itensdesc[$conta]), "valor" => $val, "link" => $link, "img" => $img, "tip" => $etiqueta); if ($etip == false) { $valori[] = $arraytemp; } else { $valori[$it] = $arraytemp; } $conta = $conta + 1; } if ($wkt == "sim") { $arraytemp = array("alias" => "wkt", "valor" => $shape->towkt(), "link" => "", "img" => "", "tip" => ""); $valori[] = $arraytemp; } $resultado[] = $valori; } } } $layer->close(); } else { $resultado[] = " "; } if ($etip == true) { return array("resultado" => $resultado, "itensLayer" => $itensLayer); } else { return $resultado; } }