Como filtrar pontos GPS errados?

11

Eu tenho um banco de dados de pontos de GPS. Não há faixas, apenas pontos. Preciso calcular algum valor para cada 100 metros, mas às vezes o GPS deu coordenadas erradas que estão longe dos pontos reais do GPS e, em vez de calcular valores para um pequeno quadrado, preciso calculá-lo para uma área retangular realmente grande.

Qual é o melhor algoritmo para filtrar pontos GPS errados?

Fiz uma captura de tela para ajudar a entender:

! [http://content.screencast.com/users/smirnoffs/folders/Jing/media/94624331-db6a-4171-bed9-e2183f953a1d/gps_error.png]

smirnoffs
fonte
1
Eu usaria um pequeno múltiplo do quadro móvel (digamos 10 últimos pontos) da distância média entre os pontos como critério para detectar esses valores extremos.
Lynxlynxlynx
Você pode descrever seu método mais detalhadamente? Eu tenho um banco de dados de pontos, eles não são classificados de qualquer tipo. Portanto, a distância pode ser de 2 ou 500 metros. Mas alguns dos pontos estão muito distantes. Eu fiz uma imagem para ajudá-lo a compreender
smirnoffs
2
Entendo. Nesse caso, minha abordagem não é tão boa. Em vez disso, eu calcularia o ponto vizinho mais próximo de cada ponto e depois rasparia os valores extremos.
Lynxlynxlynx
2
A segunda abordagem sugerida pelo @lynx funcionaria bem com os dados da amostra, especialmente quando o método de detecção de outlier for bom. Veja as perguntas sobre discrepantes em nosso site de estatísticas para obter opções. Por exemplo, muitas abordagens criativas (e válidas) são sugeridas em stats.stackexchange.com/questions/213 .
whuber

Respostas:

3

Execute o I de Anselin Local Moran contra os pontos e jogue fora qualquer coisa com um z-score abaixo de -1,96. Esse é um método estatístico para localizar outliers espaciais. Você deve garantir que todos os pontos tenham um valor relacionado à sua posição espacial para fazer isso.

Mas, ao verificar as ferramentas na 10.1 após o comentário do whuber, percebo que, se você usa o ArcGIS 10.1, a ferramenta de análise de agrupamento está disponível, que é realmente o que você deseja fazer.

Eu acho que você gostaria de fazer uma análise de agrupamento com uma restrição espacial da Triangulação de Delaunay. O obstáculo aqui é que você precisa ter um número de grupos de particionamento igual ou maior que o número de grupos desconectados (se algum dos outliers forem vizinhos naturais um do outro). Caso contrário, os outliers sem vizinhos naturais não criarão nenhum grupo na análise de agrupamento.

Com base nisso, acho que a triangulação de Delauney pode ser a fonte de um algoritmo de filtro, mas ainda não tenho certeza.

Outra atualização: depois de cavar o Partition.py, o script que executa a ferramenta de análise de agrupamento, acho que é possível usar o algoritmo lá para grupos desconectados combinados com a parte NoNeighbors, embora esteja tendo problemas para cavar essa parte do roteiro.

blord-castillo
fonte
(-1) Isso garante que você jogue fora cerca de 1 em 40 pontos, não importa o quê. Não é aconselhável usar esse teste para detecção de outlier.
whuber
1
Isso não é verdade quando se testam outliers espaciais puros - se existirem outliers espaciais. Se os outliers espaciais não existirem, você terá esse problema, mas se eles existirem, apenas esses outliers deverão cair em um escore z tão baixo. Tudo depende da distribuição espacial dos pontos.
Blord-castillo
1
Quase: se os próprios outliers formarem um cluster, você poderá falhar em detectá-los completamente. (Considere uma situação em que as coordenadas nulas ou obviamente ruins são mapeadas automaticamente para (0,0).) Seu comentário mostra que encontrar discrepantes pode ser complicado e depende da natureza dos discrepantes: se pode haver um ou muitos; quão longe eles podem estar; se eles podem se agrupar; etc. Como princípio geral, as estatísticas que fazem suposições distributivas (como esse uso do I de Local Moran) não funcionam tão bem quanto as estatísticas robustas e não paramétricas.
whuber
2
Eu estava considerando um problema teórico específico, no qual você tem os pontos "bons" do GPS e um número igual de pontos "ruins" do GPS empilhados um sobre o outro em um canto distante da caixa delimitadora. Sem o conhecimento da área de interesse para os pontos "bons", acho que não é possível separar estatisticamente qual conjunto é "bom" e qual é "ruim". Isso pode ser um problema que requer designação manual de áreas de interesse.
Blord-castillo 7/08
2
Isso está correto: você descreveu uma distribuição multivariada bimodal. O que geralmente é feito nesses casos é a estimativa de um modelo de mistura ou a aplicação de um algoritmo de cluster. O resultado é separar os componentes da mistura / cluster, mas sem designá-los como "outliers": esse dever deve recair sobre o usuário.
whuber
3

Isso pode ajudar a obter uma lista dos outliers:

SELECT p1.point_id 
FROM p1 AS points, p2 AS points
WHERE p1.point_id <> p2.point_id AND
ST_Distance(p1.geom, p2.geom) > 10000

Aqui, point_id seria a chave primária na sua tabela de pontos. A função de distância encontrará pontos onde o mais próximo é maior que 10.000 metros. (Você pode, é claro, colocar qualquer valor apropriado)

Se o procedimento acima funcionar, mude para uma instrução DELETE, algo como:

DELETE FROM points WHERE point_id IN (
-- SELECT as above
SELECT ....
);
Micha
fonte
1
1. Os pontos não são classificados. 2. E se o erro for menor que 10.000 metros? Por exemplo 150 metros?
smirnoffs
1
Talvez eu não tenha entendido. Pela sua imagem, vejo que quase todos os pontos estão agrupados em uma área e um número muito pequeno está muito distante. Esse não é o problema? Se um ponto está a apenas 150 metros de distância de outro, como você sabe que é um erro externo?
Micha
1

Tentarei fornecer uma resposta mais prática para ajudá-lo a fazer o trabalho. (desculpas se você estiver procurando por uma discussão sobre algoritmos)

Cenário 1: você menciona 'pontos GPS'; portanto, se você tiver acesso aos pontos de referência GPS originais, o trabalho se tornará muito mais fácil. Você pode eliminar pontos com alto HDOP / VDOP ou número de satélites em exibição - o que causaria o erro originalmente. Uma ferramenta gratuita como o gpsbabel possui esses filtros embutidos. http://www.gpsbabel.org/htmldoc-development/Data_Filters.html

Cenário 2: Você simplesmente tem um conjunto de pontos. O problema passa a ser a detecção de outliers espaciais. Há muita pesquisa nessa área e vejo muitos artigos sobre esse assunto em uma pesquisa na web. Se você deseja limpar seus dados, pode usar o algoritmo v.outlier do GRASS, que deve funcionar no seu caso com base na captura de tela que você compartilhou. http://grass.osgeo.org/gdp/html_grass63/v.outlier.html

pensamentos espaciais
fonte
Obrigado por comentar. Infelizmente eu tenho apenas coordenadas. O GPS era apenas uma fonte de coordenadas e não tenho acesso às trilhas originais do GPS.
smirnoffs
-2

Eu acho que você tem dados indesejados. Realisticamente, se você se importa com o fato de alguns dados estarem errados e não pode identificar com segurança todos os pontos errados usando outro fator, terá alguns dados ruins em sua análise.

Se isso importa, provavelmente você deve jogar tudo, descobrir a causa raiz (por exemplo, os pontos ruins do GPS são de vários caminhos), abordar a causa raiz (por exemplo, adicionar uma antena de estrangulamento ou um tipo melhor de GPS ou qualquer outra solução) é) e refazendo a coleta de dados.

Se os dados incorretos não importarem, use-os e ignore os erros.

BradHards
fonte