Estoy intentando utilizar 2 objetos de geometría para comprobar si una línea está dentro de un polígono (bastante complejo). La comprobación de la geometría siempre falla, aunque la línea esté claramente dentro del polígono. Utilizo el siguiente código:
#get the polygon
sC = arcpy.SearchCursor(polygon)
for row in sC:
polygonshape = row.Shape
del sC
#creation of the polyline(s):
feature_info = [[[p1.x, p1.y], [x, y]], [[p2.x, p2.y], [x, y]], [[p3.x, p3.y], [x, y]]]
features = []
for feature in feature_info:
array = arcpy.Array()
for point in feature:
P = arcpy.Point()
P.X = point[0]
P.Y = point[1]
array.add(P)
features.append(arcpy.Polyline(array))
#the actual check:
for item in features:
in_poly = polygonshape.contains(item) #this is always false
¿Alguna idea de por qué falla esto? He considerado que una de las capas (polígono) tiene un sistema de coordenadas, mientras que la otra no, pero según otra respuesta aquí (que no puedo encontrar ahora mismo) los sistemas de coordenadas son supuestamente ignorados para este tipo de comprobaciones. ¿Podría ser el tamaño/complejidad del polígono un problema?
Si creo una Feature Class de la línea y hago una selección espacial (dentro) después, funciona como se espera. Además: este comportamiento devuelve resultados inesperados tanto para contains como para within.
4 votos
¿"Los sistemas de coordenadas son supuestamente ignorados para este tipo de comprobaciones"? Dudo mucho que eso sea correcto
1 votos
Sólo una observación rápida, pero creo que deberías desentrañar features.append(arcpy.Polyline(array))
0 votos
@radouxju gracias, tienes razón. Ha sido un error de formato al copiar en SE.
0 votos
@vinayan He sacado esta información de este post: gis.stackexchange.com/questions/52936/ Sin embargo, después de algunas pruebas, creo que éste podría ser el origen de mis problemas. Después de inicializar la polilínea con una spatial_reference el problema parece desaparecer. Si usted puede proporcionar una respuesta o fuente, en cuanto a por qué esto causa problemas (ya que las coordenadas están en el derecho CS, es sólo que no está definido), voy a aceptar como respuesta.
0 votos
Lejos de afirmar que los sistemas de coordenadas no importan, esta pregunta demuestra que sí lo hacen. De hecho, toda la referencia de coordenadas deben ser idénticos. Esto ha sido así desde antes de que existiera ArcPy, o incluso ArcObjects.
0 votos
Puede que haya entendido mal su pregunta, pero este ¿ayuda?