package se.kodapan.osm.sweden;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.kodapan.osm.domain.root.Root;
import se.kodapan.osm.parser.xml.instantiated.InstantiatedOsmXmlParser;
import java.io.*;
import java.util.zip.GZIPInputStream;
/**
* @author kalle
* @since 2013-09-25 6:19 PM
*/
public class LoadSweden {
private static Logger log = LoggerFactory.getLogger(LoadSweden.class);
public static void main(String[] args) throws Exception {
ObjectInputStream ois = new ObjectInputStream(new GZIPInputStream(new FileInputStream(new File("target/sweden.root.raw.gz"))));
Root root = (Root)ois.readObject();
ois.close();
memUse();
System.currentTimeMillis();
}
public static void factory() throws Exception {
final InstantiatedOsmXmlParser parser = new InstantiatedOsmXmlParser();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(10000);
log.debug(parser.getRoot().getNodes().size() + " nodes, " + parser.getRoot().getWays().size() + " ways, " + parser.getRoot().getRelations().size() + " relations.");
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}
});
thread.setDaemon(true);
thread.start();
parser.parse(new InputStreamReader(new FileInputStream("/tmp/sweden-latest.osm"), "UTF8"));
memUse();
System.currentTimeMillis();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("target/sweden.root.raw")));
oos.writeObject(parser.getRoot());
oos.close();
}
private static void memUse() {
Runtime rt = Runtime.getRuntime();
System.gc();
long usedMB = (rt.totalMemory() - rt.freeMemory()) / 1024 / 1024;
System.out.println("MB usage " + usedMB);
}
}