Localizando um pólo de inacessibilidade em relação a vários pontos sem usar rasters

9

Quero encontrar um "ponto de inacessibilidade" de uma série de pontos, representando cidades e vilas na Escócia. Utilizando ferramentas FOSS GIS (QGIS, SAGA, GRASS, Postgres / PostGIS ...).

Este é o ponto mais distante de qualquer centro populacional. Este seria o centro do maior círculo que não contém uma cidade, mas terá uma cidade no limite.

Existe uma abordagem raster, que funciona - o filtro de proximidade GDAL .

Existe uma maneira baseada em VETOR para fazer isso? Um que não requer rasterização?

Aqui está minha tentativa com rasters ...

  • Comece com uma camada de ponto em uma projeção adequada em metros (estou usando OSGB, 27700)
  • Adicione um campo chamado "one" e defina como inteiro com o valor constante 1.
  • Vetor para varredura, comando de edição para usar -a one e usando GEO em vez de pixel. Verifique se os pixels são quadrados!
  • Crie contornos na varredura de proximidade (neste caso, 1 km de largura)

Aqui está o que parece. Desenhei alguns pontos candidatos à mão ;-)

insira a descrição da imagem aqui

Eu pensei que dissolver buffers repetidos (usando o plug-in de buffer de anel múltiplo ) poderia funcionar, mas suspeito que não tenho memória suficiente para que isso funcione.

Steven Kay
fonte

Respostas:

7

Eu acho que é o centro do excircle do triângulo com maior raio, que toca não mais que 3 pontos. Na figura abaixo, 11 primeiros desses centros são mostrados. Eles são rotulados por seu número de classificação.

insira a descrição da imagem aqui

É o suficiente para eliminar os que estão fora dos triângulos e definir o campeão, ou seja, o número 3 na imagem.

ATUALIZAÇÃO INSPIRADA POR STEVEN FINDING:

insira a descrição da imagem aqui

Resultado acima, diferentemente da primeira solução obtida no ArcGIS sem script (mas com licença avançada) e funciona! No entanto, pode produzir resultados questionáveis ​​nas margens de uma área de estudo, por exemplo, ponto 1, ou seja, o segundo ponto mais remoto encontrado ...

FelixIP
fonte
11
Uau, obrigado por compartilhar isso! Tentei seguir seu fluxo de trabalho no QGIS por (1) aponta para Delaunay ( Vector | Delaunay Triangulation), (2) Escolha um triângulo campeão (Calculado $areasobre a tabela de atributos de polígonos Delaunay) e guardado a maior como uma nova camada (3) Encontre circuncentro ( Processing | GRASS | Vector | v.voronoi.skeletonem o triângulo campeão). Você acha que esse método está correto?
Kazuhito
O primeiro passo está correto. Eu calculei centros de exradius para TODOS os triângulos. Para encontrar o centro, construí perpendicularmente para dentro, para os pontos médios dos três lados, e encontro a interseção (combinação 3,2).
FelixIP
Círculo circunscrito de triângulo, não excircle.
FelixIP # 1/17
Muito obrigado! (. e obrigado por imagem agradável, também Quanto mais eu me inclino a fundo sobre isso, mais ela se torna fascinante.)
Kazuhito
11
Boa observação! Vou testá-lo e atualizar a resposta. Diferente da primeira solução, ela não requer scripts, pelo menos no Arcgis.
FelixIP # 3/17
5

Aqui está um acompanhamento. Obrigado a @FelixIP por me apontar na direção certa!

Usando os dados do OSM da Austrália, consegui encontrar o "ponto de inacessibilidade" no continente australiano - chego a 260 km equidistante de Akarnenehe, Bedourie e Mount Dare, no POINT (137.234888 -24.966466)

insira a descrição da imagem aqui

Encontrei um fluxo de trabalho bastante fácil no QGIS, que usa uma combinação das abordagens de varredura e vetor. Tenho certeza de que uma abordagem semelhante funcionaria em outros SIG.

O momento do 'a-ha' veio de perceber isso

Todos os máximos caem em tri-pontos na malha de voronoi - pontos onde os trigêmeos adjacentes dos polígonos de voronoi se encontram.

A abordagem foi a seguinte:

  • trabalhar em uma projeção baseada em medidores. Usei 3857, não o ideal, mas meus dados OSM estavam nesse formato :)
  • obtenha uma camada que represente pontos de interesse em ('cidade', 'vila', 'cidade', 'aldeia')
  • crie uma malha voronoi a partir dessa camada
  • use nós de extração para obter os tripoints
  • crie a varredura de proximidade (como mostrado na pergunta)
  • prenda a varredura no contorno da paisagem, para que os pixels do mar sejam definidos como 0.
  • use a ferramenta Point Sampling nos nós extraídos contra a varredura

Em seguida, use o Db Manager e o Virtual Layers para encontrar o nó com o maior valor de distância na varredura.

select 
    rowid,
    name,
    proximity2,
    st_astext(st_transform(geometry,4326)) as pt, 
    st_buffer(geometry, proximity2) as geometry
from 
    "samples" 
order by 
    proximity2 desc 
limit 1;
Steven Kay
fonte