Example #1
0
/**
 * Aplica um filtro para mostrar apenas uma regiao escolhida pelo usuario
 * Altera todos os layers com o mesmo codigo_tipo_regiao
 * Se codigo_tipo_regiao for vazio, remove os filtros de todos os layers
 * @param arquivo mapfile do mapa atual
 * @param codigo da regiao
 * @param valor da regiao (id)
 * @return string
 */
function analise_aplicafiltroregiao($map_file, $codigo_tipo_regiao, $codigo_regiao)
{
    //echo $codigo_tipo_regiao;exit;
    $m = new Metaestat();
    $mapa = ms_newMapObj($map_file);
    $layersm = analise_listaLayersMetaestat($mapa);
    if (count($layersm) > 0) {
        //remove o filtro
        if (empty($codigo_tipo_regiao)) {
            foreach ($layersm as $l) {
                $data = $l->data;
                //substitui os marcadores definidos na construcao do layer. Veja a classe metaestat
                $s = explode("/*FR*/", $data);
                if (count($s) > 1) {
                    $data = $s[0] . "/*FR*//*FR*/" . $s[2];
                }
                $l->set("data", $data);
            }
        } else {
            //pega as regioes que sao filhos de $codigo_tipo_regiao
            $regioesfilho = $m->listaHierarquiaRegioes($codigo_tipo_regiao);
            //if(count($regioesfilho) > 0){
            $regiao = $m->listaTipoRegiao($codigo_tipo_regiao);
            $filtro = $regiao["identificador"] . "::text = '{$codigo_regiao}'";
            $layers = analise_listaLayersRegiao($layersm, $codigo_tipo_regiao);
            foreach ($layers as $l) {
                $data = $l->data;
                //substitui os marcadores definidos na construcao do layer. Veja a classe metaestat
                $s = explode("/*FR*/", $data);
                if (count($s) > 1) {
                    $data = $s[0] . "/*FR*/ AND " . $filtro . " /*FR*/" . $s[2];
                }
                $l->set("data", $data);
            }
            //}
            //else{
            foreach ($regioesfilho as $r) {
                $regiao = $m->listaTipoRegiao($r["codigo_tipo_regiao"]);
                $filtro = $r["colunaligacao_regiaopai"] . "::text = '{$codigo_regiao}'";
                $layers = analise_listaLayersRegiao($layersm, $r["codigo_tipo_regiao"]);
                foreach ($layers as $l) {
                    $data = $l->data;
                    //substitui os marcadores definidos na construcao do layer. Veja a classe metaestat
                    $s = explode("/*FR*/", $data);
                    if (count($s) > 1) {
                        $data = $s[0] . "/*FR*/ AND " . $filtro . " /*FR*/" . $s[2];
                    }
                    $l->set("data", $data);
                }
            }
            //}
        }
    }
    $mapa->save($map_file);
    return "ok";
}
Example #2
0
 Valor: LISTATIPOREGIAO
 
 Lista de tipos de regiao
 
 Retorno:
 
 {JSON}
 */
 case "LISTATIPOREGIAO":
     $m = new Metaestat();
     retornaJSON($m->listaTipoRegiao($codigo_tipo_regiao));
     exit;
     break;
 case "LISTAHIERARQUIAREGIOES":
     $m = new Metaestat();
     $regioes = $m->listaHierarquiaRegioes($codigo_tipo_regiao);
     $valores = "";
     //se achou apenas uma regiao, pega os valores
     if (count($regioes) < 2 && $codigo_tipo_regiao != "") {
         $valores = $m->listaDadosRegiao($codigo_tipo_regiao, $_GET["codigoregiaopai"], $_GET["valorregiaopai"]);
     }
     retornaJSON(array("regiaopai" => $codigo_tipo_regiao, "regioes" => $regioes, "valores" => $valores));
     exit;
     break;
 case "LISTAREGIOESMEDIDA":
     $m = new Metaestat();
     retornaJSON($m->listaRegioesMedida($id_medida_variavel));
     exit;
     break;
 case "LISTAAGREGAREGIAO":
     $m = new Metaestat();