Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Add a file demonstrating basic PBF reading in Java #6

Merged
merged 1 commit into from

2 participants

@michaeltandy

When I first saw this project it took me some time to work out how to use it. So that other users can get started more easily, this pull request provides ReadFileExample.java which is what it sounds like.

@scrosby scrosby merged commit 86eb9f4 into from
@scrosby
Owner

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Oct 19, 2012
This page is out of date. Refresh to see the latest.
View
2  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
=========
View
2  pom.xml
@@ -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>
View
BIN  resources/sample.pbf
Binary file not shown
View
86 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!");
+ }
+
+ }
+
+}
Something went wrong with that request. Please try again.