Osmformat.DenseInfo.Builder bdi = Osmformat.DenseInfo.newBuilder(); serializeMetadataDense(bdi, contents); bi.setDenseinfo(bdi); int lat = mapDegrees(i.getLatitude()); int lon = mapDegrees(i.getLongitude()); bi.addId(id - lastid); lastid = id; bi.addLon(lon - lastlon); lastlon = lon; bi.addLat(lat - lastlat); lastlat = lat; bi.addKeysVals(stable.getIndex(t.getKey())); bi.addKeysVals(stable.getIndex(t.getValue())); bi.addKeysVals(0); // Add delimiter.
return new Builder();
subBuilder.mergeFrom(dense_); dense_ = subBuilder.buildPartial();
PrimitiveGroup.newBuilder() .setDense(DenseNodes.newBuilder() .addId(1001).addId(110).addId(-2000).addId(8889) .addLat(12*10000000).addLat(1500000).addLat(-12*10000000).addLat(-12*10000000) .addLon(-12*10000000).addLon(2500000).addLon(13*10000000).addLon(2*10000000) .addKeysVals(1).addKeysVals(2).addKeysVals(0) .addKeysVals(0) .addKeysVals(2).addKeysVals(3).addKeysVals(4).addKeysVals(5).addKeysVals(0) .addKeysVals(3).addKeysVals(3).addKeysVals(0) ));
@Override public void writeNode(long id, Node node) throws IOException { checkBlockTransition(OSMEntity.Type.NODE); long idDelta = id - prevId; prevId = id; denseNodesBuilder.addId(idDelta); /* Fixed-precision latitude and longitude */ long fixedLat = (long) (node.fixedLat); // TODO are longs necessary? long fixedLon = (long) (node.fixedLon); long fixedLatDelta = fixedLat - prevFixedLat; long fixedLonDelta = fixedLon - prevFixedLon; prevFixedLat = fixedLat; prevFixedLon = fixedLon; denseNodesBuilder.addLat(fixedLatDelta).addLon(fixedLonDelta); /* Tags for a whole dense node block are stored as: key, val, key, val, 0, key, val, key, val, 0 */ if (node.tags != null) { for (OSMEntity.Tag tag : node.tags) { if (tag.value == null) tag.value = ""; int keyCode = stringTable.getCode(tag.key); int valCode = stringTable.getCode(tag.value); denseNodesBuilder.addKeysVals(keyCode); denseNodesBuilder.addKeysVals(valCode); } } denseNodesBuilder.addKeysVals(0); }
/** * <code>optional .OSMPBF.DenseNodes dense = 2;</code> */ @java.lang.SuppressWarnings({"ReferenceEquality"}) private void mergeDense(org.openstreetmap.osmosis.osmbinary.Osmformat.DenseNodes value) { if (value == null) { throw new NullPointerException(); } if (dense_ != null && dense_ != org.openstreetmap.osmosis.osmbinary.Osmformat.DenseNodes.getDefaultInstance()) { dense_ = org.openstreetmap.osmosis.osmbinary.Osmformat.DenseNodes.newBuilder(dense_).mergeFrom(value).buildPartial(); } else { dense_ = value; } bitField0_ |= 0x00000001; } /**
/** * <pre> * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless. * </pre> * * <code>repeated int32 keys_vals = 10 [packed = true];</code> */ public Builder addAllKeysVals( java.lang.Iterable<? extends java.lang.Integer> values) { copyOnWrite(); instance.addAllKeysVals(values); return this; } /**
/** * <pre> * DELTA coded * </pre> * * <code>repeated sint64 lon = 9 [packed = true];</code> */ public Builder setLon( int index, long value) { copyOnWrite(); instance.setLon(index, value); return this; } /**
/** * <pre> * DELTA coded * </pre> * * <code>repeated sint64 lat = 8 [packed = true];</code> */ public Builder addAllLat( java.lang.Iterable<? extends java.lang.Long> values) { copyOnWrite(); instance.addAllLat(values); return this; } /**
/** * <pre> *repeated Info info = 4; * </pre> * * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code> */ public Builder setDenseinfo( org.openstreetmap.osmosis.osmbinary.Osmformat.DenseInfo.Builder builderForValue) { copyOnWrite(); instance.setDenseinfo(builderForValue); return this; } /**
/** * <pre> * DELTA coded * </pre> * * <code>repeated sint64 lon = 9 [packed = true];</code> */ public Builder addAllLon( java.lang.Iterable<? extends java.lang.Long> values) { copyOnWrite(); instance.addAllLon(values); return this; } /**
/** * <pre> * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless. * </pre> * * <code>repeated int32 keys_vals = 10 [packed = true];</code> */ public Builder addKeysVals(int value) { copyOnWrite(); instance.addKeysVals(value); return this; } /**
/** * <pre> * DELTA coded * </pre> * * <code>repeated sint64 lon = 9 [packed = true];</code> */ public Builder addLon(long value) { copyOnWrite(); instance.addLon(value); return this; } /**
/** * <pre> *repeated Info info = 4; * </pre> * * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code> */ public Builder mergeDenseinfo(org.openstreetmap.osmosis.osmbinary.Osmformat.DenseInfo value) { copyOnWrite(); instance.mergeDenseinfo(value); return this; } /**
/** * <pre> *repeated Info info = 4; * </pre> * * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code> */ public Builder setDenseinfo(org.openstreetmap.osmosis.osmbinary.Osmformat.DenseInfo value) { copyOnWrite(); instance.setDenseinfo(value); return this; } /**
/** * <pre> * DELTA coded * </pre> * * <code>repeated sint64 id = 1 [packed = true];</code> */ public Builder setId( int index, long value) { copyOnWrite(); instance.setId(index, value); return this; } /**
/** * <pre> * Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless. * </pre> * * <code>repeated int32 keys_vals = 10 [packed = true];</code> */ public Builder setKeysVals( int index, int value) { copyOnWrite(); instance.setKeysVals(index, value); return this; } /**
/** * <pre> * DELTA coded * </pre> * * <code>repeated sint64 id = 1 [packed = true];</code> */ public Builder addAllId( java.lang.Iterable<? extends java.lang.Long> values) { copyOnWrite(); instance.addAllId(values); return this; } /**
/** * <pre> * DELTA coded * </pre> * * <code>repeated sint64 lon = 9 [packed = true];</code> */ public Builder clearLon() { copyOnWrite(); instance.clearLon(); return this; }
/** * <pre> *repeated Info info = 4; * </pre> * * <code>optional .OSMPBF.DenseInfo denseinfo = 5;</code> */ public Builder clearDenseinfo() { copyOnWrite(); instance.clearDenseinfo(); return this; }