Daha çox

Shapely-nin sadələşdirməsi artıq sadələşdirməyəcək


Formalı bir çox poliqon var və müəyyən nöqtələrdən az olana qədər onu sadələşdirmək istəyirəm. İstifadə etdikdəpreseve_topology = Yanlışarqument geom.sadələşdir, Bal sayını özbaşına aşağı ala bilərəm.

Ancaq bunu tərk etsəm (yənipreserve_topology = Doğru), obyekti nə qədər sadələşdirəcəyinin sərt bir həddi var. Parametri artırdığımda (və bu səbəbdən onu "daha sadə" etdiyimdə), bal sayı ilişib qalır.

ggGoogle Mercator proyeksiyasında (EPSG: 3857) 255726 bal olan MultiPolygondur.

Preserve_topology ilə = False:

(Pdb) pp [(10 ** i, i, num_points_in_polygon (gg.simplify (10 ** i, preserve_topology = False)))) for i (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), (1000000000000000000L, 19, 0)])

Varsayılan preserve_topology ilə = Doğru:

(Pdb) pp [(10 ** i, i, num_points_in_polygon (gg.simplify (10 ** i)))) for i for (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), (1000000000000000000L, 19, 8509)]

Gördüyünüz kimi inadla a ilə də olsa 8509 nöqtədə qalır kütləvi sadələşdirmə param.

Bu ağıllıdır? Düzgün / geosda bir səhv varmı? Topologiyanı sadələşdirmək və qorumaq və özbaşına sadə obyektləri əldə etmək üçün bir yol varmı?


"Çoxbucaqlı üzüklərin digər üzüklərlə kəsişməsinə icazə verməyin" kimi "topologiyanı qoruyun" oxuyun. Bir nöqtədə (vəziyyətinizdəki orijinal nöqtələrin sayı ~ 1/15) alqoritm çoxplikonun bir və ya daha çox hissəsini etibarsız qoymadan daha da sadələşdirə bilməz.

Çox poliqonun bəzi hiyləgər hissələrinin digərlərini ayaqda saxlaması mümkündür. Çoxbucaqlarını ayrıca sadələşdirməyə çalışa bilərsiniz.