@szekerest reported instances where labeling where thin, simple polygons (think parcels) results in label points outside a polygon. It happens because a edge/distance computation in msPolygonLabelPoint() done after a center of gravity computation drops the label point computation into a second algorithm that uses scan lines to place the label. There is a bug in that second computation that can result in bad label placement.
The fix is easy, simply uncomment a couple of lines in that function, look for:
/* lp->y = y; */
/* lp->x = x; */
and the issue is resolved. In cases like this it might be even better to skip the distance check or at least make that more robust, but that's another ticket. I tried allowing a configuration via a layer processing option but since label placement is independent of layer properties it's not trivial to make that value available, especially with MapScript.
Fixed label placement computation issue with simple, thin polygons. (#…
pull request in #5235
update for mapserver/mapserver#5234
Fixed label placement computation issue with thin polygons. (#5234)
applied to branch-6-4 in 078a6a3 , merged into branch-7-0