Das automatisierte Beschriften ist ein wirklich schweres Problem, aber die Feature-Geometrie ist nicht so schlecht.
Auch wenn das Praktikum die meiste Zeit angemessen funktioniert, kann es Ausnahmen geben. Einige von diesen werden Sie bemerken und möglicherweise ansprechen können. Andere werden Sie beim Erstellen einer großen Karte oder eines Kachelsatzes nicht bemerken, da Sie nicht jeden Zentimeter Ihrer Karte in verschiedenen Maßstäben übergießen können. Fast immer müssen Sie einige automatisch platzierte Etiketten aus kartografischer Sicht manuell verschieben.
Wie ich in meinem Kommentar vorgeschlagen habe, würde ich das Problem für das Etikettierungsmodul erleichtern. In diesem Fall definiere ich meine Flüsse als Tabellenansicht *, wobei die Flussgeometrien abgeschnitten werden, um die Seegrenzen zu berücksichtigen. Auf diese Weise gibt es keine Flussmerkmale in Seen, die gekennzeichnet werden müssen, und keine Kollisionen.
* Ich gehe davon aus, dass Sie hier ein RDBMS wie PostgreSQL / PostGIS verwenden, um die Aktualisierung Ihrer maßgeblichen Datenquelle zu vereinfachen und die Ansicht ohne Ihr Zutun selbst ausführen zu können. Sie können jedoch auch statische Dateien im Voraus bearbeiten, um Features zu schneiden und zu löschen. Ich empfehle dies jedoch nicht, wenn Sie jemals vorhaben, eine Karte erneut aufzurufen.
Beispiel:
Beginnend mit zwei Shapefiles (möglicherweise Datenbanktabellen) von Flüssen und Seen, wobei Flüsse Seen kreuzen und Beschriftungsprobleme verursachen, die sich nur schwer vollständig und sicher lösen lassen:
Bringen Sie diese mit shp2pgsql in Postgres :
shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb
shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb
Definieren Sie dann eine Sicht mit 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;
Fügen Sie die Ansicht Ihrem Layout hinzu:
Obwohl das Problem in meinem Beispiel bewusst hergestellt wurde, sind die Stile in den beiden Flussebenen (Original und Ansicht) identisch und werden in der Zeichenreihenfolge oben auf dem See platziert. Wenn Sie die Geometrien der Seen oder Flüsse aktualisieren, müssen Sie nur das Rendering aktualisieren.