<div dir="ltr">Hola Hector.<br>(Perdon a todos por escribir en castellano en esta lista).<br><br>He echado un vistazo al codigo de mustNotHaveDanglesLineRule.<br>Entiendo que lo tienes aun muy en mantillas; pero te dejo algunos comentarios.<br><br>Entiendo que la regla a implementar seria el equivalente a "No deben quedar <br>nodos colgados" (<a href="https://pro.arcgis.com/es/pro-app/help/editing/geodatabase-topology-rules-for-polyline-features.htm#ESRI_SECTION1_D111AE311AFB4DE4ABA90BC12EE8C605">https://pro.arcgis.com/es/pro-app/help/editing/geodatabase-topology-rules-for-polyline-features.htm#ESRI_SECTION1_D111AE311AFB4DE4ABA90BC12EE8C605</a>)<br><br>Creo que te ha pasado como a todos los que empiezan...<br>te has metido a implementar sin tener clara la solucion. <br>Mi consejo es que antes de empezar a implementar pienses que es lo que tendrias <br>que hacer, no en terminos de programacion, si no que pasos harias.<br>No intentes partir de un codigo e ir adaptandolo sobre la marcha. Si el problema<br>es simple o muy parecido al que has copiado el codigo vale, pero si no es simple<br>y no se parece lo que hay que hacer solo te dara dolor de cabeza hacerlo.<br><div>Cuando tengas descrito lo que hay que hacer, ya miras codigo y puedes reutilizar algo que tengas de antes.<br></div><div><br></div>Vamos a ver esto con un ejemplo.<br><br>Voy a empezar con una simplificacion... lines, no multilineas.<br>Vale, un problema menos.<br>Y ¿ ahora que ?<br>Una linea, dos extremos.<br>Para cada linea, compruebo si el extremo solapa (habra que ver que es <br><div>solapa, podriamos asumir que solapa=intersecta inicialmente) con alguna linea <br></div><div>del dataset (incluida ella misma). Si no solapa con nadie se considerara un error.<br></div>Y esto habra que hacerlo con los dos extremos.<br><br>Hasta aqui sencillo. <br>Una vez tengo claro lo que he de hacer, descrito en lenguaje cotidiano, ya voy <br>a ver como tendria que implementarlo.<br><br>Parece simple...<br>Al metodo check se le invocara para cada feature, "linea", del dataset.<br>perfecto.<br>Si tengo indices espaciales...<br>pillare un extremo y comprobare si intersecta con alguna linea del dataset1.<br>Un query sobre el indice con el extremo y comprobar si solapan las<br>lineas obtenidas con el buffer. Y si no añadir el extremo al informe de errores.<br>Pondre la linea como geometria, y el punto del extremo como error.<br><div>El usuario vera que ese extremo queda colgado. <br></div><div>No tengo claro que el query sobre el indice puede funcionar correctamente...</div><div>si veo que el resultado no es bueno, puedo atacar al indice con un buffer del extremo con</div><div>la tolerancia, y luego ya afino comprobando que el resultado intersecte con el punto.<br></div><br>Y como habra que reperirlo para los dos extremos, probablemente sea interesante<br>meter ese codigo en una funcion.<br><br>Y las acciones...<br>Bueno, por ejemplo la de "extender".<br>Primero averiguamos que extremo de la linea es el que da el error.<br>Bueno la descripcion de "Extender" del enlace de antes lo dice bastante bien.<br>No me voy a repetir. Aqui solo decir, que si que interviene la tolerancia, y <br>habran casos que nos indicara que no se puede extender la linea.<br>Pero el truco podria estar en saber que extremo de la linea es el que hay que<br>alterar. Comparando cada extremo de la linea con la geometria de error del informe<br>podemos saber si es el primero o el ultimo.<br><br>La accion de cortar... tampoco parece complicada.<br>(mira la descripcion en el enlace)<br>La primera aproximacion podria ser ...<br>Averiguamos que extremo de la linea es el que da el error.<br>calcular con que linea tiene que solapar ese extremo. Aplicamos un buffer con <br>la tolerancia y buscamos... <br>¿ Y si hay mas de una ? <br>para luego... de momento avisamos que no podemos corregir eso al usuario.<br>Que lo edite el manualmente y lo corrija.<br>Cuando tenemos a que linea debe unirse, cogemos el segmento de linea de ese <br>extremo de la linea que estamos corigiendo y calculamos el punto en donde <br>intersecta con la otra. Y ese seria el final de la linea a corregir.<br>Asi facil...<br>Pero ¿ y si el segmento no intersecta ?<br>La solucion simple seria ir cogiendo los siguientes segmentos hasta que intersecte. <br>Probablemente estaria bien comprobar lo primero si la linea intersecta. Y no <br>hacer nada si no intersecta.<br><br><br><br>Una vez claro la definicion de la regla y las acciones desde el punto de vista<br>funcional (del usuario). Describimos en lenguaje normal lo que deberiamos hacer.<br>Y luego ya pasamos ha implementarlo.<br><br><div>A ver que te parece lo que he comentado.</div><div>Espero comentarios.</div><div><br></div>Si no ves claro algo de lo que digo, comentalo, no des por sentado lo que<br>diga sin mas.<br><br>Un saludo<br>Joaquin<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El dom., 30 jun. 2019 a las 13:53, Hector Tundidor Hernandez (<<a href="mailto:hectorth23@gmail.com">hectorth23@gmail.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="ES"><div class="gmail-m_-3427929953675668139WordSection1"><p class="MsoNormal">Dear Community,<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I have updated mi wiki page with the Weekly Report 5. Any comments and suggestions are welcome.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ol style="margin-top:0cm" start="1" type="1"><li class="gmail-m_-3427929953675668139MsoListParagraph" style="margin-left:0cm">What did I complete this week?<u></u><u></u></li></ol><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">This week I have continued with the rule analysis must not have dangles and I have completed part of the corresponding documentation in the wiki. In addition, I have started to implement the rule code and have created a line dataset with the default 2D dimension.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">The commented files are the following:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0cm" type="disc"><li class="gmail-m_-3427929953675668139MsoListParagraph" style="margin-left:0cm">MustNotDaveDanglesLineRule.py<u></u><u></u></li><li class="gmail-m_-3427929953675668139MsoListParagraph" style="margin-left:0cm">MustNotHaveDanglesLineRuleFactory.py<u></u><u></u></li><li class="gmail-m_-3427929953675668139MsoListParagraph" style="margin-left:0cm">testLine.shp<u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><ol style="margin-top:0cm" start="2" type="1"><li class="gmail-m_-3427929953675668139MsoListParagraph" style="margin-left:0cm">What am I going to achieve for next week?<u></u><u></u></li></ol><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Next week I will continue with the rule development and with the code corresponding to the different actions that solve rule posible violations.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ol style="margin-top:0cm" start="3" type="1"><li class="gmail-m_-3427929953675668139MsoListParagraph" style="margin-left:0cm">Is there any blocking issue?<u></u><u></u></li></ol><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">On this occasion I am having some difficulties implementing the rule code and that it does not indicate non-dangling lines as errors.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Regards<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Héctor<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div>_______________________________________________<br>
gvSIG-Desktop-Devel mailing list<br>
<a href="mailto:gvSIG-Desktop-Devel@lists.osgeo.org" target="_blank">gvSIG-Desktop-Devel@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/gvsig-desktop-devel" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/gvsig-desktop-devel</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>--------------------------------------<br>Joaquin Jose del Cerro Murciano<br>Development and software arquitecture manager at gvSIG Team<br><a href="mailto:jjdelcerro@gvsig.com" target="_blank">jjdelcerro@gvsig.com</a><br>gvSIG Association<br><a href="http://www.gvsig.com" target="_blank">www.gvsig.com</a><br></div></div></div></div></div>