[Talk-br] Vetorização de matas no OSM com Sentinel-2

Paulo Carvalho paulo.r.m.carvalho em gmail.com
Domingo Setembro 16 22:07:58 UTC 2018


O ideal que houvesse um comando MDS implementado no QGis.  Se não houver,
provavelmente será necessário implementá-lo como um script Python.

Mas esses métodos são bem eficazes e universais.  Vale a pena o
investimento.  Uma vez dominado, pode-se utilizá-lo para classificar um
número irrestrito de classes e em qualquer lugar.  Eu detalhei o MDS porque
ele permite a classificação manual relativamente simples usando apenas um
crossplot ao reduzir a dimensão para 2 com pouca perda de informação.  Há
outros classificadores a experimentar.

Em dom, 16 de set de 2018 às 19:00, Sérgio V. <svolk2 em hotmail.com> escreveu:

> Ok, vou 1o. listar e traduzir os passos do método pra ver como fazer no
> QGIS como vc indicou. Vou procurar focar em 2 variáveis, B11 x NDVI (ou B11
> e EVI2), acho que simplifica e basta por EVI e NDVI serem muito parecidos.
>
> Esta semana vai me apertar o trabalho, então acho que só vou poder
> executar na semana que vem. Vou demorar um pouco pra trazer mais resultados.
>
> Obrigado por enquanto, ótimas orientações suas! Acho que podemos chegar a
> um método viável pra aplicar em matas em qualquer lugar, potencializar o
> mapeamento de matas no Brasil todo.
>
>
> - - - - - - - - - - - - - - - -
> Sérgio - http://www.openstreetmap.org/user/smaprs
> ------------------------------
> *De:* Paulo Carvalho <paulo.r.m.carvalho em gmail.com>
> *Enviado:* domingo, 16 de setembro de 2018 18:39:30
> *Para:* OSM talk-br
> *Assunto:* Re: [Talk-br] Vetorização de matas no OSM com Sentinel-2
>
> Oi, tinha um erro na minha descrição do procedimento MDS:
>
> 3) Computar a matriz B, cujos elementos bij = *-*1/2 * ( dij^2 - di.^2 -
> d.j^2 + d..^2 ), onde (esqueci do sinal de menos antes do 1/2)
> bij = elemento da matriz B
> dij = elemento da matriz de dessemelhanças
> di.^2 = média dos elementos do i-ésimo vetor-linha (linha de uma matriz)
> da matriz de dessemelhanças multiplicada por ela mesma (D^2 = D*D).
> d.j^2 = média dos elementos do j-ésimo vetor-coluna (coluna de uma matriz)
> da matriz de dessemelhanças multiplicada por ela mesma
> d..^2 = média de todos os elementos da matriz de dessemelhanças
> multiplicada por ela mesma
>
> Caso queiras conferir, ver toda a teoria de MDS aqui:
> http://polisci.msu.edu/jacoby/research/scaling/intromds/Jacoby-Ciuk,%20MDS,%20V2,%2010-29-14.pdf
>
> Em dom, 16 de set de 2018 às 17:53, Paulo Carvalho <
> paulo.r.m.carvalho em gmail.com> escreveu:
>
> Oi, o método MDS pode ser implementado como um script em Python (acedito
> que o QGis tenha um console Python) caso o QGis não tenha MDS diretamente.
> Se tiveres o SciPy e o NumPy disponíveis no console do QGis, é viável fazer
> no Python (teste com os comandos import scipy e import numpy).  Quanto aos
> múltiplos crossplots com os possíveis pares de variáveis, muita gente faz
> isso mesmo, mas não é a mesma coisa do que uma análise conjunta.
>
> Em dom, 16 de set de 2018 às 14:45, Sérgio V. <svolk2 em hotmail.com>
> escreveu:
>
> Ok, vou testar.
> A curva do arco de parábola ali é o crossplot de EVI2 x NDVI.
> Na verdade fiz 4 crossplot
> B11xNDVI, B11xEVI2; EVI2xNDVI,
> e o 3V B11xNDVIxEVI2. B11 no eixo x.
> O que exibe ali na figura é estes 2 últimos.
> Só coloquei B11 com NDVI e EVI2 pra ver qual melhor, sendo base de
> informação já a B11. Pois NDVI e EVI2 tendo basicamente o mesmo propósito e
> mostrando histograma semelhante, tendo o mesmo comportamento para os mesmos
> objetos na imagem, pensei que basta uma.
> Assim penso usar EVI2 com B11, só estas 2 basicamente. O B11 quase já
> classifica tudo que eu precisava.
> Vou ver como testar o que você indicou agora, obrigado!
>
> - - - - - - - - - - - - - - - -
> Sérgio - http://www.openstreetmap.org/user/smaprs
> ________________________________
> De: Paulo Carvalho <paulo.r.m.carvalho em gmail.com>
> Enviado: domingo, 16 de setembro de 2018 11:13:03
> Para: OSM talk-br
> Assunto: Re: [Talk-br] Vetorização de matas no OSM com Sentinel-2
>
> Sérgio, vi um arco de parábola no teu último gráfico.  Acredito que tenhas
> feito isso para poder usar três variáveis (combinando duas) no crossplot
> 2D.  Para combinar múltiplas variáveis em duas coordenadas para ver um
> crossplot, use MDS: https://en.wikipedia.org/wiki/Multidimensional_scaling
>
> Acredito que com alguns passos de cálculo seja possível criar as
> coordenadas MDS, que nada mais são de que outras variáveis, e plotá-las no
> crossplot 2D para ver os grupos.
>
> Resumindo o método:
> 1) Calcular as dessemelhanças entre as amostras por uma fórmula de
> distância qualquer, por exemplo, a distância Euclideana:
> https://wikimedia.org/api/rest_v1/media/math/render/svg/c015e86e5cd0ed7a45f5c4c5107647b4d4970b14
> onde x e y são duas variáveis qualquer (ex.: B11 e NDVI), mas poderia ser
> três, quatro, etc. nessa soma de quadrados dentro da raíz;  i e j são os
> índices das amostras.  No exemplo, dij é a distância entre a i-ésima e a
> j-ésima amostra.  Tu podes usar outras fórmulas de distância, por exemplo,
> a distância de Manhattan.
>
> 2) Depois de calcular todas as dessemelhanças entre todas as amostras, os
> resultados são colocados em uma matriz:
> https://wikimedia.org/api/rest_v1/media/math/render/svg/ac5a364c06c41eede6a8689a417c79b0b984046d
> Se houver 1.000 amostras, a matriz terá 1.000.000 de elementos.  A matriz
> de dessemelhança é como se fosse aquelas tabelas de distâncias entre
> cidades que havia nos mapas rodoviários de antigamente.
>
> Seguindo a analogia das cidades, temos suas distâncias, mas não suas
> posições (x, y).  O problema consiste em encontrar a posição relativa (x,
> y)i de uma cidade i tal que, IDEALMENTE, a separação até uma cidade j seja
> igual à distância entre elas computadas no passo 2).  Ou seja, que o
> comprimento do vetor ||(xi - xj), (yi - yj)|| seja igual a dij.  Isso
> acontece se o número de variáveis de entrada for dois.  Como teremos 3 ou
> mais, o que estamos tentando fazer na prática é planificar algo que tem 3
> ou mais dimensões, então o problema passa a ser de minimização porque as
> distâncias dij são calculadas em função das variáveis de entrada.  Assim o
> valor ||(xi - xj), (yi - yj)|| - dij deve ser o mínimo.
>
> 3) Computar a matriz B, cujos elementos bij = 1/2 * ( dij^2 - di.^2 -
> d.j^2 + d..^2 ), onde
> bij = elemento da matriz B
> dij = elemento da matriz de dessemelhanças
> di. = i-ésimo vetor-linha (linha de uma matriz) da matriz de dessemelhanças
> d.j = j-ésimo vetor-coluna (coluna de uma matriz) da matriz de
> dessemelhanças
> d.. = toda a matriz de dessemelhanças (notação com dois pontos)
> A notação de um vetor ou matriz "ao quadrado" (ex.: di.^2) quer dizer
> "pegue todos os elementos, eleve cada um ao quadrado e some tudo."
>
> 4) Decompor B em seus autovalores e autovetores (rever Álgebra Linear).
> Essa decomposição resulta em duas matrizes: D = matriz com os autovalores
> em sua diagonal principal (os outros elementos são zero).  V = matriz cujas
> colunas são os autovetores.
>
> 5) Para um crossplot 2D, pegue os dois maiores autovalores de D e monte
> D1.  Pegue os autovetores (colunas) de V correspondentes aos maiores
> autovalores e monte V1.  D1 será uma matriz 2 x 2 com os dois maiores
> autovalores e V1 terá uma linha para cada amostra (ex. 1000) e duas colunas.
>
> 6) Para cada elemento não zero de D1, inverta (se o elemento for 5, deve
> ser 1/5) e tire a raíz quadrada.
>
> 7) A solução X será o produto das matrizes V1 e D1 X = V1 * D1.  X terá o
> número de linhas igual ao de amostras (ex. 1000) e 2 colunas.  A primeira
> coluna será a coordenada x e a segunda, y.  Essas coordenadas são usadas no
> crossplot.
>
> Se quiseres um crossplot 3D, refaça os passos 5, 6 e 7, mas selecionado os
> três maiores autovalores e X terá três coordenadas (x, y, z).
>
> Só isso!
>
>
>
>
> Em sáb, 15 de set de 2018 às 20:12, Sérgio V. <svolk2 em hotmail.com<mailto:
> svolk2 em hotmail.com>> escreveu:
> Valeu, vou pesquisar.
> Tamo chegando lá.
>
> - - - - - - - - - - - - - - - -
> Sérgio - http://www.openstreetmap.org/user/smaprs
>
>
> ________________________________
> De: Paulo Carvalho <paulo.r.m.carvalho em gmail.com<mailto:
> paulo.r.m.carvalho em gmail.com>>
> Enviado: sábado, 15 de setembro de 2018 19:53
> Para: OSM talk-br
> Assunto: Re: [Talk-br] Vetorização de matas no OSM com Sentinel-2
>
> MDS (multi dimensional scaling) também ajuda na análise multidimensional.
> Veja se o QGis tem MDS.
> .org/listinfo/talk-br
>
> _______________________________________________
> Talk-br mailing list
> Talk-br em openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-br
>
> _______________________________________________
> Talk-br mailing list
> Talk-br em openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-br
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://lists.openstreetmap.org/pipermail/talk-br/attachments/20180916/c9442863/attachment.html>


Mais detalhes sobre a lista de discussão Talk-br