arcgis model builder orlando jalane ausvaldo mabjaia
TRANSCRIPT
ArcGIS Model Builder
Orlando JalaneAusvaldo Mabjaia
Programação• Importância da automatização dos processos em SIG• Breve histórico das linguagens script do ArcInfo / ArcView
– Arc Macro Language– Avenue
• Possibilidades de automatização de processos em outros SIGs– Spring (Legal)– ENVI (IDL)– Erdas (Model Maker)– Dinâmica EGO– Shell scripts / Python (Grass - interface por linha de comando)
• Possibilidades de automatização no ArcGIS– VB Scripts– Python– Processamento de lotes (ArcToolbox)– Model Builder
Programação• Exemplo de processamento em lotes
– Realizar mesma tarefa em difersos arquivos separadamente– Projetar vários arquivos de uma vez
• Construindo modelos de processamento no Model Builder– Criar um novo Toolbox e um novo modelo– Parâmetros, dados intermediários e manejados pelo ModelBuilder– Modelos dentro de modelos, dentro de modelos…– Exercícios práticos
• Modelo simples – raster calculator• Calibração radiométrica• Cálculo de NDVI a partir de imagens TM• Classes de declividade• Normalizando valores em imagens• Classificação não supervisionada em apenas um click• Removendo linhas falhadas em imagens HRC• Recorte de imagem a partir de diversos polígonos (ex. de iteração e uso de variáveis)
– Exemplos• Ponto de sela• Topo de morro• USLE
Importância da automação dos processos SIG
• Rotinas de processamento em SIG– Vários passos– Sequência correta
• Delimitação de bacias• Zoneamentos (áreas aptas, mapeamento de habitats)• Uso do solo em APP• USLE
• Possibilidade de salvar sequência de operações– Utilizar mais tarde, realizar ajustes
• Compartilhar
Importância da automação dos processos SIG
• Linguagens Script• Programação que permite o controle de uma aplicação• Diversas aplicações, não só em SIG
• Para SIG existem diversas opções de linguagem script• Ferramentas gráficas para montagem de processos
• Model Builder: Montar um fluxograma, encadeando os processos, gerando uma nova ferramenta no ArcToolbox
Breve histórico das linguagens script do ArcInfo / ArcView
• Arc Macro Language (AML)– Desenvolvida pela ESRI (1986)– Específica para ArcInfo GIS– Permitia criação de menus, uso de variáveis,
execução de comandos etc…
Exemplo de AML/* script para segmentar processamento do DEM/* colocando margem de 10 km/* daniel 20 junho 2008&do i = 1 &to 3
&do j = 1 &to 3&describe srtm_30i/* setmask dem_sp_poly&sv y_range = [calc ( ( %grd$ymax% - %grd$ymin% ) / 3 )]&sv x_range = [calc ( ( %grd$xmax% - %grd$xmin% ) / 3 )]/* quanto de overlap entre os blocos?/* FUNCIONA P/ POLICONICA!! EM METROS!!!/* NÃO APLICAR EM PROJ GEOGRÁFICA&sv overlap = 10000&type Processando bloco %i% %j%setwindow [calc %grd$xmin% + ( %i% - 1 ) * %x_range% - %overlap% ] ~ [calc %grd$ymin% + ( %j% - 1 ) * %y_range% - %overlap% ] ~ [calc %grd$xmin% + %i% * %x_range% + %overlap% ] ~ [calc %grd$ymin% + %j% * %y_range% + %overlap% ]
/* rodando rotina para topos de morro/* deve-se antes acertar os nomes dos grids/* e ao final renomear as saídas!
dem_bloco = srtm_30i&type Bloco %i% %j% recortado. Definindo morros...&type Va tomar um cafe...&r topo_daniel
/* renomeando arquivos de saída e limpando intermediáriokill dem_bloco allrename terco_tm_pt tm_pt_%i%_%j%rename terc_msk terc_msk_%i%_%j%rename basin_inv basin_inv_%i%_%j%
/* voltando ao gridgrid
&end&end
Verde: VariáveisAzul: comentáriosVermelho: comandos AMLPreto: comandos Arc
Chamando um outro AML
Exemplo de AML/* script para calcular mapas necessários aos topos de morro/* deve ser rodado dentro do grid/* daniel - 20 junho 2008/* adaptado do script de Marcos Hott
/* troca dos nomes dos arquivos deve ser feita antes de entrar neste aml/* dem deve chamar dem_bloco/* NÃO ESQUECER DE RENOMEAR SAÍDA
&severity &error &ignore
/* w C:\comum\fill_14/* GRID
setwindow dem_blocosetmask dem_blocosetcell dem_bloco
&type Invertendo e gerando direcao de fluxomde_inv = dem_bloco * -1buildvat mde_inv
flow_inv = flowdirection(mde_inv)buildvat flow_inv
&type Identificando cumessink_mask = sink(flow_inv)buildvat sink_masksetmask sink_maskcume = dem_bloco
&type Delimitando morros por baciassetmask mde_inv
basin_inv = basin(flow_inv)buildvat basin_inv
&type Obtendo altitude máxima de cada morrocume_max = zonalmax (basin_inv, cume, data)buildvat cume_max
&type Passando valor de altitude para os cumessetmask cumecume_mde = con (cume == cume_max, cume, setnull(cume))buildvat cume_mde
&type Obtendo altitude mínima dos morrossetmask mde_inv
base_mde = zonalmin (basin_inv, dem_bloco, data)buildvat base_mde
&type Calculando declividade e obtendo declividade máxima dos morrosdecl_mde = slope (dem_bloco, percentrise)buildvat decl_mde
decmax_mde = zonalmax (basin_inv, decl_mde, data)buildvat decmax_mde
&type Selecionando morros/montanhas que se enquadram na legislaçãosetmask cume_mde
terco_tm = con((((cume_mde - base_mde) >= 50) & ((cume_mde - base_mde) <= 300) & (decmax_mde > 30)) | ((cume_mde - base_mde) > 300), (cume_mde - ((cume_mde - base_mde) / 3)), setnull(cume_mde))
setmask terco_tmterco_tm_pt = gridpoint (terco_tm, cota)
&type Encontrando cumes próximos (500 m)qbuffer terco_tm_pt terc_msk # # 249.5 0.00000001 point round full
/* infelizmente, daqui pra frente tem que ser feito no ArcMAP, na mão/* removendo arquivos temporários desnecessárioskill mde_inv allkill flow_inv allkill sink_mask allkill cume all
kill cume_max allkill cume_mde allkill base_mde allkill decl_mde allkill decmax_mde allkill terco_tm
/* NÃO ESQUECER DE RENOMEAR SAÍDA!!!!/* e voltar ao grid após renomear
Breve histórico das linguagens script do ArcInfo / ArcView
• Avenue– Linguagem de programação, orientada a objeto,
específica para ArcView– Permite desenvolver novas aplicações em ArcView– Botões, views, tabelas etc…– Muitas das ferramentas no ArcView são Avenue
Scripts, o que possibilita ao usuário realizar alterações de interesse
Exemplo de Avenue'‘'' Example of how to handle ArcView coverages with
'' multiple attribute records per feature. '''' GeoSnap Software - www.GeoSnap.com'' '' Notes: "bchres - (Many)" VTab '''' "Parlabel" contains the parameter(chemical) name code'' "Parval" contains the detected amount'' "Units" contains the units of measure''''
'--- get the theme that contains the sample locations (points) ---'
aView = av.GetProject.FindDoc("View1")aTheme = aView.FindTheme("bchldi")
'--- make a list to hold the query strings ---'aListOfQueries = List.Make
'--- make the query string (1) ---''--- Lead (PB) >= 200 Mg/Kg ---'
aQuery = "([ParLabel] = " + "PB".Quote + ")"aQuery = aQuery + " and " + "([Units].Trim = "+ "MG/KG".Quote + ")"aQuery = aQuery + " and " + "([ParVal].AsNumber >= 200)"
aListOfQueries.Add( aQuery )
( ... )
Permitia desenvolver scripts, programas…
Trocar aplicativos
Muitos disponíveis na pág. da ESRI
Extensões do ArcView, desenvolvidas pela comunidade SIG
http://arcscripts.esri.com/Contém 1984 scripts (18/08/2011)
http://www.geosnap.com/
Avenue
http://arcscripts.esri.com/(18/08/2011)
Possibilidades de automatização de processos em outros SIGs
• Criar fluxos de processamento, salvar e compartilhar não é excusividade da ESRI– Spring– ENVI– ERDAS– Dinamica EGO– Outros
Spring• LEGAL: Linguagem Espacial para Geoprocessamento
Algébrico{
// Parte 1- Declaracao
// Definição de VariaveisTematico solo_CE ("Solos");Tabela tab_peso (Ponderacao);Numerico solo_peso_CE ("SoloPond");// Definicao da Tabela de Pesostab_peso = Novo (CategoriaIni = "Solos", CategoriaFim = "SoloPond", Le : 0.60, Li : 0.2, Ls : 0.35, Aq : 0.1);// Parte 2 - Instanciacao// Recuperacao do mapa de solossolo_CE = Recupere (Nome = "Solo_CE");// Criacao do novo mapa de solos ponderado
solo_peso_CE = Novo (Nome = "solo_p", ResX = 30, ResY = 30, Escala = 100000);
// Parte 3 - Operacao de Ponderacao
solo_pond_CE = Pondera (solo_CE, tab_peso);
}
http://www.dpi.inpe.br/spring/portugues/tutorial/legal.html
Spring• LEGAL: Linguagem Espacial para Geoprocessamento
Algébrico• Fatiamento• Reclassificação• Operações boleanas• Operações condicionais• Operações matemáticas e de vizinhança• Classificação fuzzy
http://www.dpi.inpe.br/spring/portugues/tutorial/legal.html
Spring
ENVI• Linguagem IDL (Interactive Data Language)
; Programa para executar o modelo linear de mistura no ENVI; Autor: Egidio Arai fev/2009pro mlm envi, /restore_base_save_files envi_batch_init, log_file='c:\user\bayma\novapasta\loglis.txt' nome_arq = ' ';; Abre arquivo de lista das imagens openr, 1, 'c:\user\bayma\novapasta\lista.txt' WHILE ~ EOF(1) DO BEGIN readf, 1, nome_arq
ENVI_OPEN_FILE, nome_arq, r_fid=fid1 if (fid1 eq -1) then return ENVI_FILE_QUERY, fid1, dims=dims, nb=nb pos = lindgen(nb) temp = strsplit(nome_arq,'.',/extract) arq_sai = temp[0]+'_mlm.tif' print, "lendo ", nome_arq
; Calcula mlm ; Read in the endmember text file. The first column are the wavelengths and the ; next 19 columns are the endmembers. We will use the 19 endmembers for unmixing. ; The endmember data must also be transposed in order to send in ; a (nb, # endmember) array. ; envi_read_cols, 'c:\user\bayma\novapasta\endmem.txt', endmem, skip=em_names, /read_skip endmem = transpose(endmem[1:*,*]) out_bname = [em_names[2:*], 'RMS Error'] ; ; Call the Unmixing processing routine. ; envi_doit,'unmix_doit', fid=fid1, pos=pos, dims=dims, $ endmem=endmem, OUT_BNAME=out_bname, $ /IN_MEMORY, r_fid=rfid, WEIGHT=10000 Código fornecido por Gustavo Bayma
ENVI• http://www.ittvis.com/language/en-US/UserCommunity/
CodeLibrary.aspx
Hyperion Spot Calibration
Deimos-1 Toolkit
MODIS Toolkit
ERDAS
• Model Maker
• Modelos prontos• Possibilita criar
modelos próprios e compartilhar
• Rodar modelos em um servidor
ERDASCalibração Radiométrica Reflectância no topo da atm
Modelos de Ricardo Andrade
Dinâmica EGO
• UFMG (Britaldo Soares et al.)• Simulação de mudanças de uso e cobertura da
terra
• Gerar fluxos de processamento…
http://www.csr.ufmg.br/dinamica/
Dinâmica EGO
Dinâmica EGO
Dinâmica EGO
Outras opções
• Python (módulos GDAL, GRASS)– Ex.: MODIS
• R (módulos Raster, Gdal)
• Shell script (GRASS)• TerraME (LUA +
TerraLIB)• ... http://grass.osgeo.org/wiki/WxGUI_Modeler
GRASS Graphical Modeler
http://grass.osgeo.org/wiki/WxGUI_Modeler
Possibilidades de automatização no ArcGIS
• VB, Python, C#, Java …• Arc Scripts
– http://arcscripts.esri.com/ - Não será mais atualizado
– ArcGIS Resource Center– Model and script tool gallery
Top 10 - Geral
Top 10 ArcGIS ArcInfo
http://resources.arcgis.com/gallery/file/geoprocessing?sortBy=ratingCount&sort=up&galleryVersion=10.0
Opções mais palatáveis…
• Dentro do ArcGIS• Processamento em lotes (batch)
– Funciona com qualquer ferramenta do ArcToolbox
• Model Builder
Opções mais palatáveis…
• Processamento em lotes (batch)
• Funciona com qualquer ferramenta do ArcToolbox
Project RasterRaster de entrada
Projeção do raster de entrada
Raster de saída
Projeção do raster de saída
Opções diversas (método, reamostragem, resolução)
Batch Project Raster
Dois arquivos: spot_vgt_a1.tif e spot_vgt_a2.tif em coordenadas geográficasPassar para UTM Zona 23S
Parâmetros da ferramenta
Adiciona / Remove linhasCada linha é um processamento
Model Builder
• Fluxograma, encadeando processos para gerar uma nova ferramenta no ArcToolbox
Model Builder
• Modelos devem ser salvos dentro de um ToolBox
• Criando um ToolBox para guardar os modelos– Arquivo .tbx
• Clicar com botão direito no ArcToolbox– Add toolbox– Botão New ToolBox
Criando um ToolBox
Selecionar toolbox criado; open
Criando um ToolBoxPode-se escrever informações na caixa de propriedades do ToolBox
-- metadados –
Botão direito; Save Settings; To Default: toolbox será aberta na próxima vez que abrir o Arc
Criando um novo modelo
• Botão direito; new; model– Tb pode criar grupos
(Toolset)
Model Properties
Nome interno do modelo
Nome fantasia
Descrição
Model PropertiesEnvironments: Permite definir o ambiente
Pasta TemporáriaResolução rasterMáscaraEtc…
Botões: Esquerda p/ direita1)Salvar2)Imprimir3)Recortar4)Copiar5)Colar6)Apagar7)Undo8)Redo9)Adicionar dados, ferramentas10)Auto-organizar11)Controles de zoom
Conectar objetosVerificarRodar
Primeiro modelo: Raster Calculator
Para a versao Arc 10Primeiro Modelo: Raster Calculator
• Adicionar ferramenta de Raster Calculator– Spatial Analyst / Map Algebra / Raster
Calculator
Primeiro Modelo: Raster Calculator
Imagens na área do modelo
Imagens adicionadas ao display
Expressão
Saída
Funções
Clicar OK e Rodar o modelo
Para a Versao Arc 9.3 e 9.xxx
• Adicionar ferramenta de Raster Calculator
–Spatial Analyst / Map Algebra /Single output Map Algebra
Adicionar ImagensTM banda 3; TM Banda 4
Fazer com que resultado seja adicionado ao display (botão direito / add to display)
Duplo click no Single output Map Algebra
(abrir opções)
Editar os nomes das variaveis
• Faca click o mouse a direita.
Como definir as variaveis
Duplo click no single output Algebra
Fazer os dados aparecer no operador
Desenho da parte Matematica
Primeiro Modelo: Raster Calculator
Somente valores -1; 0 e 1
Importante: Diferença entre valores inteiros e reais!!
Expressão deveria ser:
Float("%Banda 4%" - "%Banda 3%") / ("%Banda 4%" + "%Banda 3%")
Primeiro Modelo: Raster Calculator
Primeiro Modelo: Raster CalculatorBotão direito Diversas opções
1)Renomear objeto
2)Definir parâmetros do modelo
3)Dados intermediários (managed)
Modelos dentro de modelos, dentro de modelos, dentro de mo…
Calibração Radiométrica
Variável Double
Variável Double
Raster layer
Adicionar uma variável:
Botão direito / Create variable
Calibração Radiométrica: dentro do Raster Calculator
Deixar vazio para não preencher automaticamente
Este erro aparece pq parâmetros não foram definidos
BAND1_NAME = LANDSAT_5_TM_20040605_226_073_L2_BAND1;BAND1_WAVELENGTHS = 0.45,0.52;BAND1_RADIOMETRIC_GAINS/BIAS = 0.762824,-1.52;BAND2_NAME = LANDSAT_5_TM_20040605_226_073_L2_BAND2;BAND2_WAVELENGTHS = 0.52,0.6;BAND2_RADIOMETRIC_GAINS/BIAS = 1.44251,-2.84;BAND3_NAME = LANDSAT_5_TM_20040605_226_073_L2_BAND3;BAND3_WAVELENGTHS = 0.63,0.69;BAND3_RADIOMETRIC_GAINS/BIAS = 1.03988,-1.17;BAND4_NAME = LANDSAT_5_TM_20040605_226_073_L2_BAND4;BAND4_WAVELENGTHS = 0.76,0.9;BAND4_RADIOMETRIC_GAINS/BIAS = 0.872588,-1.51;BAND5_NAME = LANDSAT_5_TM_20040605_226_073_L2_BAND5;BAND5_WAVELENGTHS = 1.55,1.75;BAND5_RADIOMETRIC_GAINS/BIAS = 0.119882,-0.37;BAND6_NAME = LANDSAT_5_TM_20040605_226_073_L2_BAND6;BAND6_WAVELENGTHS = 10.4,12.5;BAND6_RADIOMETRIC_GAINS/BIAS = 0.0551576,1.2378;BAND7_NAME = LANDSAT_5_TM_20040605_226_073_L2_BAND7;BAND7_WAVELENGTHS = 2.08,2.35;BAND7_RADIOMETRIC_GAINS/BIAS = 0.0652941,-0.15;END_OF_HDR;
Parâmetros para TM
Modelo dentro de modelo, dentro de modelo, dentro de mo…
Classes de Declividade
• Dividir um DEM nas classes de declividade
1) Calcular declividade– Função Slope
2) Classificar– Função Reclassify
Declividade(º)
Declividade(%) Nome da Classe
0 - 1,72 0 – 3 % Plano1,72 – 4,57 3 – 8 % Suave ondulado4,57 - 11,31 8 – 20 % Ondulado11,31 -24,23 20 - 45 % Forte ondulado24,23 -36,87 45 – 75 % Montanhoso
> 36,87 > 75 % Escarpado
Classes de declividade
Classificação não supervisionada em um click
• Classificação no Arc é um processo com dois passos1. Gerar arquivo de assinatura2. Max Likelihood
• Arc 10 já tem script para fazer não supervisionada em apenas um passo.– Script python
Classific não supervisionada• Adicionar imagens spotvgt_amp_bandas 1 a 4• Adicionar ferramenta IsoCluster
– Spatial Analyst / Multivatiate• Adicionar ferramenta Maximum likelihood
– Spatial Analyst / Multivatiate• Ligar imagens nas ferramentas
– IMPORTANTE: Respeitar sequência!• Definir 10 classes no IsoCluster• Ligar saida do Isocluster (arq. de assinatura) no Max.
Lik.• Adicionar Output raster ao display• Rodar
Normalizando valores em imagens
• Diferentes imagens com a mesma aplitude nos valores (0 – 1000)
• PQ?– Isocluster: Funciona melhor se imagens apresentarem
valores na mesma faixa
Manual ArcGIS 10
Modelo para normalizar imagem
• Funções– 2x Get Raster Properties (Data management / Raster /
Raster Properties)– Raster Calculator
• Um raster properties p/ pegar valor máx e outro para mínimo
• Raster Calculator– ("%Entrada%" - %Minimo%) / (%Maximo% - %Minimo%)
* 1000
• Deixar saida com um nome de arquivo…
Usando um modelo dentro do outro
• Copiar modelo de classificação para um outro nome (botão direito – copy – paste e renomear)
• No modelo novo, remover bandas de entrada• Arrastar modelo de normalização de dados
para o modelo novo• TROCAR O NOME DO RASTER DE SAÍDA DO
MODELO DE NORMALIZAÇÃO!!!– Faz isso 4 x (4 bandas)
15m Spot VGT
Não norm. Normalizada
Removendo falhas em imagens HRC
• Imagens de alta resolução do CBERS-2b– 2.5 m
• Linhas falhadas– Largura de poucos pixels
• Corrigir VISUALMENTE
Parte da imagem HRC 155_C 125_3 de 28/08/2008
Removendo falhas em imagens HRC
• Identificar locais da falha– Set Null: passar valores 0 para nulo
• Spatial analyst / conditional
• Gerar imagem “borrada”– Focal Statistics: Média de 3x3, ignorando nulos
• Spatial Analyst / Neighborhood
• Juntar imagens aplicando condição– Con(original = 0, borrada, original)
• Spatial analyst / conditional
Recorte de imagens em polígonos
• Exemplo de iteração– Repetir uma operação um determinado número
de vezes• ArcGIS 9.2: algumas maneiras de iteração• ArcGIS 10: maior suporte para iteração
• Recortar imagem em diversos polígonos, a partir de um shape
Iteradores no Model Builder
Recorte de imagens em polígonos
• Dados: Composta spot vgt; municipios_spotvgt.shp
• Iterate Field Values– Botão direito / iterators
• Select– Analysis tools / extract
• Extract by mask– Spatial Analyst / extraction
Recorte de imagens por polígonos
• Conectar shape ao iterador– Iterar pelo geocodigo– Renomear saida do iterador para GeoC
• Conectar shape ao select– No query colocar “Geocodigo”= ‘%GeoC%’– Fazer saida managed
• Conectar saida do select e raster no extract by mask– Nome da saida: spotvgt_%GeoC%.tif
Cuidado
• Iterações podem demorar MUITO• Shape de municípios tem 235 polígonos!• No meu computador demorou 20 minutos!
• Usar arquivo 10munic_spotvgt.shp– Só 10 municípios
Problemas nas bordas dos polígonos. O que fazer?
Topo de Morro
Ponto de Sela
http://stanford.edu/~woodsp/natcap/invest/docs/21/index.html
Finalmente…
• Limites?– Limites de processamento (memória, disco)– Tempo
• Referência
–Manual do ArcGIS
Obrigado