Pelabelan otomatis adalah masalah yang sangat sulit, tetapi geometri fitur tidak terlalu buruk.
Bahkan jika Anda bisa mendapatkan penempatan untuk bekerja secara memadai sebagian besar waktu, ada kemungkinan ada pengecualian. Beberapa di antaranya akan Anda perhatikan dan mungkin bisa diatasi. Orang lain yang tidak akan Anda perhatikan ketika membuat peta besar atau tileset karena Anda tidak bisa menuangkan setiap inci peta Anda di berbagai skala. Hampir selalu Anda akan memiliki keinginan untuk memindahkan beberapa label yang ditempatkan secara otomatis secara manual, dari perspektif kartografi.
Seperti yang saya sarankan dalam komentar saya, saya akan membuat masalah lebih mudah untuk mesin pelabelan. Dalam hal ini, saya akan melakukan ini dengan mendefinisikan sungai saya sebagai tampilan tabel *, dengan geometri sungai terpotong untuk menghormati batas danau. Dengan begitu, tidak ada fitur sungai di dalam danau untuk diberi label, dan tidak ada tabrakan label.
* Saya berasumsi penggunaan RDBMS di sini, seperti PostgreSQL / PostGIS, untuk kenyamanan dan kemampuan untuk hanya memperbarui sumber data Anda yang berwibawa dan memiliki tampilan bekerja sendiri tanpa campur tangan Anda. Tetapi Anda juga dapat melakukan beberapa pekerjaan di muka dengan file statis untuk klip dan menghapus fitur, tetapi saya tidak merekomendasikan ini jika Anda pernah berencana untuk mengunjungi kembali peta.
Contoh:
Dimulai dengan dua shapefile (bisa berupa tabel basis data) sungai dan danau, dengan sungai memotong danau dan menyebabkan masalah pelabelan yang sulit diselesaikan sepenuhnya dan dengan percaya diri:
Bawa ini ke Postgres jika Anda perlu dengan shp2pgsql :
shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb
shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb
Kemudian tentukan tampilan dengan ST_Difference :
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;
Tambahkan tampilan ke tata letak Anda:
Meskipun masalah dalam contoh saya sengaja dibuat, gaya di dua lapisan sungai (asli dan tampilan) adalah sama, dan mereka ditempatkan di atas danau dalam urutan gambar. Saat Anda memperbarui geometri danau atau sungai, Anda tidak perlu melakukan lebih dari sekadar menyegarkan rendering.