@Override
public void encode(Geometry geometry, AttributesImpl atts, GMLWriter handler) throws Exception {
if (geometry instanceof LineString) {
LineStringEncoder lineString =
new LineStringEncoder(encoder, LineStringEncoder.LINE_STRING);
lineString.encode((LineString) geometry, atts, handler);
} else if (geometry instanceof Point) {
PointEncoder pt = new PointEncoder(encoder, gmlPrefix == null ? "gml" : gmlPrefix);
pt.encode((Point) geometry, atts, handler);
} else if (geometry instanceof Polygon) {
PolygonEncoder polygon = new PolygonEncoder(encoder, gmlPrefix);
polygon.encode((Polygon) geometry, atts, handler);
} else if (geometry instanceof MultiLineString) {
MultiLineStringEncoder multiLineString = new MultiLineStringEncoder(encoder, gmlPrefix);
multiLineString.encode((MultiLineString) geometry, atts, handler);
} else if (geometry instanceof MultiPoint) {
MultiPointEncoder multiPoint = new MultiPointEncoder(encoder, gmlPrefix);
multiPoint.encode((MultiPoint) geometry, atts, handler);
} else if (geometry instanceof MultiPolygon) {
MultiPolygonEncoder multiPolygon = new MultiPolygonEncoder(encoder, gmlPrefix);
multiPolygon.encode((MultiPolygon) geometry, atts, handler);
} else if (geometry instanceof LinearRing) {
LinearRingEncoder linearRing = new LinearRingEncoder(encoder, gmlPrefix);
linearRing.encode((LinearRing) geometry, atts, handler);
} else {
throw new Exception("Unsupported geometry " + geometry.toString());
}
}
}