¿Realizando una selección "mayormente dentro" usando ArcMap?

8

Estoy buscando una manera de determinar si una polilínea está "principalmente dentro" de un polígono. Dado que en su mayoría es arbitrario, necesitaría poder ingresar un porcentaje en su ejecución.

Pensé que podría haber una opción en ArcMap usando Seleccionar por ubicación, pero no parece haberla. Existen métodos similares, como "completamente dentro", pero no veo cómo puedo usar ninguno de ellos para lograr lo que estoy buscando.

¿Existe esta funcionalidad o un método para lograr esto?

amasephy
fuente
define 'mayormente dentro' ... 75% dentro?
DPSEspacial
El centro de gravedad es una opción dentro, por lo que suele ser sobre todo dentro
HeikkiVesanto
@mapBaker Buen punto sobre el porcentaje. Quizás si usa ArcPy, esta podría ser una variable que podría ajustarse para producir el resultado deseado.
amasephy
1
@Vesanto El centroide no funcionaría, si la polilínea cortara la esquina de un polígono, el centroide podría estar dentro del polígono, pero una parte significativa de él podría no estarlo.
amasephy
2
Haría una intersección entre el polígono y la línea FC y luego una estadística para determinar el% de cada línea en un determinado polígono (o cualquier polígono). A partir de esto, entonces haría mi selección.
dklassen

Respuestas:

8

entonces solo tendría que hacer una unión de tabla a tabla en los archivos de dos líneas (original y salida de la herramienta GP) y luego calcular la diferencia porcentual entre los dos campos Shape.Len (si un segmento de línea en el archivo original tiene 100 pies de largo , y ese mismo segmento de línea, recortado al polígono, tiene 75 pies de largo, entonces el 75% de esa línea estaría dentro del polígono). Entonces podría hacer una selección por atributo en función de este porcentaje.

Una vez más, sé que esto está bastante involucrado, crea un conjunto de datos intermedios, y probablemente haya una manera más fácil de hacer esto que no conozco; pero, si escribe un modelo o script para hacerlo, y elimina la línea de salida FC cuando haya terminado, no debería parecer tan difícil para el usuario final ... incluso si es un poco molesto para construir inicialmente.

Solo algunos pensamientos, y avíseme si eso no tiene sentido e intentaré explicarlo mejor.

Juan
fuente
+1 Me parecen muy buenos pensamientos porque hacen un buen uso de las capacidades de ArcGIS y, no importa cómo se haga, realmente no hay forma de evitar alguna forma de operación de superposición de polígono versus polilínea. (Por cierto, creo que fuiste víctima de un downvoter en auto y te pido disculpas por eso.)
whuber
@John eso es lo que estaba pensando también ... PERO - para unir las líneas de entrada necesitaría un campo UNIQUEID (no el campo OBJECTID de ArcGIS, te importa) en el que podrías unir ...
DPSSpatial
1
@mapBaker Gracias, ese es un buen punto (me había olvidado si el clip conservaba el OID de entrada en la salida como hacen algunas herramientas). Sin embargo, puede calcular el OID a otro campo antes de ejecutar el clip para obtener un UniqueID si aún no está disponible.
John
@John ohhhh K ...
DPSSpatial
Esta solución funcionaría para mí, pero creo que el uso de Intersect de dklassen en lugar de Clip lo hace más simple. Terminé usando una combinación de las respuestas que recibí. No estoy seguro de quién debería obtener crédito por responder la pregunta.
amasephy
3

Según las respuestas que recibí aquí, utilicé una combinación de ideas proporcionadas.

Primero, lo que hice fue agregar un campo Longitud y Porcentaje a mi conjunto de datos original. Copié los valores de Shape.Length en el campo Longitud.

En segundo lugar, en lugar de usar Clip, que es significativamente más trabajo en este caso, utilicé la herramienta Intersect. Esto "recorta" las polilíneas que se cruzan con los polígonos y agrega algunos atributos potencialmente valiosos. A pesar de tener un campo de identificación verdaderamente único, no creo que sea realmente necesario cuando se utiliza un campo de longitud estática.

Finalmente, simplemente calculo el porcentaje de la diferencia entre el nuevo campo Shape.Length y el campo Longitud estática en el campo Porcentaje. Cualquier polilínea que intersecte el límite del polígono tendrá un porcentaje inferior a 100.

amasephy
fuente
2
  1. Divide la polilínea en cada vértice,
  2. para cada llamada de segmento completamente dentro de los puntos finales,
  3. cualquier segmento que esté completamente dentro tiene el 100% de su longitud dentro del polígono (suponiendo que no haya polígonos reentrantes), y su longitud se puede agregar a un total,
  4. cualquier línea parcial se puede dividir en digamos 10 segmentos y se aplica el mismo cálculo.
  5. Compare el total con la longitud calculada para obtener una resolución del 10% (si necesita resultados más precisos, puede subdividir más finamente en las líneas parciales).
  6. Incluso podría mantener un total de las longitudes de las líneas totalmente externas también y solo hacer el cálculo de la línea parcial solo si ninguna de las respuestas supera su umbral.
Steve Barnes
fuente