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

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

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

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 :

- 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:

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) :

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

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.