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