No veo una manera strightforward de hacer esto en ArcPy licencia normal sin reinventar las ruedas..
Acaba de leer sobre Shapely
(descargar enlace) un paquete python, que incluye el módulo "polygonize"
función de suites JTS/GEOS familiares..
Mi idea es que podemos importar el paquete Shapely en ArcPy y obtener el WKT de las geometrías de polilíneas ESRI y pasarlas al poligonizador. Esto dará los polígonos resultantes. Estos podrían ser convertidos de nuevo a ESRI geometrías polilínea. Aunque debo decir, mi conocimiento de Python es terrible esto es sólo una idea genérica
aquí hay una muestra de polygonizer..
>>> from shapely.geometry import LineString, Point
>>> from shapely.ops import polygonize
>>> lines = [
... LineString(((0, 0), (1, 1))),
... LineString(((0, 0), (0, 1))),
... LineString(((0, 1), (1, 1))),
... LineString(((1, 1), (1, 0))),
... LineString(((1, 0), (0, 0))),
... LineString(((5, 5), (6, 6))),
... Point(0, 0),
... ]
>>> result = polygonize(lines)
>>> list(result)
[<shapely.geometry.polygon.Polygon object at ...>, <shapely.geometry.polygon.Polygon object at ...>]
>>> lines2 = [
... ((0, 0), (1, 1)),
... ((0, 0), (0, 1)),
... ((0, 1), (1, 1)),
... ((1, 1), (1, 0)),
... ((1, 0), (0, 0)),
... ((5, 5), (6, 6)),
... ]
>>> result2 = polygonize(lines2)
>>> list(result2)
[<shapely.geometry.polygon.Polygon object at ...>, <shapely.geometry.polygon.Polygon object at ...>]
Tampoco estoy seguro de lo que podemos hacer con LEFT_ID y RIGHT_ID. Creo que son irrelevantes. Póngame al día si me equivoco.
0 votos
Tu diagrama tiene polilíneas con puntas de flecha en ambos extremos. Para saber en qué lado de la polilínea cae el polígono numerado, ¿no tendrían que ser unidireccionales?
0 votos
He usado puntas de flecha en ambos extremos, creo que fue mala idea. La dirección de las polilíneas es mixta pero si consultamos esta tabla "L_ID = 2 o R_ID = 2" seleccionará todas las polilíneas necesarias para construir el polígono con ID = 2.
1 votos
Sin poder ir desde el final de una polilínea hasta el inicio de la siguiente para determinar el polígono a encerrar creo que necesitarías alguna otra forma de determinar el orden de las polilíneas alrededor de un polígono.