Isso é específico do ArcGIS.
Eu tenho shapefiles de 2 pontos A
e B
, o primeiro ( A
) é um único ponto que contém um lat long, o segundo ( B
) é uma infinidade de pontos (acima de 12k) que contêm cada lat e long. O que estou tentando fazer é automatizar a seleção de 75% dos B
pontos do shapefile com base na distância do shapefile A
. Em outras palavras, eu quero selecionar os 75% mais próximos dos B
pontos do shapefile para A
o único ponto do shapefile .
arcgis-10.0
spatial-statistics
Furlong
fonte
fonte
Respostas:
Você pode criar um buffer de anel múltiplo no shapefile A e, em seguida, fazer uma junção espacial do buffer para o shapefile B. Quando você faz uma junção espacial de polígonos e pontos, obtém uma contagem do número de pontos em cada polígono no atributo tabela da junção. Então, examinando o número total de pontos nos buffers, você pode obter 75% dos pontos no shapefile B.
Uma abordagem um pouco diferente seria criar um script em Python e verificar os 75% em um loop, mas se for um cálculo único, talvez você não precise disso.
fonte
Para 1200 pontos (ou mesmo até dizer pontos 12M?) Eu tinha acabado de colocá-los na memória como uma coleção genérica - neste caso, um SortedList de listas . Isso pode ser simplificado ao pular pontos quando você se deparar com uma situação com vários pontos que estão à mesma distância do ponto de origem. Além disso, para obter desempenho, considere usar uma tabela de hashtags em vez de uma SortedList e classificar uma vez após inserir todas as distâncias. Isso levaria mais algumas linhas de código (?).
Não tive tempo de testar isso, mas esse c # pode ajudar você a começar:
fonte
Um script de geoprocessamento Python é uma escolha óbvia:
fonte
Eu tive esse problema alguns anos atrás. Achei mais fácil manter os dados como 'dados simples', percorrendo todos os dados e calculando manualmente a distância, depois obtendo os 75% superiores (na verdade, eu mantive os 10% superiores). Fiz o mesmo no ArcIMS usando seus cálculos de distância e levou muito mais tempo.
O buffer é uma sobrecarga enorme, mas os cálculos de matemática são um forte ponto forte. Se você colocar 12k pontos em buffer, acho que você terá problemas de desempenho.
fonte