Commit 65891b1400e0ece8603590dbd7e700f98ee9fe74
1 parent
0039622d
Exists in
master
and in
7 other branches
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.
Showing
8 changed files
with
185 additions
and
40 deletions
Show diff stats
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 | } |
ogc.php
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; |