Skip to content

Commit

Permalink
Java file read demonstration, to help people getting started.
Browse files Browse the repository at this point in the history
  • Loading branch information
michael committed Oct 19, 2012
1 parent 2866955 commit fc795d3
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README
Expand Up @@ -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
=========

Expand Down
2 changes: 2 additions & 0 deletions pom.xml
Expand Up @@ -26,6 +26,8 @@
<sourceDirectory>${basedir}/src.java</sourceDirectory>
<outputDirectory>${basedir}/build</outputDirectory>

<resources><resource><directory>${basedir}/resources</directory></resource></resources>

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
Binary file added resources/sample.pbf
Binary file not shown.
86 changes: 86 additions & 0 deletions 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<Relation> 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.getIdCount() ; i++) {
lastId += nodes.getId(i);
lastLat += nodes.getLat(i);
lastLon += nodes.getLon(i);
System.out.printf("Dense node, ID %d @ %.6f,%.6f\n",
lastId,parseLat(lastLat),parseLon(lastLon));
}
}

@Override
protected void parseNodes(List<Node> 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<Way> 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<w.getKeysCount() ; i++) {
sb.append(getStringById(w.getKeys(i))).append("=")
.append(getStringById(w.getVals(i))).append(" ");
}
System.out.println(sb.toString());
}
}

@Override
protected void parse(HeaderBlock header) {
System.out.println("Got header block.");
}

public void complete() {
System.out.println("Complete!");
}

}

}

0 comments on commit fc795d3

Please sign in to comment.