Existem três cenários prováveis que estou tentando capturar perto de distâncias para:
- Uma estação de metrô de intercâmbio, que possui 2 ou mais estações vizinhas. Ou seja, a estação em questão conecta 2 ou mais rotas principais e possui 2 ou mais estações vizinhas.
- Uma estação de metrô terminal, que possui apenas 1 estação vizinha. Esta é a estação no final da linha.
- Uma estação de metrô em linha, com exatamente 2 estações vizinhas, uma das duas abordagens.
Estou tentando calcular um valor que se poderia chamar de "distância média entre estações vizinhas"
O arcpy.GenerateNearTable_analysis()
pode lidar com duas opções: Distância ao recurso mais próximo e Distância entre todos os recursos.
Alguém tem um método inteligente para resolver esses cenários? Observe que cada estação é designada como "Intercâmbio", "Terminal" ou "Inline" na tabela de atributos no campo "StationType".
Adicionado:
Aqui está um código psuedo com base na sugestão do @ whuber nos comentários. Ainda não tenho tempo para descobrir isso, por isso, se alguém quiser dar uma facada, você será recompensado com uma marca de seleção! ;)
Dei uma olhada na biblioteca NetworkX e ela parece funcionar como eu quero.
Dado o gráfico:
A —― B ―― C ―― D
|
E
bem como os nós e links:
Nodes = ["A", "B", "C", "D", "E"]
Links = [("A", "B"), ("B", "C"), ("C", "D"), ("B", "E")]
def myFunction(node):
identify the links that node belongs to
count the number of links
calculate the total link lengths
divide the total link lengths by the number of links
return someValue
Respostas:
Acredito que seu problema, como @whuber, sugeriu que seria melhor representado em uma Matriz de Adjacência . Ou seja, se você tiver tempo e inclinação para entender a teoria por trás dela, em vez de depender de um pacote para fazer o trabalho por você.
Para um dado gráfico G, com vértices de {v 1 , v 2 , ..., v n } em que n é o número de vértices, é necessário criar uma matriz de tamanho M i, j onde i = ne j = n. Cada vértice é então representado na i- ésima linha pelo número de caminhos encontrados para vértices adjacentes na j- ésima coluna.
Exemplo abaixo:
Dada essa forma levemente complexa de representar seus dados relativamente simples, você precisará numerar seus vértices de maneira arbitrária, não representativa de nenhuma ordem lógica.
OBSERVAÇÃO: Assumindo que nenhuma estação faça loops, uma k- ésima linha nunca terá um valor diferente de 0 na k- ésima coluna. Todas as definições abaixo assumem que isso é verdade
NOTA: Supondo que não haja linhas simultâneas entre a mesma estação, todos os exemplos abaixo assumem que um valor de célula será apenas 1 ou 0. O exemplo acima também pressupõe que o deslocamento bidirecional seja permitido.
Regras para identificar categorias de estações:
1. Terminal
Um terminal seria identificado por uma k linha th tendo uma única coluna que não tem um valor de 0, e que o valor é 1. Ver vértices 1, 2, e 3 no exemplo 1 acima.
2. Junção
Uma junção iria ser identificado por um k -ésima linha tendo mais do que duas colunas contendo um valor de 1. Ver o vértice 4 no exemplo 1 acima, em alternativa, todos os vértices no exemplo 3 acima.
3. Inline
Uma estação em linha é significada por ter exatamente 2 colunas em uma k- ésima linha em que o valor é 1. Veja todas as vértices no exemplo 2 acima. (Ignore o fato de que {v 1 , v 3 } cruza {v 2 , v 4 }).
fonte
Você pode tentar usar o Shapely . Se você converter seus pontos arcpy em pontos bem torneados, poderá calcular a distância entre pontos individuais.
fonte