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