Ticket #11169: fix_pbfwriter_v2.patch
File fix_pbfwriter_v2.patch, 5.5 KB (added by , 9 years ago) |
---|
-
pbf/src/org/openstreetmap/josm/plugins/pbf/io/PbfWriter.java
97 97 stable.incr(tag.getKey()); 98 98 stable.incr(tag.getValue()); 99 99 } 100 if (!omit_metadata && i.getUser() != null) { 101 stable.incr(i.getUser().getName()); 100 if (!omit_metadata) { 101 String userId = i.getUser() != null ? i.getUser().getName() : null; 102 if (userId == null) 103 userId = ""; 104 stable.incr(userId); 102 105 } 103 106 } 104 107 } … … 116 119 for (OsmPrimitive e : entities) { 117 120 118 121 int uid = e.getUser() == null ? -1 : (int) e.getUser().getId(); 119 int userSid = stable.getIndex(e.getUser() == null ? "" : e.getUser().getName()); 122 String userId = e.getUser() != null ? e.getUser().getName() : null; 123 if (userId == null) 124 userId = ""; 125 int userSid = stable.getIndex(userId); 120 126 int timestamp = (int) (e.getTimestamp().getTime() / date_granularity); 121 127 int version = e.getVersion(); 122 128 long changeset = e.getChangesetId(); … … 186 192 } 187 193 188 194 for (Node i : contents) { 189 long id = i.get Id();195 long id = i.getUniqueId(); 190 196 bi.addId(id - lastid); 191 197 lastid = id; 192 198 LatLon coor = i.getCoor(); … … 224 230 StringTable stable = getStringTable(); 225 231 Osmformat.PrimitiveGroup.Builder builder = Osmformat.PrimitiveGroup.newBuilder(); 226 232 for (Node i : contents) { 227 long id = i.get Id();233 long id = i.getUniqueId(); 228 234 LatLon coor = i.getCoor(); 229 235 int lat = mapDegrees(coor.lat()); 230 236 int lon = mapDegrees(coor.lon()); … … 257 263 Osmformat.PrimitiveGroup.Builder builder = Osmformat.PrimitiveGroup.newBuilder(); 258 264 for (Way i : contents) { 259 265 Osmformat.Way.Builder bi = Osmformat.Way.newBuilder(); 260 bi.setId(i.get Id());266 bi.setId(i.getUniqueId()); 261 267 long lastid = 0; 262 268 for (Node j : i.getNodes()) { 263 long id = j.get Id();269 long id = j.getUniqueId(); 264 270 bi.addRefs(id - lastid); 265 271 lastid = id; 266 272 } … … 299 305 Osmformat.PrimitiveGroup.Builder builder = Osmformat.PrimitiveGroup.newBuilder(); 300 306 for (Relation i : contents) { 301 307 Osmformat.Relation.Builder bi = Osmformat.Relation.newBuilder(); 302 bi.setId(i.get Id());308 bi.setId(i.getUniqueId()); 303 309 RelationMember[] arr = new RelationMember[i.getMembers().size()]; 304 310 i.getMembers().toArray(arr); 305 311 long lastid = 0; 306 312 for (RelationMember j : i.getMembers()) { 307 long id = j.getMember().get Id();313 long id = j.getMember().getUniqueId(); 308 314 bi.addMemids(id - lastid); 309 315 lastid = id; 310 316 if (j.getType() == OsmPrimitiveType.NODE) { … … 476 482 477 483 public void process(DataSet ds) { 478 484 processor.processSources(ds.dataSources); 479 for (Node n : ds.getNodes()) { 480 processor.processNode(n); 481 } 482 for (Way w : ds.getWays()) { 483 processor.processWay(w); 484 } 485 for (Relation r : ds.getRelations()) { 486 processor.processRelation(r); 487 } 485 ds.getNodes().stream().sorted((n1, n2) -> Long.compare(n1.getUniqueId(), n2.getUniqueId())) 486 .filter(n -> n.getCoor() != null).forEach((n) -> processor.processNode(n)); 487 ds.getWays().stream().sorted((w1, w2) -> Long.compare(w1.getUniqueId(), w2.getUniqueId())) 488 .filter(w -> w.getNodesCount() > 0).forEach((w) -> processor.processWay(w)); 489 ds.getRelations().stream().sorted((r1, r2) -> Long.compare(r1.getUniqueId(), r2.getUniqueId())) 490 .filter(r -> r.getMembersCount() > 0).forEach((r) -> processor.processRelation(r)); 488 491 } 489 492 490 493 public void complete() { -
pbf/test/unit/org/openstreetmap/josm/plugins/pbf/io/PbfExporterTest.java
32 32 * @throws Exception if an error occurs 33 33 */ 34 34 @Test 35 @Ignore("TODO: to fix")36 35 public void testTicket11169() throws Exception { 37 36 try (InputStream is = Compression.ZIP.getUncompressedInputStream( 38 37 new FileInputStream(TestUtils.getRegressionDataFile(11169, "Portsmouth_Area.osm.zip")))) {