Commit 65891b1400e0ece8603590dbd7e700f98ee9fe74

Authored by Edmar Moretti
1 parent 0039622d

Inclusão de novos metadados, no nível de layer, para geração automática de class…

…es. Em funcoes_gerais.php foi criada uma nova função que deve sempre ser usada nos programas que adicionam novos temas.
classesphp/classe_mapa.php
... ... @@ -741,6 +741,83 @@ $random - indica se os nomes dos novos layers serão modificados ou nao
741 741 foreach ($novosnomes as $n)
742 742 {
743 743 $nlayer = $nmap->getlayerbyname($n);
  744 + autoClasses(&$nlayer,$this->mapa);
  745 + //
  746 + //cria as classes com base em atributos
  747 + //
  748 + /*
  749 + if($nlayer->getmetadata("classesitem") != "")
  750 + {
  751 + $itemnome = $nlayer->getmetadata("classesnome");
  752 + $itemid = $nlayer->getmetadata("classesitem");
  753 + $itemcor = $nlayer->getmetadata("classescor");
  754 + $itemsimbolo = $nlayer->getmetadata("classesimbolo");
  755 + $itemtamanho = $nlayer->getmetadata("classestamanho");
  756 + $classeoriginal = $nlayer->getclass(0);
  757 + //
  758 + //pega o número de ocorrências de itemid
  759 + //
  760 + $nlayer->open();
  761 + $status = $nlayer->whichShapes($this->mapa->extent);
  762 + $parametrosClasses = array();
  763 + if ($status == 0)
  764 + {
  765 + while ($shape = $nlayer->nextShape())
  766 + {
  767 + $id = trim($shape->values[$itemid]);
  768 + if (!$parametrosClasses[$id])
  769 + {
  770 + $nome = "";
  771 + if($itemnome != "")
  772 + $nome = trim($shape->values[$itemnome]);
  773 + $cor = "";
  774 + if($itemcor != "")
  775 + $cor = explode(",",trim($shape->values[$itemcor]));
  776 + if(count($cor) != 3)
  777 + $cor = explode(" ",trim($shape->values[$itemcor]));
  778 + $tamanho = "";
  779 + if($itemtamanho != "")
  780 + $tamanho = trim($shape->values[$itemtamanho]);
  781 + $simbolo = "";
  782 + if($itemsimbolo != "")
  783 + $simbolo = trim($shape->values[$itemsimbolo]);
  784 + $parametrosClasses[$id] = array("nome"=>$nome,"cor"=>$cor,"tamanho"=>$tamanho,"simbolo"=>$simbolo);
  785 + }
  786 + }
  787 + $fechou = $nlayer->close();
  788 + //echo "<pre>";var_dump($parametrosClasses);
  789 + if (count($parametrosClasses) > 0)
  790 + {
  791 + $ids = array_keys($parametrosClasses);
  792 + for($i=0;$i < count($parametrosClasses);$i++)
  793 + {
  794 + $p = $parametrosClasses[$ids[$i]];
  795 + //echo "<pre>";var_dump($p);
  796 + $nclasse = ms_newClassObj($nlayer,$classeoriginal);
  797 + if($p["nome"] != "")
  798 + $nclasse->set("name",$p["nome"]);
  799 + $estilo = $nclasse->getstyle(0);
  800 + if($p["cor"] != "")
  801 + {
  802 + $cor = $p["cor"];
  803 + $ncor = $estilo->color;
  804 + if($ncor == "")
  805 + $ncor = $estilo->outlinecolor;
  806 + $ncor->setrgb($cor[0],$cor[1],$cor[2]);
  807 + }
  808 + if($p["tamanho"] != "")
  809 + $estilo->set("size",$p["tamanho"]);
  810 + if($p["simbolo"] != "")
  811 + $estilo->set("symbolname",$p["simbolo"]);
  812 +
  813 + $strE = "('[".$itemid."]'eq'".$ids[$i]."')";
  814 + $nclasse->setexpression($strE);
  815 + }
  816 + $classeoriginal->set("status",MS_DELETE);
  817 + }
  818 + }
  819 + }
  820 + */
744 821 //
745 822 //muda para RGB para melhorar o desenho da imagem raster
746 823 //
... ...
classesphp/funcoes_gerais.php
... ... @@ -1842,4 +1842,98 @@ function ixml($no,$nome)
1842 1842 {
1843 1843 return mb_convert_encoding($no->$nome,"HTML-ENTITIES","auto");
1844 1844 }
  1845 +function autoClasses(&$nlayer,$mapa)
  1846 +{
  1847 + if($nlayer->getmetadata("classesitem") == "")
  1848 + {return;}
  1849 + $itemnome = $nlayer->getmetadata("classesnome");
  1850 + $itemid = $nlayer->getmetadata("classesitem");
  1851 + $itemcor = $nlayer->getmetadata("classescor");
  1852 + $itemsimbolo = $nlayer->getmetadata("classesimbolo");
  1853 + $itemtamanho = $nlayer->getmetadata("classestamanho");
  1854 + $classeoriginal = $nlayer->getclass(0);
  1855 + //
  1856 + //pega a extensao geografica que devera ser utilizada
  1857 + //
  1858 + $prjMapa = $mapa->getProjection();
  1859 + $prjTema = $nlayer->getProjection();
  1860 + $ret = $nlayer->getmetadata("extensao");
  1861 + if ($ret == "")
  1862 + {
  1863 + $ret = $nlayer->getextent();
  1864 + //reprojeta o retangulo
  1865 + if (($prjTema != "") && ($prjMapa != $prjTema))
  1866 + {
  1867 + $projInObj = ms_newprojectionobj($prjTema);
  1868 + $projOutObj = ms_newprojectionobj($prjMapa);
  1869 + $ret->project($projInObj, $projOutObj);
  1870 + }
  1871 + }
  1872 + else
  1873 + {
  1874 + $temp = explode(" ",$ret);
  1875 + $ret = ms_newRectObj();
  1876 + $ret->setextent($temp[0],$temp[1],$temp[2],$temp[3]);
  1877 + }
  1878 + //
  1879 + $nlayer->open();
  1880 + $status = $nlayer->whichShapes($ret);
  1881 + $parametrosClasses = array();
  1882 + if ($status == 0)
  1883 + {
  1884 + while ($shape = $nlayer->nextShape())
  1885 + {
  1886 + $id = trim($shape->values[$itemid]);
  1887 + if (!$parametrosClasses[$id])
  1888 + {
  1889 + $nome = "";
  1890 + if($itemnome != "")
  1891 + $nome = trim($shape->values[$itemnome]);
  1892 + $cor = "";
  1893 + if($itemcor != "")
  1894 + $cor = explode(",",trim($shape->values[$itemcor]));
  1895 + if(count($cor) != 3)
  1896 + $cor = explode(" ",trim($shape->values[$itemcor]));
  1897 + $tamanho = "";
  1898 + if($itemtamanho != "")
  1899 + $tamanho = trim($shape->values[$itemtamanho]);
  1900 + $simbolo = "";
  1901 + if($itemsimbolo != "")
  1902 + $simbolo = trim($shape->values[$itemsimbolo]);
  1903 + $parametrosClasses[$id] = array("nome"=>$nome,"cor"=>$cor,"tamanho"=>$tamanho,"simbolo"=>$simbolo);
  1904 + }
  1905 + }
  1906 + $fechou = $nlayer->close();
  1907 + //echo "<pre>";var_dump($parametrosClasses);
  1908 + if (count($parametrosClasses) > 0)
  1909 + {
  1910 + $ids = array_keys($parametrosClasses);
  1911 + for($i=0;$i < count($parametrosClasses);$i++)
  1912 + {
  1913 + $p = $parametrosClasses[$ids[$i]];
  1914 + //echo "<pre>";var_dump($p);
  1915 + $nclasse = ms_newClassObj($nlayer,$classeoriginal);
  1916 + if($p["nome"] != "")
  1917 + $nclasse->set("name",$p["nome"]);
  1918 + $estilo = $nclasse->getstyle(0);
  1919 + if($p["cor"] != "")
  1920 + {
  1921 + $cor = $p["cor"];
  1922 + $ncor = $estilo->color;
  1923 + if($ncor == "")
  1924 + $ncor = $estilo->outlinecolor;
  1925 + $ncor->setrgb($cor[0],$cor[1],$cor[2]);
  1926 + }
  1927 + if($p["tamanho"] != "")
  1928 + $estilo->set("size",$p["tamanho"]);
  1929 + if($p["simbolo"] != "")
  1930 + $estilo->set("symbolname",$p["simbolo"]);
  1931 + $strE = "('[".$itemid."]'eq'".$ids[$i]."')";
  1932 + $nclasse->setexpression($strE);
  1933 + }
  1934 + $classeoriginal->set("status",MS_DELETE);
  1935 + }
  1936 + }
  1937 + return;
  1938 +}
1845 1939 ?>
1846 1940 \ No newline at end of file
... ...
geraminiatura.php
... ... @@ -104,6 +104,7 @@ function verifica($map)
104 104 $layern = $nmapa->getLayerByName($teman);
105 105 $layern->set("status",MS_DEFAULT);
106 106 ms_newLayerObj($mapa, $layern);
  107 + autoClasses(&$layern,$mapa);
107 108 if ($layern->data == "")
108 109 $dados = $layern->connection;
109 110 else
... ...
mobile/inicia.php
... ... @@ -58,7 +58,7 @@ function iniciamobile()
58 58 $eb->set("style",0);
59 59 $eb->set("position",MS_LL);
60 60 $cornb = $eb->backgroundcolor;
61   - $n = explode(",",$bcor);
  61 + //$n = explode(",",$bcor);
62 62 $cornb->setrgb(255,0,0);
63 63 $mapa->save($tmpfname);
64 64 //$tipo = "inicia";
... ...
ms_criamapa.php
... ... @@ -568,6 +568,7 @@ function incluiTemasIniciais()
568 568 if ($layern->name == "estadosl")
569 569 {$layern->set("data",$temasaplic."/dados/estados.shp");}
570 570 $layern->setmetadata("NOMEORIGINAL",$layern->name);
  571 + autoClasses(&$layern,$mapn);
571 572 ms_newLayerObj(&$mapn, $layern);
572 573 }
573 574 }
... ...
ogc.php
... ... @@ -176,6 +176,7 @@ if ($tipo == &quot;&quot;)
176 176 }
177 177 }
178 178 }
  179 + autoClasses(&$l,$oMap);
179 180 ms_newLayerObj($oMap, $l);
180 181 }
181 182 }
... ...
temas/bioma.map
... ... @@ -5,10 +5,7 @@ LAYER
5 5 TYPE Polygon
6 6 STATUS OFF
7 7 TEMPLATE "none.htm"
8   - CONNECTIONTYPE postgis
9   - CONNECTION "user=geodados password=geodados dbname=geodados host=10.1.1.36 port=5432"
10   -#CONNECTION ""
11   - DATA "the_geom FROM (select * FROM brasil.brareg1) as foo USING UNIQUE gid USING SRID=4291"
  8 + DATA "c:\ms4w\apache\htdocs\geodados\brasil\vegetacao\biomas.shp"
12 9 METADATA
13 10 ITENS "cd_legenda"
14 11 ITENSDESC "Nome"
... ... @@ -16,43 +13,14 @@ LAYER
16 13 CLASSE "SIM"
17 14 ESCALA "5000000"
18 15 EXTENSAO "-75.233614607 -33.7515829981 -27.592958622 5.272156"
  16 + CLASSESNOME "CD_LEGENDA"
  17 + CLASSESITEM "ID"
  18 + CLASSESCOR "COR"
  19 + CLASSESSIMBOLO ""
  20 + CLASSESTAMANHO ""
19 21 END
20   - TRANSPARENCY 80
21 22 CLASS
22   - Name 'Amazônia'
23   - EXPRESSION ('[id]'eq '1')
24   - COLOR 255 255 204
25   - OUTLINECOLOR 50 50 50
26   - END # CLASS
27   - CLASS
28   - Name 'Caatinga'
29   - EXPRESSION ('[id]'eq '2')
30   - COLOR 232 220 201
31 23 OUTLINECOLOR 50 50 50
32 24 END # CLASS
33   - CLASS
34   - Name 'Cerrado'
35   - EXPRESSION ('[id]'eq '3')
36   - COLOR 244 214 0
37   - OUTLINECOLOR 50 50 50
38   - END # CLASS
39   - CLASS
40   - Name 'Pantanal'
41   - EXPRESSION ('[id]'eq '6')
42   - COLOR 200 200 241
43   - OUTLINECOLOR 50 50 50
44   - END # CLASS
45   - CLASS
46   - Name 'Pampa'
47   - EXPRESSION ('[id]'eq '5')
48   - COLOR 143 189 192
49   - OUTLINECOLOR 50 50 50
50   - END # CLASS
51   - CLASS
52   - Name 'Mata Atlântica'
53   - EXPRESSION ('[id]'eq '4')
54   - COLOR 218 255 216
55   - OUTLINECOLOR 50 50 50
56   - END # CLASS
57 25 END
58 26 END
59 27 \ No newline at end of file
... ...
testamapfile.php
... ... @@ -123,7 +123,9 @@ function verifica($map)
123 123 else
124 124 {$mapa = ms_newMapObj("aplicmap/geral1.map");}
125 125 if(@ms_newMapObj($tema))
126   - {$nmapa = ms_newMapObj($tema);}
  126 + {
  127 + $nmapa = ms_newMapObj($tema);
  128 + }
127 129 else
128 130 {
129 131 echo "erro no arquivo $map <br>";
... ... @@ -135,6 +137,7 @@ function verifica($map)
135 137 {
136 138 $layern = $nmapa->getLayerByName($teman);
137 139 $layern->set("status",MS_DEFAULT);
  140 + autoClasses(&$layern,$nmapa);
138 141 ms_newLayerObj($mapa, $layern);
139 142 if ($layern->data == "")
140 143 $dados = $layern->connection;
... ...