====== TerraAPP: Plataforma para aplicações em Áreas de Preservação Permanente ======
Apresentação teórica e prática de ferramentas desenvolvidas sobre a TerraLib no INPE para aplicações em Áreas de Preservação Permanente.
O material pode ser utilizado desde que respeitada a licença:

TerraAPP: Plataforma para aplicações em Áreas de Preservação Permanente by Laercio M. Namikawa is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
====== Extração de Leito do Rio em Imagens RapidEye  =======
**Objetivo**: gerar a drenagem de margem dupla da lâmina de água no leito de rios detectáveis em imagens multiespectrais da constelação de satélites RapidEye, utilizando a informação de cor.
**Metodologia**:
  - Usar a transformação de cores RGB para IHS
  - Determinar os limiares de ângulos (da matiz H) e intensidade (da componente I) que caracterizam a lâmina de água.
  - Aplicar os limiares definidos para definir os pixels de lâmina de água.
  - Eliminar pixels detectados como água mas que são ruídos  por meio de limiar de área mínima.
  - Editar manualmente para eliminar ruídos maiores, lagoas e represas.
  - Opcionalmente suavizar as margens da drenagem por spline.
====== Extração de Leito do Rio em Imagens RapidEye no SPRING ======
  - Importar as bandas multiespectrais da imagem RapidEye entre as coberturas disponíveis.
  - Aplicar transformação RGB para IHS na combinação de bandas 435 através do LEGAL.
  - Determinar os limiares de ângulos (da matiz H) e intensidade (da componente I) que caracterizam a lâmina de água através da ferramenta de Contraste /Fatiamento/Arco-Íris.
  - Aplicar os limiares definidos para definir os pixels de lâmina de água através do LEGAL.
  - Vetorizar o mapa matricial de lâmina de água.
  - Eliminar polígonos (que representam ruídos) menores que 1000 m2 através da ferramenta Limpar Vetores.
  - Editar manualmente para eliminar ruídos maiores, lagoas e represas.
  - Opcionalmente suavizar as margens da drenagem por spline.
  - Copiar as linhas para um PI da categoria MNT.
  - Converter todas as linhas para isolinhas.
  - Aplicar a suavização.
  - Copiar as linhas suavizadas  de volta ao PI original
  - Editar manualmente corrigir contornos da drenagem.
{{:trein:ufpedetecaolaminaaguarapideye.pdf|Acessar o PDF}}
==== Programa Legal para Conversão RGB IHS em Imagem RapidEye ====
// Converte RGB para IHS
// Adapted from Foley, VanDam 2nd.Ed.(p.592)
	// given r,g,b on [0 ... 1],
	// return (s,l) on [0 ... 1] h [0...360, -1= UNDEFINED]
{
Imagem ir ("CAT_Imagem");
Imagem ig ("CAT_Imagem");
Imagem ib ("CAT_Imagem");
MNT hue ("CAT_MNT");
MNT maxv ("CAT_MNT");
MNT red, green, blue ("CAT_MNT");
MNT iszero, minvl ("CAT_MNT");
MNT dltvl ("CAT_MNT");
MNT hue6 ("CAT_MNT");
MNT sat ("CAT_MNT");
 ir = Recupere( Nome = "RapidEye2014_4" );
 ig = Recupere( Nome = "RapidEye2014_3" );
 ib = Recupere( Nome = "RapidEye2014_5" );
 hue = Novo( Nome = "H_435" , ResX = 5 , ResY = 5 , Escala = 10000 );
 maxv = Novo( Nome = "V_435" , ResX = 5 , ResY = 5 , Escala = 10000 );
 red   = New(Name="TMP_HSV_R",ResX=5,ResY=5,Escala=10000); 
 green = New(Name="TMP_HSV_G",ResX=5,ResY=5,Escala=10000); 
 blue  = New(Name="TMP_HSV_B",ResX=5,ResY=5,Escala=10000); 
 minvl  = New(Name="TMP_MIN",ResX=5,ResY=5,Escala=10000); 
 dltvl  = New(Name="TMP_DLT",ResX=5,ResY=5,Escala=10000); 
 sat  = New(Name="TMP_SAT",ResX=5,ResY=5,Escala=10000); 
 hue6  = New(Name="TMP_H6",ResX=5,ResY=5,Escala=10000); 
//Assume input image range 0-65535, output range 0-1
  red   = Digital(ir)/65535.;
  green = Digital(ig)/65535.;
  blue  = Digital(ib)/65535.;
  //    max := Maximum(r,g,b)
  maxv = (red >= green ) && (red >= blue  ) ? red :
          (blue >= green) ? blue : green;
 
//    min := Minimum(r,g,b)
  minvl = (red <= green ) && (red <= blue) ? red :
          (blue <= green ) ? blue : green;
  
//    if max <> 0 then
//	s := (max-min)/max
//    else s := 0
  dltvl = maxv - minvl;
  sat = (maxv == 0.0) ? 0.0 : dltvl/maxv;
//    if s = 0 then
//	h := UNDEFINED
  hue6 = (sat == 0.0) ? 0.0 : (
//    else
//    	begin
//    	   delta := max-min
//	   if r = max then
//	      h := (g-b)/delta
         (red  == maxv) ? 60.0 * ((green - blue) / dltvl) : (
//	   else if g = max then
//	      h := 2 + (b-r)/delta
         (green  == maxv) ? 60.0 * (2.0 + ((blue - red) / dltvl)) : (
//	   else if b = max then
//	      h := 4 + (r-g)/delta
                             60.0 * (4.0 + ((red - green) / dltvl)) )));
//    h := h*60
//    if h < 0 then
//	h := h + 360
  hue = (sat == 0.0) ? -1.0 : ((hue6 < 0.0) ? hue6 + 360. : hue6);
}
===== Aplicar os limiares definidos de lâmina de água através do LEGAL =====
==== Programa Legal para Aplicar os Limiares ====
{
MNT hue, maxv ("CAT_MNT");
Tematico slc ("Aguas");
 hue = Recupere( Nome = "H_435" );
 maxv = Recupere( Nome = "V_435" );
 slc =Novo(Nome = "HV_35_95_03_07", ResX = 5, ResY = 5, Escala = 10000);
 slc =  Atribua ( CategoriaFim = "Aguas" ) 
	{
	 "Rios" : ( hue > 35 && hue < 95 ) &&
                    ( maxv > 0.03 && maxv < 0.07 ) 
	};
}