package uk.me.parabola.mkgmap.reader.osm.boundary; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.Map.Entry; import uk.me.parabola.mkgmap.reader.osm.Tags; public class BoundaryLister { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String boundsdir = args[0]; String outDirName = boundsdir; if (args.length >= 2) outDirName = args[1]; File outDir = new File (outDirName); if (outDir.exists() ){ if (outDir.isDirectory() == false){ System.err.println("target is not a directory, output is written to bounds.txt"); outDir = new File("."); } } List<String> bndFileNames = BoundaryUtil.getBoundaryDirContent(boundsdir); PrintWriter out = new PrintWriter(new File(outDir,"bounds.txt"), "UTF-8"); // create an empty search bbox to speedup reading of the bnd file(s) //uk.me.parabola.imgfmt.app.Area searchBbox = new uk.me.parabola.imgfmt.app.Area (0,0,0,0); for (String bndFile : bndFileNames) { out.println(bndFile + "****************"); BoundaryQuadTree bqt = BoundaryUtil.loadQuadTree(boundsdir, bndFile); if (bqt == null) break; Map<String, Tags> map = bqt.getTagsMap(); for ( Entry<String, Tags> entry: map.entrySet()) { TreeMap<String,String> btree = new TreeMap<String, String>(); String line = bndFile+ ":" + entry.getKey(); Iterator<Entry<String,String>> tagIter = entry.getValue().entryIterator(); while (tagIter.hasNext()) { Entry<String,String> tag = tagIter.next(); btree.put(tag.getKey(),tag.getValue()); } // print sorted tags for (Entry<String,String> e : btree.entrySet()){ out.println(line + ";" + e); } } } out.close(); } }