Ferramentas do usuário

Ferramentas do site


geopro:modelos:roadmap:funcoes

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
geopro:modelos:roadmap:funcoes [2007/02/23 01:21] – created gcamarageopro:modelos:roadmap:funcoes [2007/02/23 11:03] (atual) gcamara
Linha 1: Linha 1:
-==== TerraME - conceitos ====+===== TerraME - Novas Funções =====
  
-1. Um dos pontos mais delicados do TerraME (mas necessárioé a revisão dos conceitos originais. Esta revisào deverá ser muito debatida, pois (como dito acima) muitos conceitos nasceram de reflexão longa do Tiago, e ainda não foram plenamente absorvidos pelo resto da equipe. +==== TerraME - Autômatos Aninhados ==== 
 +== Gilberto Câmara (21/02/2007==
  
-2No curso, usamos os conceitos de CellularSpace, Cell, Neighbour, SpatialIterator e as funções ForEachCell e ForEachNeighbourEles foram suficientes para todos os exemplos. Precisamos de muitos exemplos adicionais que possam validar os demais conceitos do TerraME+1Estamos muito interessados em usar os conceitos de autômatos aninhadosConsideremos duas situações distintas: (a) Dois espaços celulares na mesma resolução em tempos diferentes; (b) Dois (ou mais) espaços celulares com resoluções diferentes
  
-3. Minha intuição é que podemos descartar de vez os conceitos de Automatos Híbridos.No caso de Automatos Globais e Locais, seria bom construir exemplos de seu usopara podermos entender melhor todas as implicações destes conceitos.+2. No caso (a), seria bom ter uma extensão da função ForEachCell que combine os dois espaços celulares na área onde haja intersecção. Minha sugestão é ''ForEachCellPair (cellSpace1,cellSpace2)''.  
 +//(Update 21/Fev: O Tiago já implementou esta função - que rápido!).// 
  
-==== TerraME - Suporte adicional para automatos aninhados ====+3. No caso (b), a interface entre dois dados de resoluções e extensões distintas precisa de funções de passagem de escala que façam "upscaling" e "downscaling" de dados.
  
-1. Estamos muito interessados em usar os conceitos de autômatos aninhados. A idéia é ótima, já está disponível na versão atual do TerraME. Seria muito útil amplia-la permitir usar automatos aninhados em programação "bottom-up"+==== TerraME - Autômatos Aninhados (2) ==== 
 +== Tiago Carneiro (22/02/2007) ==
  
-2Consideremos duas situações distintas: (aDois espaços celulares na mesma resolução em tempos diferentes; (bDois (ou mais) espaços celulares com resoluções diferentes+1TerraME não possui o conceito de células aninhadas, somente escalas são aninhadas (Scale ou Environment), e com elas todo seu conteúdo: espaços celulares, automatos e relógios. Então, o aninhamento de escala, necessariamente, não estrutura o espaço, não há como saber que células de uma escala interna são conceitualmente(na cabeça do modeladorrefinamentos de uma células da escala externa. Esta estratégia evita que o modelador precise definir à priori a estrutura para o espaço, não enrijece as estruturas espaciais que poderiam ser criadas em TerraME, facilita a carga de espaço celulares a partir de sistemas de informação geográfica onde o conceito de mapas é forte. Contudo, TerraME fornece as ferramentas necessárias para criar "qualquer" estrutura espacial, através do conceito de vizinhanças: células em um espaço celular podem ter vizinhos em qualquer outro espaço celular
  
-3. No caso (a), seria bom ter uma extensão da função ForEachCell que combine os dois espaços celulares na área onde haja intersecção. Minha sugestão é ''ForEachCellPair (cellSpace1,cellSpace2)''. //(Update 21/Fev: O Tiago já implementou esta função - que rápido!).//  +2. Suponha os espaços celulares "cs1" e "cs2" como apresentados na figura abaixo. Nela, cada célula do espaço celular "cs1" possui 4 células de resolução mais fina no espaço celular "cs2". Uma relação unidirecional (de cs1 para cs2) foi utilizada para implementar o conceito de aninhamento de celulas e permitir "downscaling". Se as células de "cs2" também precisassem conhecer sua célula "pai/mãe" para permitir "upscaling", então uma vizinhaça bidirecional deveria ser utilizada, bastaria incluir a células de "cs1" como vizinha das 4 de "cs2"
- +
-4. No caso (b), a interface entre dois dados de resoluções e extensões distintas precisa de funções de passagem de escala que façam "upscaling" e "downscaling" de dados. Seria bom termos uma função adicional: ''ForEachNestedCell (cell, function( cell, nested_cell)); '' +
-Essa função permitiria o "upscaling" e "downscaling" entre espaços celulares aninhados. +
- +
-     Comentários Tiago: +
- +
-4.1. TerraME não possui o conceito de células aninhadas, somente escalas são aninhadas (Scale ou Environment), e com elas todo seu conteúdo: espaços celulares, automatos e relógios. Então, o aninhamento de escala, necessariamente, não estrutura o espaço, não há como saber que células de uma escala interna são conceitualmente(na cabeça do modelador) refinamentos de uma células da escala externa. Esta estratégia evita que o modelador precise definir à priori a estrutura para o espaço, não enrijece as estruturas espaciais que poderiam ser criadas em TerraME, facilita a carga de espaço celulares a partir de sistemas de informação geográfica onde o conceito de mapas é forte. Contudo, TerraME fornece as ferramentas necessárias para criar "qualquer" estrutura espacial, através do conceito de vizinhanças: células em um espaço celular podem ter vizinhos em qualquer outro espaço celular.  +
- +
-4.2. Suponha os espaços celulares "cs1" e "cs2" como apresentados na figura abaixo. Nela, cada célula do espaço celular "cs1" possui 4 células de resolução mais fina no espaço celular "cs2". Uma relação unidirecional (de cs1 para cs2) foi utilizada para implementar o conceito de aninhamento de celulas e permitir "downscaling". Se as células de "cs2" também precisassem conhecer sua célula "pai/mãe" para permitir "upscaling", então uma vizinhaça bidirecional deveria ser utilizada, bastaria incluir a células de "cs1" como vizinha das 4 de "cs2"+
  
 {{geopro:modelos:celulasaninhadas.jpg|}}\\ {{geopro:modelos:celulasaninhadas.jpg|}}\\
 **Figura 1. Aninhamento de células por meio da relação de vizinhança.**\\ **Figura 1. Aninhamento de células por meio da relação de vizinhança.**\\
  
-4.3. Desta maneira, a função "ForEachNestedCell (cell, function( cell, nested_cell))" não existe em TerraME, mas sua funcionalidade pode facilmente ser implementada pela combinação das funções "ForEachCell" e "ForEachNeighbor":+3. Desta maneira, a funcionalidade de espaços celulares aninhados pode facilmente ser implementada pela combinação das funções "ForEachCell" e "ForEachNeighbor":
  
 <code lua> <code lua>
   ForEachCell( cs1,    ForEachCell( cs1, 
-               function( cell ) +      function( cell ) 
-                    ForEachNeighbor( cell, +             ForEachNeighbor( cell, 
-                                     1, -- 1 refere-se ao índice da vizinhaça, que foi utilizada +                    1, -- 1 refere-se ao índice da vizinhaça, que foi utilizada 
-                                        -- para implementar a estrutura espacial como discutido +                       -- para implementar a estrutura espacial como discutido 
-                                      function( cell, neigh, weight ) -- neigh é uma nested_cell+                    function( cell, neigh, weight ) -- neigh é uma nested_cell
                                              
-                                          -- coloque aqui o seu codigo+                             -- coloque aqui o seu codigo
                                                                                                                        
-                                      end+                    end
                     );                     );
                end                end
Linha 45: Linha 39:
 </code>  </code> 
  
-4.4. O codigo fonte abaixo mostra como vizinhanças podem ser criadas respeitando-se as coordenadas cartezianas (estrutura espacial) atribuídas pela biblioteca GIS TerraLib. No código, uma vizinhança de Moore é criada para cada célula do espaço celular recebido como parâmetro.A vizinhana de Moore, para o espaço bidimensional, inclui as 8 celulas imediatamente adjacentes e a própria células, totalizando 9 células.+4. O código fonte abaixo mostra como vizinhanças podem ser criadas respeitando-se as coordenadas cartesianas (estrutura espacial) atribuídas pela biblioteca GIS TerraLib. No código, uma vizinhança de Moore é criada para cada célula do espaço celular recebido como parâmetro. A vizinhança de Moore, para o espaço bidimensional, inclui as 8 celulas imediatamente adjacentes e a própria células, totalizando 9 células.
  
 <code lua> <code lua>
 -- Creates a Moore neighborhood for each cell -- Creates a Moore neighborhood for each cell
 function CreateMooreNeighborhood( cs ) function CreateMooreNeighborhood( cs )
- for i, cell in ipairs( cs.cells ) do +     for i, cell in ipairs( cs.cells ) do 
- local neigh = Neighborhood(); +          local neigh = Neighborhood(); 
- local lin = -1;  +   local lin = -1;  
- while ( lin <= 1 ) do +      while ( lin <= 1 ) do 
- local col = -1; + local col = -1; 
- while ( col <= 1 ) do  + while ( col <= 1 ) do  
- -- add nieghbor +    -- add neighbor 
- local index = TeCoord{ x = (cell.x + col), y = (cell.y + lin)}; +      local index = TeCoord{ x = (cell.x + col), y = (cell.y + lin)}; 
- neigh:addCell( index, cs, 1/9 ); -- wheight = 0.111111 (9 neighbors)+ neigh:addCell( index, cs, 1/9 ); -- weight = 0.111111 (9 neighbors)
   
- col = col + 1; + col = col + 1; 
- end+ end
  lin = lin + 1;  lin = lin + 1;
- end + end 
- cell:addNeighborhood( neigh );+ cell:addNeighborhood( neigh );
  end  end
 end end
Linha 70: Linha 64:
  
  
-4.5. O arquivo a seguir demonstra como o conceito de vizinhaça de TerraME pode ser utilizado  para construir aninhamento de espaços celulares. É necessário o banco "rondonia.mdb" para executar o exemplo: demo1.lua{{geopro:modelos:demo1.lua|}} +5. O arquivo a seguir demonstra como o conceito de vizinhaça de TerraME pode ser utilizado  para construir aninhamento de espaços celulares. É necessário o banco "rondonia.mdb" para executar o exemplo: demo1.lua{{geopro:modelos:demo1.lua|}} 
  
geopro/modelos/roadmap/funcoes.1172193671.txt.gz · Última modificação: 2007/02/23 01:21 por gcamara