Como particionar espacialmente muitos pontos?


9

Tenho dados de localização de clientes, com mais de 130 milhões de registros, espalhados por todo o país. Esta é uma tabela espacial no PostGIS

Quero agora particionar o país inteiro em 'áreas de serviço', para que cada área de serviço tenha:

  • Pelo menos 30 clientes
  • Está no máximo 1000 km quadrados.

Eu pesquisei a ferramenta Agregada do ArcGIS, mas ela não atende aos meus critérios, pois:

  • Não leva em consideração a contagem mínima
  • Eu só tenho Qgis & Grass à minha disposição.

Que ferramenta / processo posso usar para conseguir isso?

Respostas:


4

Eu executei um pequeno experimento:

  • gerou 900 pontos aleatórios
  • conectou-os usando a árvore de abrangência mínima
  • coletor pegou em algum lugar no meio

insira a descrição da imagem aqui

  • virou os links para formar um gráfico direcional, ou seja, cada nó eventualmente descarrega no mesmo coletor

insira a descrição da imagem aqui

  • executei o script que estou usando para agregar captação menor em outras maiores, tentando obter um "tamanho" médio de 30.

RESULTADO:

insira a descrição da imagem aqui

Deixe-me saber se isso é de interesse. Posso desenterrar o script (já publicado em algum lugar deste site) ou explicar o fluxo de trabalho com mais detalhes. Eu usei o ArcGIS.

-------------------------------------

** ATUALIZAÇÃO Setembro de 2017

É muito semelhante ao anterior, mas usando as ferramentas de abordagem raster, Distância e Hidrologia do ArcGIS. A parte complicada é a criação de uma árvore de abrangência mínima e a localização de pontos de captação em formato raster.

Estes são os passos que segui:

  • Nós triangulados (pontos para agrupar), extrair bordas triangulares da rede, converter nós em rasterização de PESO :

insira a descrição da imagem aqui

  • Campo de computação na tabela de arestas: eu uso (ShapeLength ^ 3 / 1e6). Converta em varredura, preencha as lacunas com um valor muito alto para criar a varredura COST . Isso incentiva o fluxo entre pontos próximos um do outro. Espera-se que os caminhos de fluxo pareçam com o MST (Spanning Tree mínimo), em vez de estarem perto de linhas retas em direção ao coletor.
  • Escolha qualquer nó (OUTLET / SINK) e crie a varredura Cost Back Link, usando a superfície COST e SINK como fonte. Converter de volta ligação raster para decente raster Direcção do Fluxo de usar Int(Power(2,"backlink"-1)). Acumule o fluxo usando a direção do fluxo e a varredura de peso. Como se pode ver, o truque com a atribuição de custos realmente produz algo semelhante ao MST:

insira a descrição da imagem aqui

Decidi agrupar pontos por 50. Tendo em mente a estrutura fractal da rede, defina o limite ligeiramente mais baixo dos pontos INLET no início de 'High Flow Streams', ou seja, Con ("FlowAccum"> 45,1). Entradas definidas como células onde

Existe um fluxo alto e estatísticas focais = 2 e a célula não é um afundamento (nenhum valor de dados na direção do fluxo) :

insira a descrição da imagem aqui

Use entradas como pontos de fluidez e direção do fluxo para definir captações. A imagem mostra 115 captações derivadas:

insira a descrição da imagem aqui

Suas estatísticas: média = 50,33, min = 46 e máx = 74.

Para obter o segundo conjunto de captações, basta apagar a varredura de PESO sob as captações já definidas, calcular a Acumulação de Vazão etc.

O método funcionará para milhões de pontos porque é baseado em varredura, a triangulação desse número de pontos também não será um problema.


11
Não sei se isso será útil para mim, mas parece interessante como o inferno .. Por favor, poste o script, se puder.
Devdatta Tengshe 07/07

Vou postar o script ainda hoje ou segunda-feira, tirou um dia de folga do trabalho. Em uma Entretanto ter um olhar para gis.stackexchange.com/questions/179559/... onde eu descrevi a idéia por trás dele
FelixIP

Eu testei em 100.000 pontos durante a noite. O último passo demorou cerca de 6 horas e o torna sem abordagem, pelo menos no ArcGIS. Sem mencionar que eu mesmo tive que codificar o MST, porque a ferramenta I de Patterson ficou presa.
FelixIP 11/07/16

Você conseguiu resolvê-lo? Parece que eu fiz usando abordagem raster, pode publicar o fluxo de trabalho se isso é de interesse /
FelixIP

Por favor faça. Eu o resolvi com um método Bruteforce, o que foi bom o suficiente para o meu propósito; Mas tenho certeza de que outras pessoas poderiam se beneficiar de sua nova abordagem.
Devdatta Tengshe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.