# Label Lower Left Corner Of Square Polygon SLD and Geoserver

I would like to label the lower left corner of rectangular shaped polygons in geoserver I have looked the the functions and I am wondering how I would set up variable to perform the calculation for anchor point

Here are the filter functions I was looking at https://docs.geoserver.org/latest/en/user/filter/function_reference.html

I am thinking I could use the Geometry:boundary function somehow but I cannot figure out how to get the corner geometry. Is this possible If you can make sure during preprocessing/querying your data that the lower left corner is always the n-th (e.g. first) point in the geometry data, you could use the `pointN` function to get this point for labeling.

Not the cleanest solution, but should work...

I think you may need to write a custom function for this, something like this should work (seems mostly right with my test cases):

``````public class LowerLeftFunction implements Function {
static FunctionName NAME = new FunctionNameImpl("lowerleft", Polygon.class,
FunctionNameImpl.parameter("polygon", Polygon.class));

....

@Override
public <T> T evaluate(Object object, Class<T> context) {
Expression polyExp = parameters.get(0);
Polygon poly = polyExp.evaluate(object, Polygon.class);
LineString ext = poly.getExteriorRing();
Coordinate ll = new Coordinate(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY);
for (Coordinate c : ext.getCoordinates()) {
if (c.x <= ll.x && c.y <= ll.y) {
ll = c;
}
}
//System.err.println(poly);
Point pt = poly.getFactory().createPoint(ll);
//System.err.println(pt);
return Converters.convert(pt, context);
}
....
}
``````

I'll put the whole thing up on github when it has some tests and I get a chance later.

• Awesome, I tried pointN and endPoint and got mixed results creating a point on a corner and then labeling the point. The nth point is unfortunately in a different location on each polygon due to boundary irregularities. – Gary Lester Dec 8 '18 at 8:47