Precisão de coordenadas QGIS

11

Em qual (décima) casa decimal dos valores das coordenadas o QGIS define que qualquer conjunto de pontos é duplicado?

Eu estava pensando que o QGIS lida com ~ 15 casas decimais; mas era a limitação apenas porque eu estava trabalhando principalmente nos Shapefiles.

insira a descrição da imagem aqui

No entanto, o limite não se aplica quando escolho outra fonte de dados, como uma camada temporariamente temporária.

insira a descrição da imagem aqui

Usando dados fictícios, como abaixo, fiz um teste rápido com duas ferramentas, para encontrar o menor valor possível para identificar diferenças de coordenadas:

  • Geoprocessamento QGIS: Delete duplicate geometries
  • MMQGIS plugin: Delete Duplicate Geometries

insira a descrição da imagem aqui

insira a descrição da imagem aqui

A saída de QGIS Delete duplicate geometriesé igual aos dados de entrada acima (todos os 20 registros foram preservados); portanto, o QGIS pensa que todos são distintos. Esse limite ultrapassa 1e-29 (ou 1e-30) visto neste pequeno teste?

Apenas como comparação, MMQGIS Delete Duplicate Geometriesproduzida abaixo. Parece que o MMQGIS define as casas decimais 16 ou 17 como o limite.

insira a descrição da imagem aqui


[Editar]

Receio não ter ficado claro qual era a parte central da minha pergunta. Meu objetivo é entender a relação entre os valores das coordenadas e as duplicatas / sobreposições, conforme indicado no primeiro parágrafo da minha pergunta. Esperamos que esse tipo de conhecimento possa nos ajudar a controlar facilmente os recursos sobrepostos, ajustando as expressões da calculadora de campo.

No entanto, o problema subjacente que eu estava tentando focar era que as casas decimais que o QGIS reconhece pontos (nós) como a sobreposição parece variar, dependendo da fonte de dados.

Se usarmos Shapefiles para nossa camada, o QGIS manipulará ~ 15 casas decimais e uma diferença menor (16 ou 17) não será reconhecida ... O MMQGIS também é afetado por essa limitação (aos meus olhos). Se criarmos uma camada temporariamente temporária ou camadas de banco de dados, essa limitação vai muito além do 30º ish? Essa mudança de comportamento me faz pensar.

Kazuhito
fonte
2
Com o ArcGis, ao criar uma classe de recurso em um banco de dados, você pode especificar que a diferença mínima entre duas coordenadas seja considerada diferente (o valor padrão parece ser 0,001 m para a coordenada projetada em metros e 0,000000008983153 graus para WGS84). Também estou interessado em saber quais são esses valores no qgis e se você pode modificá-los.
JR

Respostas:

2

A ferramenta QGIS Delete Duplicate Geometries (no Geoalgorithms, Vector General Tools do QGIS 2.18) é um script Python que opera nos objetos de geometria exportados / expostos pela camada Python do QGIS. E abaixo dessa camada está a camada GEOS.

O operador de igualdade de geometria da camada GEO aceita um parâmetro de tolerância (na unidade de distância do mapa) ao comparar duas geometrias. Infelizmente, esse parâmetro de tolerância não é exposto pela camada Python do QGIS - portanto, para Excluir geometrias duplicadas , duas geometrias são consideradas iguais se e somente se todos os seus valores XY forem totalmente iguais. Por exemplo, POINT (1.000000 1.000000) não é igual a POINT (1.00000001 1.00000001).

Ralph Tee
fonte
Obrigado por analisar o geoalgoritmo do QGIS! De acordo com suas descobertas, se as ferramentas do wrapper (como scripts Python) não tiverem acesso ao parâmetro tolerance, isso implica que a tolerância depende apenas do tipo de dados? (Em outras palavras, é que a razão pela qual parece que a tolerância é controlada pela fonte de dados que escolher?)
Kazuhito
Sim. Nesse momento, você precisa truncar ou arredondar os valores X e Y antes de fazer a detecção duplicada. Isso é direto para os POINTs (embora ainda envolva várias etapas de conversão para lá e para cá), mas as outras geometrias exigirão programação (substancial).
Ralph Tee
Entendo. Muito obrigado por mais esclarecimentos. É um pouco lamentável por enquanto, mas espero que as versões futuras do QGIS nos dê (quero dizer, não programadores) mais espaço para controlar.
Kazuhito
1

Uma leitura interessante sobre esse assunto é essa pergunta frequente: Medindo a precisão da latitude e longitude?

Não conheço as ferramentas projetadas para identificar duplicatas, mas, do ponto de vista computacional, é apenas uma questão de como os números são manipulados pela arquitetura de armazenamento das entidades e pelo software que as manipula. Dois números diferentes serão exibidos FLASEdesde que o idioma represente os números de uma maneira que faça alguma diferença se o teste for se eles não forem iguais. Em muitos casos, o interesse da duplicata é encontrar valores iguais, descobrir um tipo de erro de digitação durante a digitalização, e não a proximidade.

Em outros contextos, o interesse das duplicatas é identificar objetos suficientemente próximos e, em termos práticos, eles correspondem.

Supondo que o QGIS use o Python como linguagem principal, sua pergunta pode ser direcionada aos documentos do Python e você terá uma leitura interessante sobre como a aritmética da base 2 difere dos nossos livros elementares de matemática: Python: aritmética de ponto flutuante: problemas e limitações

Marco
fonte
Obrigado @Marco, mas o ponto que eu queria focar na minha pergunta era que a precisão (portanto, diretamente relacionada a problemas duplicados / sobrepostos) parece ser controlada por sua fonte de dados (shapefile ou db como spatialite, ...) Desculpe pode não ter sido suficientemente claro. Vou editar a pergunta para esclarecer.
21418 Kazuhito
0

Eu sou um agrimensor registrado em vários estados. O que você vê nas diferentes projeções são linhas / distâncias retas provenientes das grades Lambert ou Mercator. É como colocar um cone na Terra, então a medida que você está fazendo é colocada nas linhas de raio acima da curvatura da Terra. Mercator transversal é uma projeção cilíndrica para estados mais longos do leste oeste, como o Tennessee. Utilizando sistemas GPS de nível de pesquisa, frequentemente comparamos as informações com as projeções mundiais e até as projeções de estado, enquanto elas estavam nas antenas. todas as medições são baseadas nos parâmetros incorporados nos cálculos em cada ponto medido. O uso de equipamento GIS Grade que possui um parâmetro de submetro corresponde muito bem em trechos de uma ou duas milhas. Após cerca de 6 casas decimais nas medições angulares é o máximo que você pode esperar que a precisão seja. Não importa quantas vezes você gere um ponto no GPS com precisão de um metro, você nunca obterá um "Média" ou um "Modo" que corresponda às medições de alta precisão. Resumindo, quando estou trabalhando com informações de antenas ou satélite, não deixo um medidor ou mais me incomodar. Oh, existem cálculos esféricos para medições da soneca da terra usando ângulos teta que calculam o ângulo de prumo no campo em comparação com o ângulo calculado nesse ponto para o centro da terra. Não existe uma medida verdadeira. Para provar esse ponto, quando comecei a pesquisar em 1975, nosso chefe colocou dois pregos em uma estrada montanhosa a um quarto de milha de distância e tivemos que prendê-lo e disparar a distância todos os dias durante um mês. Com as correções atmosféricas na corrente e no medidor de distância HP, correspondemos apenas à distância original 3 vezes com o medidor de distância e 1 vez com a corrente. Um exemplo muito humilhante e fica comigo por todo esse ano. Fui vaiado em uma convenção GIS uma vez quando me anunciaram como agrimensor (ele) e eu não tinha dito uma palavra, mas sei quando colocar meu chapéu de ursador e quando usar meu chapéu de GIS.

user35019
fonte
Eu entendo o seu ponto. Na verdade, nunca me vi lutando com precisão do mundo real. O QGIS está me dizendo que, mesmo na escala nano ou pico, estou em locais diferentes, isso também é bom. Só que não consigo descobrir quanta casa decimal é necessária para dizer que dois pontos são as duplicatas. A propósito, muito obrigado por compartilhar a história da década de 1970, nunca ouvi falar dessa fase pioneira de mapeamento e GIS, especialmente nos dias anteriores ao GPS. Uau.
23918 Kazuhito