자동 레이블링 은 실제로 어려운 문제이지만 피처 지오메트리는 그리 나쁘지 않습니다.
대부분의 시간에 일할 수있는 배치를 할 수 있다고해도 예외가있을 수 있습니다. 이 중 일부는 귀하가 알아 차리고 해결 될 수 있습니다. 큰지도 나 타일셋을 만들 때 눈에 띄지 않는 다른지도는 다양한 크기로지도의 모든 인치에 부어 넣을 수 없기 때문입니다. 거의 항상지도 제작 관점에서 자동으로 배치 된 일부 레이블을 수동으로 이동해야합니다.
내 의견에서 제안했듯이 라벨 엔진에 문제가 더 쉬워졌습니다. 이 경우, 호수 경계를 존중하기 위해 강 지오메트리를 클리핑하여 강을 테이블보기 *로 정의하면됩니다. 그렇게하면 호수 안에 라벨을 붙일 강 특징이없고 라벨 충돌도 없습니다.
* 편의상 신뢰할 수있는 데이터 소스 만 업데이트하고 사용자 개입없이보기 자체를 수행 할 수 있도록 PostgreSQL / PostGIS와 같은 RDBMS를 여기에서 사용한다고 가정합니다. 그러나 정적 파일로 일부 작업을 수행하여 지형지 물을 잘라내거나 삭제할 수도 있지만지도를 다시 방문하려는 경우에는 권장하지 않습니다.
예:
강과 호수의 두 가지 모양 파일 (데이터베이스 테이블 일 수 있음)로 시작하여 강이 호수를 교차하고 완전히 그리고 자신있게 해결하기 어려운 레이블 문제가 발생합니다.
shp2pgsql로 필요한 경우 Postgres에 가져 오십시오 .
shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb
shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb
그런 다음 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;
레이아웃에보기를 추가하십시오.
필자의 예제에서 문제는 의도적으로 제작되었지만 두 강 레이어의 스타일 (원본과보기)은 동일하며 그림 순서대로 호수 위에 배치됩니다. 호수 또는 강 지오메트리를 업데이트 할 때 렌더링을 새로 고치는 것 이상을 수행 할 필요가 없습니다.