package org.geotools.geojson;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
//import org.apache.commons.io.output.NullOutputStream;
import org.geotools.data.FeatureSource;
//import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.geotools.geojson.feature.FeatureJSON;
import org.geotools.geojson.geom.GeometryJSON;
import org.opengis.feature.simple.SimpleFeature;
import com.vividsolutions.jts.geom.Geometry;
public class Benchmark {
public static void main(String[] args) throws Exception {
benchmarkFeatureCollectionParse(new File("/Users/jdeolive/texas_roads.json"));
//benchmarkFeatureCollectionParse(new File("/Users/jdeolive/world_borders.json"));
//FeatureSource data = loadData();
//bencharkGeometryEncode(data);
//bencharkGeometryEncode(data);
//bencharkGeometryEncode(data);
}
static void benchmarkFeatureCollectionParse(File source) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader(source));
FeatureJSON fjson = new FeatureJSON();
FeatureIterator<SimpleFeature> it = fjson.streamFeatureCollection(reader);
int count = 0;
long t1 = System.currentTimeMillis();
while(it.hasNext()) {
// SimpleFeature f = it.next();
// System.out.println(f.getID());
// System.out.println(f.getDefaultGeometry());
//
// for (int i = 0; i < f.getAttributeCount(); i++) {
// System.out.println("\t" + f.getFeatureType().getDescriptor(i).getLocalName() + ": " + f.getAttribute(i));
// }
if (count++ % 100000 == 0) {
System.out.println(count);
}
}
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
it.close();
reader.close();
}
static void bencharkGeometryEncode(FeatureSource data) throws Exception {
GeometryJSON gjson = new GeometryJSON();
OutputStream out = System.out;/*new NullOutputStream();*/
Writer writer = new OutputStreamWriter(out);
FeatureCollection features = data.getFeatures();
FeatureIterator it = features.features();
long t1 = System.currentTimeMillis();
while(it.hasNext()) {
SimpleFeature f = (SimpleFeature) it.next();
gjson.write((Geometry) f.getDefaultGeometry(), writer);
}
writer.flush();
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
features.close(it);
}
static FeatureSource loadData() throws Exception {
/*ShapefileDataStore ds = new ShapefileDataStore(new File("/Users/jdeolive/Downloads/data/world_borders.shp").toURL());
return ds.getFeatureSource();*/
return null;
}
}