Más

La simplificación de Shapely no simplificará más

La simplificación de Shapely no simplificará más


Tengo un multipolígono en forma y quiero simplificarlo hasta que tenga menos de un cierto número de puntos. Cuando uso elpreseve_topology = Falsoargumento para geom.simplify, Puedo obtener el número de puntos arbitrariamente bajo.

Sin embargo, si dejo eso fuera (p. Ej.preserve_topology = Verdadero), parece haber un límite estricto de cuánto simplificará el objeto. A medida que aumento el parámetro (y por lo tanto lo hago "más simple"), el número de puntos permanece estancado.

gges un MultiPolygon con 255726 puntos en la proyección de Google Mercator (EPSG: 3857).

Con preserve_topology = False:

(Pdb) pp [(10 ** i, i, num_points_in_polygon (gg.simplify (10 ** i, preserve_topology = False))) para i en el rango (1, 20)] [(10, 1, 134598), ( 100, 2, 27531), (1000, 3, 2523), (10000, 4, 156), (100000, 5, 13), (1000000, 6, 0), (10000000, 7, 0), (100000000, 8, 0), (1000000000, 9, 0), (10000000000, 10, 0), (100000000000, 11, 0), (1000000000000, 12, 0), (10000000000000, 13, 0), (100000000000000, 14, 0), (1000000000000000, 15, 0), (10000000000000000, 16, 0), (100000000000000000, 17, 0), (1000000000000000000, 18, 0), (10000000000000000000L, 19, 0)]

Con preserve_topology = True:

(Pdb) pp [(10 ** i, i, num_points_in_polygon (gg.simplify (10 ** i))) para i en el rango (1, 20)] [(10, 1, 135174), (100, 2, 32572), (1000, 3, 10947), (10000, 4, 8760), (100000, 5, 8519), (1000000, 6, 8509), (10000000, 7, 8509), (100000000, 8, 8509) , (1000000000, 9, 8509), (10000000000, 10, 8509), (100000000000, 11, 8509), (1000000000000, 12, 8509), (10000000000000, 13, 8509), (100000000000000, 14, 8509), ( 1000000000000000, 15, 8509), (10000000000000000, 16, 8509), (100000000000000000, 17, 8509), (1000000000000000000, 18, 8509), (10000000000000000000L, 19, 8509)]

Como puede ver, se mantiene obstinadamente en 8509 puntos, incluso con un masivo parámetro de simplificación

¿Es esto sensato? ¿Hay algún error en shapely / geos? ¿Hay alguna forma de simplificar y preservar la topología y obtener objetos arbitrariamente simples?


Lea "preservar la topología" como "no permita que los anillos de polígono se crucen con otros anillos". En algún momento (~ 1/15 del número de puntos originales en su caso) el algoritmo no puede simplificar más sin invalidar una o más partes del multipolígono.

Es posible que algunas partes complicadas del multipolígono estén retrasando a las demás. Podría intentar simplificar sus polígonos por separado.


Ver el vídeo: Απλοποίηση Κλασμάτων Ε - ΣΤ τάξη