package com.revolsys.geometry.test.old.perf.dissolve;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import com.revolsys.geometry.dissolve.LineDissolver;
import com.revolsys.geometry.graph.linemerge.LineMerger;
import com.revolsys.geometry.model.Geometry;
import com.revolsys.geometry.model.GeometryFactory;
import com.revolsys.geometry.model.LineString;
import com.revolsys.geometry.test.old.algorithm.InteriorPointTest;
import com.revolsys.geometry.test.old.perf.PerformanceTestCase;
import com.revolsys.geometry.test.old.perf.PerformanceTestRunner;
import com.revolsys.geometry.wkb.ParseException;
public class LineDissolvePerfTest extends PerformanceTestCase {
public static void main(final String args[]) {
PerformanceTestRunner.run(LineDissolvePerfTest.class);
}
Collection data;
public LineDissolvePerfTest(final String name) {
super(name);
setRunSize(new int[] {
1, 2, 3, 4, 5
});
setRunIterations(1);
}
private Geometry dissolveLines(final Collection lines) {
final Geometry linesGeom = extractLines(lines);
return dissolveLines(linesGeom);
}
private Geometry dissolveLines(final Geometry lines) {
final Geometry dissolved = lines.union();
final List<LineString> mergedColl = LineMerger.merge(dissolved);
final Geometry merged = lines.getGeometryFactory().buildGeometry(mergedColl);
return merged;
}
Geometry extractLines(final Collection geoms) {
GeometryFactory factory = null;
final List lines = new ArrayList();
for (final Iterator i = geoms.iterator(); i.hasNext();) {
final Geometry g = (Geometry)i.next();
if (factory == null) {
factory = g.getGeometryFactory();
}
lines.addAll(g.getGeometryComponents(LineString.class));
}
return factory.buildGeometry(geoms);
}
public void runBruteForce_World() {
final Geometry result = dissolveLines(this.data);
// System.out.println(Memory.allString());
}
public void runDissolver_World() {
final LineDissolver dis = new LineDissolver();
dis.add(this.data);
final Geometry result = dis.getResult();
// System.out.println();
// System.out.println(Memory.allString());
}
@Override
public void setUp() throws IOException, ParseException {
// System.out.println("Loading data...");
this.data = InteriorPointTest.getTestGeometries("world.wkt");
}
}