Revisão/Padronização PRODES 1997-2003 Marisa da Motta Dalton Valeriano INPE – DPI/DSR Motivação: Recuperar Informação 223/62-2000 2 223/62-2001 Motivação: Padronizar Legendas 3 LEGAL Linguagem Espacial de Geo-Processamento Algébrico Ferramenta para modelagem espacial no ambiente SPRING Implementada com base na categorização de dados segundo o Modelo de Dados SPRING Dados Espaciais – associados aos tipos: 4 Temático Numérico Imagem Cadastral/Objetos Rede/Objetos Álgebra de Mapas x Álgebra Matemática Constantes e Variáveis Mapas Temáticos Grades Numéricas Imagens de Satélite Mapas Cadastrais Operações e Funções Locais (pixel – valor) Vizinhança (media/maioria...) Zonais (estatísticas – áreas extensas) Comparação e Lógicos Expressões Similares 5 Constantes e Variáveis Representam Números inteiro real float Operações e Funções Matemáticos +,-,*,/, sen,tan... Comparação <, >,<=, >=, ==, != Lógicos &&,||, !, ~ Expressões Algébricas Matemáticas Classes da Categoria “nuvens” 2003 nv_01 nuvem2003 (observada em 2003) nv_02 nuvem2003_nv2002 nv_03 nuvem2003_nv2002_nv2001 nv_04 nuvem2003_nv2002_nv2001_nv2000 nv_05 Não ocorre porque 99/98 não foi processado nv_06 nuvem2003_nv2002_nv2001_nv2000_(nv99;98) nv_07 nuvem2003_nv2002_nv2001_nv2000_(nv99;98)_nv1997 Mapa de cruzamento de nuvens de 1997-2003 6 Categoria: Cartatema_NOVO (2004) 7 floresta Classificacao/mapeamento nao_floresta Classificacao/mapeamento nao_floresta2 Classificacao/mapeamento hidrografia Classificacao/mapeamento nuvem Classificacao/mapeamento problema Via legal desmatamento_total Via legal desmatamento Classificacao/Mapeamento dsf_nv_01 Via legal –dsf sobre nuvens por 1 ano (nuvens ano anterior) dsf_nv_02 Via legal –dsf sobre nuvens por 2 anos (nuvens ano anterior) dsf_nv_03 Via legal –dsf sobre nuvens por 3 anos (nuvens ano anterior dsf_nv_04 Via legal –dsf sobre nuvens por 4 anos (nuvens ano anterior) dsf_nv_05 Via legal –dsf sobre nuvens por 5 anos (nuvens ano anterior) dsf_nv_06 Via legal –dsf sobre nuvens por 6 anos (nuvens ano anterior) dsf_nv_07 Via legal –dsf sobre nuvens por 7 anos (nuvens ano anterior) Categorias: extensão_NOVO Floresta_total Total observado nao_floresta_total Total observado nao_floresta2_total Total observado Hidrografia_total Total observado Area_nao_sensoriada Total observado desmatamento_total Total acumulado até o ano Hidrografia Nao_floresta Máscara Mascara a imagem do ano seguinte Desmatamento Segmentação/Classificação 8 Fase de Recuperação 1997-2003 1. Remapea para o conjunto de classes definidas Legal comando Atribua 2. Recupera Hidrografia/Não-Floresta/Desmatamento do ano anterior Legal cruza 2 mapas – Atribua 3. Diferenças evidenciadas – auditor verifica/edita Legal (se expressão true) ? expressao1) : (expressao2) sim 4. 9 não Geração: Cartatema/nuvens/extensão/mascara Legais padronizados executados na sequência Sequencia de PI´s: Recuperação 10 Classif1997 Classif2000 Classif2001 – ? Classif_2001_Recuperado Diferença – evidenciada p/ auditor Classif2002 - ? Classif_2002_recuperado Diferença – evidenciada p/ auditor 1997 11 2000 12 2001 13 2001_recuperado 14 Diferença_2001 15 2002 16 2002_recuperado 17 Diferença_2002 18 Metodologia PRODES 19 Geo-referenciamento Processamento de Imagens contraste, Modelo Linear de Mistura Espectral, Segmentação e Classificação Mapeamento foto-interprete associa classificação às classes temáticas – edição Cruzamento com ano anterior processo de modelagem baseado em Álgebra de Mapas Regras de cruzamento são definidas transformadas em programas LEGAL PRODES - Regras de Cruzamento Resultado do cruzamento do PI classif_final2004 com extensão_2003 e nuvens2003 extensão_2003 floresta_tot desmat-total Area_não_ Hidrografia_total Não_floresta Sensoriada _total Nãofloresta2_total classif_final2004 desmatamento A E D (dsf_...) * E E E desmatamento_total - - - - - - floresta E E A E E E não_floresta E E (Problema) E E E não_floresta2 A E A E E E hidrografia A A A E A A nuvem A E D (nv_...)** E E E Distribui desmatamento sobre nuvens 2003 e acumula nuvem sobre nuvens2003 – gerando nuvens2004 PI= nuvens2003 nv_01 nv_02 nv_03 nv_04 nv_05 nv_06 desmatamento * dsf_nv_01 dsf_nv_02 dsf_nv_03 dsf_nv_04 dsf_nv_05 dsf_nv_06 nv_02 nv_03 nv_04 nv_05 nv_06 nv_07 nuvem ** (2004) nv_01 A – aceita E – extensão_anterior 20 D - Distribui Classif_final2004 21 2004 x Extensao2003 x Nuvens2003 22 Extensao2003 23 Nuvens2003 24 Nuvens2003 25 Nuvens2003 – simuladas 26 Classif_final2004 (com desmat simulado) 27 Nuvens2003- acoplada ao classif_final2004 28 Classif_2004_FIM - pós cruzamento 29 Resumo... 1 Classificacao2004_final Classificacao2004_FIM Extensao_2004 3 Extensao_2003 Extensao_2003 nuvens2004 nuvens_2003 nuvens2003 2 MASCARA Dematamento_total Hidrografia_total Não_floresta_total 2005 30 4 Programas LEGAL -sequencia 1. 2. 3. 4. 31 CartatemaANO NuvensANO extensaoANO mascaraANO Legal 1_Cartatema2003 1/3 { Tematico classif,saida ("cartatema"); Tematico nuvens ("nuvens"); Tematico extn ("extensao"); Declaração classif = Recupere (Nome="classificacao_final2004"); nuvens = Recupere (Nome="nuvens2003"); extn = Recupere (Nome="extensao_2003"); saida = Novo (Nome = "classificacao_final2004_FIM", ResX = 60, ResY=60, Escala =120000); saida = Atribua (CategoriaFim ="cartatema") { "hidrografia" : (extn.Classe=="hidrografia_total") , Instanciacão Operações "hidrografia" : (classif.Classe=="hidrografia"), "nao_floresta" : (extn.Classe=="nao_floresta_total"), "nao_floresta2" : (extn.Classe=="nao_floresta2_total") , "nao_floresta2" : (classif.Classe=="nao_floresta2") && ((extn.Classe=="area_nao_sensoriada") || (extn.Classe=="floresta_total")), "desmatamento_total" : (extn.Classe=="desmatamento_total"), "problema": (classif.Classe=="nao_floresta") && (extn.Classe=="area_nao_sensoriada") , 32 Legal 1_Cartatema2004 – 2/3 "floresta" : ((extn.Classe=="floresta_total") || (extn.Classe=="area_nao_sensoriada")) && ((classif.Classe!="desmatamento") && ( classif.Classe!="nuvem")), "dsf_nv_07" : (classif.Classe=="desmatamento") && (nuvens.Classe=="nv_07") && (extn.Classe!="desmatamento_total"), "dsf_nv_06" : (classif.Classe=="desmatamento") && (nuvens.Classe=="nv_06") && (extn.Classe!="desmatamento_total"), "dsf_nv_05" : (classif.Classe=="desmatamento") && (nuvens.Classe=="nv_05") && (extn.Classe!="desmatamento_total"), "dsf_nv_04" : (classif.Classe=="desmatamento") && (nuvens.Classe=="nv_04") && (extn.Classe!="desmatamento_total"), "dsf_nv_03" : (classif.Classe=="desmatamento") && (nuvens.Classe=="nv_03") && (extn.Classe!="desmatamento_total"), "dsf_nv_02" : (classif.Classe=="desmatamento") && (nuvens.Classe=="nv_02") && (extn.Classe!="desmatamento_total"), 33 "dsf_nv_01" : (classif.Classe=="desmatamento") && (nuvens.Classe=="nv_01") && (extn.Classe!="desmatamento_total"), Legal 1_cartatema2004 – 3/3 "desmatamento" : (classif.Classe=="desmatamento") && (extn.Classe=="floresta_total"), "nuvem" : (classif.Classe=="nuvem") && ((extn.Classe=="floresta_total") || (extn.Classe=="area_nao_sensoriada")) }; } 34 Cruzamento de nuvens 2004 x 2003 2_NUVEM_2004.alg { Tematico nuvemAcum, saida("nuvens"); Tematico classif (“Cartatema_NOVO"); classif = Recupere (Nome="classificacao_final2004_FIM"); nuvemAcum = Recupere (Nome="nuvens2003"); saida = Novo (Nome = "nuvens2004", ResX = 60, ResY=60, Escala =120000); saida = Atribua (CategoriaFim ="nuvens") { 35 } "nv_08" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_07"), //04/03/02/01/00/(99/98)/97 "nv_07" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_06"), //04/03/02/01/00/(99/98) "nv_06" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_05"), //04/03/02/01/00/(99/??) "nv_05" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_04"), //04/03/02/01/00 "nv_04" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_03"), //04/03/02/01 "nv_03" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_02"), //04/03/02 “nv_02" : (classif.Classe =="nuvem") && (nuvemAcum.Classe==“nv_01"), //04/03 "nv_01" : (classif.Classe =="nuvem") }; //04 Em 2005: criar a classe nv_09 e inserir a linha em vermelho gera nuvens2005 { Tematico nuvemAcum, saida("nuvens"); Tematico classif (“Cartatema_NOVO"); classif = Recupere (Nome="classificacao_final2005_FIM"); nuvemAcum = Recupere (Nome="nuvens2004"); saida = Novo (Nome = "nuvens2005", ResX = 60, ResY=60, Escala =120000); saida = Atribua (CategoriaFim ="nuvens") { "nv_09" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_08"), 36 } //05/04/03/02/01/00/(99/98)/97 "nv_08" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_07"), //05/04/03/02/01/00/(99/98) "nv_07" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_06"), //05/04/03/02/01/00/(99/??) "nv_06" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_05"), //05/04/03/02/01/00 "nv_05" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_04"), //05/04/03/02/01 "nv_04" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_03"), //05/04/03/02 "nv_03" : (classif.Classe =="nuvem") && (nuvemAcum.Classe=="nv_02"), //05/04/03 “nv_02" : (classif.Classe =="nuvem") && (nuvemAcum.Classe==“nv_01"), //05/04 "nv_01" : (classif.Classe =="nuvem") }; //05 3_Padroniza-Extensao2004.alg { Tematico classif ("cartatema"); Tematico extensao, saida ("extensao"); Tematico nuvens ("nuvens"); classif = Recupere (Nome="classificacao_final2004_FIM"); nuvens = Recupere (Nome="nuvens2004"); extensao = Recupere (Nome="extensao_2003"); saida = Novo (Nome = "extensao_2004", ResX = 60, ResY=60, Escala = 120000); saida = Atribua (CategoriaFim ="extensao") { "area_nao_sensoriada" : (classif.Classe==“nuvem"), "desmatamento_total" : (classif.Classe=="desmatamento_total") || (extensao.Classe =="desmatamento_total") || (classif.Classe=="desmatamento") || (classif.Classe=="dsf_nv_01") || (classif.Classe=="dsf_nv_02") || (classif.Classe=="dsf_nv_05") || (classif.Classe=="dsf_nv_06"), "hidrografia_total" : (classif.Classe =="hidrografia") || (extensao.Classe=="hidrografia_total"), "nao_floresta2_total" : (classif.Classe =="nao_floresta2") || (extensao.Classe=="nao_floresta2_ total”); "nao_floresta_total" : (classif.Classe =="nao_floresta") || (extensao.Classe=="nao_floresta_total"), 37 "floresta_total" }; } : (classif.Classe =="floresta") || (extensao.Classe=="floresta_total") 4_Criar_Mascara2004.alg { Tematico extn ( "extensao" ); Tematico saiMasc ( "extensao" ); extn = Recupere ( Nome = "extensao_2004"); saiMasc = Novo (Nome = "mascara_2004", ResX = 60, ResY=60, Escala = 120000); saiMasc = Atribua ( CategoriaFim = "extensao" ) { "mascara" : (extn.Classe == "nao_floresta_total") || (extn.Classe == "nao_floresta2_total") || (extn.Classe == "desmatamento_total") || (extn.Classe == "hidrografia_total") }; } 38 Exemplo de Scripts em LEGAL { Tematico classif, RIOS, differ ("Cartatema_NOVO"); classif = Recupere (Nome = "classif_final2000"); RIOS = Recupere (Nome = "classif_final2000_Rios"); differ = Novo (Nome = "diff_classif2000_Rios", ResX = 60, ResY=60, Escala =120000); differ = RIOS == classif ? differ: RIOS; } diferenca.alg { Tematico classif, RIOS, differ (“$0"); classif = Recupere (Nome = “$1"); RIOS = Recupere (Nome = “$2"); differ = Novo (Nome = “$3“, ResX = 60, ResY=60, Escala =120000); differ = RIOS == classif ? differ: RIOS; } 39 diferenca_nam.alg Cartatema_NOVO Classif_final2000 Classif_final2000_Rios diff_classif2000_Rios $0 $1 $2 $3 Conclusões Vantagens padronização/roteiro Diminui o número de classes criadas 40 Nome do mapa carrega o ANO em estudo. Ex: classificacao_final2004, nuvens2003 Nome de classes/categorias mais genéricos Modelo de Dados do SPRING Programas linguagem Legal – documentação da metodologia - cruzamento Resultados da Revisão/Padronização Cenas usadas em 2004 – foram revisadas 118 cenas x (1997,2000,2001,2002,2003) Classes de Desmatamento/Hidrografia/Não-Floresta recuperadas Metodologia garante que o Desmatamento é computado uma única vez 2004 – usou os dados com o mesmo procedimento Tabelas com cálculo de área geradas entrada para o cálculo das Taxas de Desmatamento 2004 41 ? Depois 42