package maps.convert;
import maps.MapWriter;
import maps.osm.OSMMap;
import maps.osm.OSMMapViewer;
import maps.osm.OSMException;
import maps.gml.GMLMap;
import maps.gml.view.GMLMapViewer;
import maps.convert.osm2gml.Convertor;
import maps.gml.formats.RobocupFormat;
import org.dom4j.DocumentException;
import java.awt.GridLayout;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import java.io.File;
import java.io.IOException;
/**
This class converts maps from one format to another.
*/
public final class Convert {
// Nodes that are close are deemed to be co-located.
private static final double NEARBY_NODE_THRESHOLD = 0.000001;
private static final int PROGRESS_WIDTH = 200;
private static final int PROGRESS_HEIGHT = 10;
private static final int VIEWER_SIZE = 500;
private static final int STATUS_WIDTH = 500;
private static final int STATUS_HEIGHT = 10;
private static final int MARGIN = 4;
// private ShapeDebugFrame debug;
// private List<ShapeDebugFrame.ShapeInfo> allOSMNodes;
// private List<ShapeDebugFrame.ShapeInfo> allGMLNodes;
private Convert() {
}
/**
Run the map convertor.
@param args Command line arguments: osm-mapname gml-mapname.
*/
public static void main(String[] args) {
if (args.length < 2) {
System.out.println("Usage: Convert <osm-mapname> <gml-mapname>");
return;
}
try {
OSMMap osmMap = readOSMMap(args[0]);
OSMMapViewer osmViewer = new OSMMapViewer(osmMap);
Convertor convert = new Convertor();
GMLMap gmlMap = convert.convert(osmMap);
MapWriter.writeMap(gmlMap, args[1], RobocupFormat.INSTANCE);
GMLMapViewer gmlViewer = new GMLMapViewer(gmlMap);
JFrame frame = new JFrame("Convertor");
JPanel main = new JPanel(new GridLayout(1, 2));
osmViewer.setPreferredSize(new Dimension(VIEWER_SIZE, VIEWER_SIZE));
gmlViewer.setPreferredSize(new Dimension(VIEWER_SIZE, VIEWER_SIZE));
osmViewer.setBorder(BorderFactory.createTitledBorder("OSM map"));
gmlViewer.setBorder(BorderFactory.createTitledBorder("GML map"));
main.add(osmViewer);
main.add(gmlViewer);
frame.setContentPane(main);
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
// CHECKSTYLE:OFF:IllegalCatch
catch (Exception e) {
e.printStackTrace();
}
// CHECKSTYLE:ON:IllegalCatch
}
private static OSMMap readOSMMap(String file) throws OSMException, IOException, DocumentException {
File f = new File(file);
return new OSMMap(f);
}
}