package jeql.std.geom; import java.util.ArrayList; import java.util.List; import jeql.api.function.FunctionClass; import com.vividsolutions.jts.dissolve.LineDissolver; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.PrecisionModel; import com.vividsolutions.jts.geom.util.LineStringExtracter; import com.vividsolutions.jts.noding.snapround.GeometryNoder; import com.vividsolutions.jts.operation.polygonize.Polygonizer; import com.vividsolutions.jts.precision.GeometryPrecisionReducer; public class GeomProcFunction implements FunctionClass { public static Geometry dissolve(Geometry geom) { return LineDissolver.dissolve(geom); } public static Geometry snapRound( Geometry geom, double scaleFactor) { PrecisionModel pm = new PrecisionModel(scaleFactor); Geometry roundedGeom = GeometryPrecisionReducer.reducePointwise(geom, pm); List geomList = new ArrayList(); geomList.add(roundedGeom); GeometryNoder noder = new GeometryNoder(pm); List lines = noder.node(geomList); return geom.getFactory().buildGeometry(lines); } public static Geometry polygonize(Geometry geom) { List lines = LineStringExtracter.getLines(geom); Polygonizer polygonizer = new Polygonizer(); polygonizer.add(lines); return geom.getFactory().buildGeometry(polygonizer.getPolygons()); } }