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 | 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
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; | ... | ... |