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

2018-09-16 Por tôpico Paulo Carvalho
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.  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 
> *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.carva...@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. 
> 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 
> 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 

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

2018-09-16 Por tôpico Sérgio V .
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 
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 
mailto:paulo.r.m.carva...@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. 
mailto:svo...@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 
mailto:paulo.r.m.carva...@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 

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

2018-09-16 Por tôpico Paulo Carvalho
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.carva...@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. 
> 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 
>> 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 

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

2018-09-16 Por tôpico Paulo Carvalho
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.  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 
> 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 

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

2018-09-16 Por tôpico Sérgio V .
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 
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. 
mailto:svo...@hotmail.com>> escreveu:
Valeu, vou pesquisar.
Tamo chegando lá.

- - - - - - - - - - - - - - - -
Sérgio - http://www.openstreetmap.org/user/smaprs



De: Paulo Carvalho 
mailto:paulo.r.m.carva...@gmail.com>>
Enviado: sábado, 15 de setembro de 2018 

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

2018-09-16 Por tôpico Paulo Carvalho
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.  escreveu:

> Valeu, vou pesquisar.
>
> Tamo chegando lá.
>
>
> - - - - - - - - - - - - - - - -
>
> Sérgio - http://www.openstreetmap.org/user/smaprs
>
>
> --
> *De:* Paulo Carvalho 
> *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.
>
> Em sáb, 15 de set de 2018 às 19:51, Paulo Carvalho <
> paulo.r.m.carva...@gmail.com> escreveu:
>
> Oi, Sérgio, o caminho é esse mesmo.  Mas estás usando três variáveis: B11,
> NDVI e EVI2.  Em rigor seria necessário um crossplot 3D, mas aí a análise
> visual começa a complicar.  Nesse ponto eu usaria um dendrograma para
> analisar as classes.  O QGis tem dendrograma?
>
> Em sáb, 15 de set de 2018 às 12:29, Sérgio V. 
> escreveu:
>
> Ok, agora entendi esse negócio de manter as variáveis disponíveis sem
> fundir em uma. Valeu!
> -O NDVI distingue bem vegetal do que não é, e as classes de vegetal em
> diferentes graus de clorofila nas folhas, isto é crescimento, atividade
> vegetal. Mas nas matas densas tem mata nativa + mata plantada (pinus
> principalmente no RS). Mata