Otomatik etiketleme gerçekten zor bir sorundur, ancak özellik geometrisi o kadar da kötü değildir.
Yerleşimi çoğu zaman yeterli şekilde çalıştırabilseniz bile, istisnalar olabilir. Bunlardan bazılarını fark edeceksiniz ve adresleme yapabilirsiniz. Diğerleri büyük bir harita veya fayans seti yaparken fark etmeyeceksiniz çünkü haritanızın her santimini çeşitli ölçeklerde dökemezsiniz. Hemen her zaman, otomatik olarak yerleştirilmiş bazı etiketleri manuel olarak kartografik bir perspektiften hareket ettirme isteğiniz olacaktır.
Yorumumda önerdiğim gibi, sorunu etiketleme motoru için kolaylaştırırdım. Bu durumda, bunu nehirlerimi bir masa manzarası olarak tanımlayarak * göl sınırlarına saygı göstermek için kırpılmış nehir geometrileriyle yapardım. Bu şekilde, göllerde etiketlenecek nehir özelliği ve etiket çarpışması olmaz.
* Kolaylık ve yalnızca yetkili veri kaynağınızı güncelleme ve müdahaleniz olmadan görünümün kendisinin çalışmasını sağlamak için PostgreSQL / PostGIS gibi bir RDBMS kullanıldığını varsayıyorum. Ancak, özellikleri kırpmak ve silmek için statik dosyalarla açık bir şekilde çalışabilirsiniz, ancak bir haritayı tekrar ziyaret etmeyi planlıyorsanız bunu önermem.
Misal:
Nehirlerin ve göllerin iki şekil dosyasıyla (veritabanı tabloları olabilir) başlayarak, nehirler kesişen göllerle ve tamamen ve güvenle çözülmesi zor etiketleme sorunlarına neden olur:
Shp2pgsql ile ihtiyacınız varsa bunları Postgres'e getirin :
shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb
shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb
Ardından ST_Difference ile bir görünüm tanımlayın :
CREATE OR REPLACE VIEW rivers_clipped AS
SELECT r.id, ST_Difference(r.geom, l.geom) AS geom, r.name
FROM public.rivers AS r, public.lakes AS l;
Görünümü mizanpajınıza ekleyin:
Örneğimdeki sorun kasıtlı olarak üretilmesine rağmen, iki nehir katmanındaki (orijinal ve görünüm) stiller aynıdır ve çizim sırasına göre gölün üstüne yerleştirilir. Göl veya nehir geometrilerini güncellediğinizde, oluşturmayı yenilemekten daha fazlasını yapmanız gerekmez.