Bu, önceki sorudan bir takip . Yeni bir PostGIS kullanıcısı olduğumu göreceksiniz.
Verilerimdeki topolojinin geçerliliğine baktım ve toprak örtüsü (çokgen) veri kümesinde yaklaşık 1700 topoloji sorunu buldum. Bunların hepsi "Ring Self_intersection".
Paul Ramsay'ın bu sunumdaki bazı yararlı bilgileri kullanarak (sayfa 20), verilerimi buna göre arabelleğe almaya çalıştım:
UPDATE schema.data SET the_geom = buffer (the_geom, 0.0) NEREDE geçersiz (the_geom) = yanlış ve geçersiz (buffer (the_geom, 0.0)) = true;
Ama cevabı alıyorum:
DİKKAT: Halka veya kesişme noktasında veya yakınında (düzenlenmiş) HATA: "sgm_buffer" ilişkisi için yeni satır, "enforce_geotype_the_geom" kontrol sınırlamasını ihlal ediyor
********** Hata **********
HATA: "sgm_buffer" ilişkisi için yeni satır, "enforce_geotype_the_geom" denetim kısıtlamasını ihlal ediyor SQL durumu: 23514
Ayrıca sadece denedim:
GÜNCELLEME csgn.sgm_buffer SET the_geom = buffer (the_geom, 0.0)
ve Al:
HATA: "sgm_buffer" ilişkisi için yeni satır, "enforce_geotype_the_geom" kontrol kısıtlamasını ihlal ediyor
********** Hata **********
HATA: "sgm_buffer" ilişkisi için yeni satır, "enforce_geotype_the_geom" denetim kısıtlamasını ihlal ediyor SQL durumu: 23514
Öyleyse bu tampon tekniğinin sorunlarım üzerinde çalışmayacağını düşünüyor muyum? Yoksa yanlış bir şey mi yapıyorum?
Bay Ramsay daha sonra "8 rakamı" çokgenleri ele almak için ek bir teknik önermek üzere aynı belgede devam etmektedir. Tamamen nasıl kod tam olarak (ya da ne yaptığını ve bana yardımcı olup olmadığını) yazmak nasıl anlamıyorum:
ST_BuildArea SEÇİN (ST_Union ('KÜÇÜK BOŞ', ST_ExteriorRing ('POLYGON ((...))'
Peki .... kimse yardım edebilir mi? Bu, PostGIS'teki sıkı zaman çizelgelerim ve sınırlı becerilerimle gerçek bir kabus olduğunu kanıtlıyor.
ST_Multi()
Tüm çokgenleri MULTIPOLYGON
s olmaya zorlamanız gerekebilir (bu bir varsayımdır)