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

Sérgio V. svolk2 em hotmail.com
Domingo Setembro 16 21:59:40 UTC 2018


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<mailto: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<mailto: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<mailto: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><mailto: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><mailto: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<mailto: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/1fcca881/attachment-0001.html>


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