arcgis model builder orlando jalane ausvaldo mabjaia

Post on 07-Apr-2016

251 Views

Category:

Documents

12 Downloads

Preview:

Click to see full reader

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

top related