diff --git a/README b/README index 5006cda..2e8517b 100644 --- a/README +++ b/README @@ -6,6 +6,8 @@ See http://wiki.openstreetmap.org/wiki/PBF_Format . There is a Java and a C version of the PBF library code here. +For a Java usage example, see src.java\crosby\binary\test\ReadFileExample.java + C Version ========= diff --git a/pom.xml b/pom.xml index 63c6330..12322f5 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,8 @@ ${basedir}/src.java ${basedir}/build + ${basedir}/resources + org.apache.maven.plugins diff --git a/resources/sample.pbf b/resources/sample.pbf new file mode 100644 index 0000000..8a22edf Binary files /dev/null and b/resources/sample.pbf differ diff --git a/src.java/crosby/binary/test/ReadFileExample.java b/src.java/crosby/binary/test/ReadFileExample.java new file mode 100644 index 0000000..082d406 --- /dev/null +++ b/src.java/crosby/binary/test/ReadFileExample.java @@ -0,0 +1,86 @@ +package crosby.binary.test; + +import crosby.binary.*; +import crosby.binary.Osmformat.*; +import crosby.binary.file.*; +import java.io.*; +import java.util.List; + +/** + * Demonstrates how to read a file. Reads sample.pbf from the resources folder + * and prints details about it to the standard output. + * + * @author Michael Tandy + */ +public class ReadFileExample { + + public static void main(String[] args) throws Exception { + InputStream input = ReadFileExample.class.getResourceAsStream("/sample.pbf"); + BlockReaderAdapter brad = new TestBinaryParser(); + new BlockInputStream(input, brad).process(); + } + + private static class TestBinaryParser extends BinaryParser { + + @Override + protected void parseRelations(List rels) { + if (!rels.isEmpty()) + System.out.println("Got some relations to parse."); + Relation r = null; + } + + @Override + protected void parseDense(DenseNodes nodes) { + long lastId=0; + long lastLat=0; + long lastLon=0; + + for (int i=0 ; i nodes) { + for (Node n : nodes) { + System.out.printf("Regular node, ID %d @ %.6f,%.6f\n", + n.getId(),parseLat(n.getLat()),parseLon(n.getLon())); + } + } + + @Override + protected void parseWays(List ways) { + for (Way w : ways) { + System.out.println("Way ID " + w.getId()); + StringBuilder sb = new StringBuilder(); + sb.append(" Nodes: "); + long lastRef = 0; + for (Long ref : w.getRefsList()) { + lastRef+= ref; + sb.append(lastRef).append(" "); + } + sb.append("\n Key=value pairs: "); + for (int i=0 ; i