Is it possible to place labels inside specified polygons in QGIS?

Case: I have a material which consist of water areas and various small islands. They are separated shapefiles. I would like to label the islands so that the label is placed always on the water area (-shapefile) next to the island. The islands are not equal in shape and size so the normal x and y based placement method is out of the question.

  • Make centroid layer and then move labels where you want.
    – Frodo
    Commented Feb 22, 2017 at 6:41
  • 1
    use the EasyLabel plugin to move the labels as required?
    – Ian Turton
    Commented Feb 22, 2017 at 9:02

2 Answers 2


I think one way is to use geometry functions on data defined placement.

Placement -> Data defined -> Coordinate x -> edit -> x_max( $geometry ) and same Coordinate y -> edit -> y(centroid($geometry)) OR maybe better: y_max( $geometry )


Alternatively, with following Placement parameters:

  • Placement: Using perimeter
  • Allowed positions: Below line & Line orientation dependent position
  • Distance: 5.0 mm (for bigger text size)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.