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,6 +741,83 @@ $random - indica se os nomes dos novos layers serão modificados ou nao
741 foreach ($novosnomes as $n) 741 foreach ($novosnomes as $n)
742 { 742 {
743 $nlayer = $nmap->getlayerbyname($n); 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 //muda para RGB para melhorar o desenho da imagem raster 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,4 +1842,98 @@ function ixml($no,$nome)
1842 { 1842 {
1843 return mb_convert_encoding($no->$nome,"HTML-ENTITIES","auto"); 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 \ No newline at end of file 1940 \ No newline at end of file
geraminiatura.php
@@ -104,6 +104,7 @@ function verifica($map) @@ -104,6 +104,7 @@ function verifica($map)
104 $layern = $nmapa->getLayerByName($teman); 104 $layern = $nmapa->getLayerByName($teman);
105 $layern->set("status",MS_DEFAULT); 105 $layern->set("status",MS_DEFAULT);
106 ms_newLayerObj($mapa, $layern); 106 ms_newLayerObj($mapa, $layern);
  107 + autoClasses(&$layern,$mapa);
107 if ($layern->data == "") 108 if ($layern->data == "")
108 $dados = $layern->connection; 109 $dados = $layern->connection;
109 else 110 else
mobile/inicia.php
@@ -58,7 +58,7 @@ function iniciamobile() @@ -58,7 +58,7 @@ function iniciamobile()
58 $eb->set("style",0); 58 $eb->set("style",0);
59 $eb->set("position",MS_LL); 59 $eb->set("position",MS_LL);
60 $cornb = $eb->backgroundcolor; 60 $cornb = $eb->backgroundcolor;
61 - $n = explode(",",$bcor); 61 + //$n = explode(",",$bcor);
62 $cornb->setrgb(255,0,0); 62 $cornb->setrgb(255,0,0);
63 $mapa->save($tmpfname); 63 $mapa->save($tmpfname);
64 //$tipo = "inicia"; 64 //$tipo = "inicia";
ms_criamapa.php
@@ -568,6 +568,7 @@ function incluiTemasIniciais() @@ -568,6 +568,7 @@ function incluiTemasIniciais()
568 if ($layern->name == "estadosl") 568 if ($layern->name == "estadosl")
569 {$layern->set("data",$temasaplic."/dados/estados.shp");} 569 {$layern->set("data",$temasaplic."/dados/estados.shp");}
570 $layern->setmetadata("NOMEORIGINAL",$layern->name); 570 $layern->setmetadata("NOMEORIGINAL",$layern->name);
  571 + autoClasses(&$layern,$mapn);
571 ms_newLayerObj(&$mapn, $layern); 572 ms_newLayerObj(&$mapn, $layern);
572 } 573 }
573 } 574 }
@@ -176,6 +176,7 @@ if ($tipo == &quot;&quot;) @@ -176,6 +176,7 @@ if ($tipo == &quot;&quot;)
176 } 176 }
177 } 177 }
178 } 178 }
  179 + autoClasses(&$l,$oMap);
179 ms_newLayerObj($oMap, $l); 180 ms_newLayerObj($oMap, $l);
180 } 181 }
181 } 182 }
temas/bioma.map
@@ -5,10 +5,7 @@ LAYER @@ -5,10 +5,7 @@ LAYER
5 TYPE Polygon 5 TYPE Polygon
6 STATUS OFF 6 STATUS OFF
7 TEMPLATE "none.htm" 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 METADATA 9 METADATA
13 ITENS "cd_legenda" 10 ITENS "cd_legenda"
14 ITENSDESC "Nome" 11 ITENSDESC "Nome"
@@ -16,43 +13,14 @@ LAYER @@ -16,43 +13,14 @@ LAYER
16 CLASSE "SIM" 13 CLASSE "SIM"
17 ESCALA "5000000" 14 ESCALA "5000000"
18 EXTENSAO "-75.233614607 -33.7515829981 -27.592958622 5.272156" 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 END 21 END
20 - TRANSPARENCY 80  
21 CLASS 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 OUTLINECOLOR 50 50 50 23 OUTLINECOLOR 50 50 50
32 END # CLASS 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 END 25 END
58 END 26 END
59 \ No newline at end of file 27 \ No newline at end of file
testamapfile.php
@@ -123,7 +123,9 @@ function verifica($map) @@ -123,7 +123,9 @@ function verifica($map)
123 else 123 else
124 {$mapa = ms_newMapObj("aplicmap/geral1.map");} 124 {$mapa = ms_newMapObj("aplicmap/geral1.map");}
125 if(@ms_newMapObj($tema)) 125 if(@ms_newMapObj($tema))
126 - {$nmapa = ms_newMapObj($tema);} 126 + {
  127 + $nmapa = ms_newMapObj($tema);
  128 + }
127 else 129 else
128 { 130 {
129 echo "erro no arquivo $map <br>"; 131 echo "erro no arquivo $map <br>";
@@ -135,6 +137,7 @@ function verifica($map) @@ -135,6 +137,7 @@ function verifica($map)
135 { 137 {
136 $layern = $nmapa->getLayerByName($teman); 138 $layern = $nmapa->getLayerByName($teman);
137 $layern->set("status",MS_DEFAULT); 139 $layern->set("status",MS_DEFAULT);
  140 + autoClasses(&$layern,$nmapa);
138 ms_newLayerObj($mapa, $layern); 141 ms_newLayerObj($mapa, $layern);
139 if ($layern->data == "") 142 if ($layern->data == "")
140 $dados = $layern->connection; 143 $dados = $layern->connection;