Beispiel #1
0
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;
}
Beispiel #2
0
 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";
 }
Beispiel #3
0
    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&atilde;o foi poss&iacute;vel criar o mapa. Verifique as permiss&otilde;es ou se h&aacute; algum erro no mapfile</b></span><br><br>";
} else {
    $mapa = ms_newMapObj($mapfile);
    $n = $mapa->numlayers;
    echo "<br>Obs.: o corte de imagens n&atilde;o &eacute; 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&atilde;o foi poss&iacute;vel criar o LAYER {$l->name}. Verifique as permiss&otilde;es ou se h&aacute; 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: "../../"};
Beispiel #4
0
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;
}
Beispiel #5
0
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;
    }
}
Beispiel #6
0
 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";
 }
Beispiel #7
0
 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);
 }
Beispiel #8
0
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;
}
Beispiel #9
0
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;
     */
 }
Beispiel #11
0
 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";
 }
Beispiel #12
0
 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&ccedil;&atilde;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&atilde;o do servi&ccedil;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&ccedil;&atilde;o dos itens
         $lks = $layer->getmetadata("ITENSLINK");
         // link dos itens
         $itemimg = $layer->getmetadata("ITEMIMG");
         //indica um item que ser&aacute; utilizado para colocar um &iacute;cone
         $locimg = $layer->getmetadata("IMGLOC");
         //indica o local onde est&atilde;o os &iacute;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 &eacute; 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;
     }
 }