Esto es específico de ArcGIS.
Tengo archivos de forma de 2 puntos A
y B
, el primero ( A
) es un único punto que contiene un lat largo, el segundo ( B
) es una multitud de puntos (más de 12k) que contienen cada uno su lat y largo. Lo que intento hacer es automatizar la selección del 75% de B
los puntos del shapefile en función de la distancia desde el shapefile A
. En otras palabras, quiero seleccionar el 75% más cercano de los B
puntos de shapefile al punto de un shapefile A
.
arcgis-10.0
spatial-statistics
Furlong
fuente
fuente
Respuestas:
Puede hacer un Buffer de Anillo Múltiple en el archivo de forma A, y luego hacer una unión espacial del Buffer al archivo de forma B. Cuando hace una unión espacial de polígonos y puntos, obtiene un recuento del número de puntos en cada polígono en el atributo tabla de la unión. Luego, al examinar el número total de puntos dentro de los búferes, puede obtener dentro del 75% de los puntos en el archivo de forma B.
Un enfoque ligeramente diferente sería escribir esto en Python y verificar el 75% en un bucle, pero si es un cálculo único, es posible que no lo necesite.
fuente
Por 1200 puntos (¿o incluso hasta 12M puntos?), Simplemente los puse en la memoria como una Colección Genérica, en este caso, una Lista de listas ordenadas . Esto podría simplificarse simplemente saltando puntos cuando se encuentre con una situación con múltiples puntos que están a la misma distancia del punto de origen. Además, para el rendimiento, considere usar una tabla hash en lugar de una SortedList y ordenar una vez después de insertar todas las distancias. Sin embargo, eso requeriría algunas líneas de código más (?).
No tuve tiempo para probar esto, pero este C # podría ayudarlo a comenzar:
fuente
Un script de geoprocesamiento de Python es una opción obvia:
fuente
Tuve este problema hace unos años. Me resultó más fácil mantener los datos como 'datos planos', recorrer todos los datos y calcular manualmente la distancia, luego tomar el 75% superior (en realidad, mantuve el 10% superior). Luego hice lo mismo en ArcIMS usando sus cálculos de distancia y me llevó mucho más tiempo.
El almacenamiento en búfer es una gran sobrecarga, pero los cálculos matemáticos son un punto fuerte. Si almacena 12k puntos, creo que tendrá problemas de rendimiento.
fuente