/** Note that in many PBF files this function is never called because all nodes are dense. */ @Override protected void parseNodes(List<Osmformat.Node> nodes) { try { for (Osmformat.Node n : nodes) { if (nodeCount++ % 10000000 == 0) { LOG.info("node {}", human(nodeCount)); } Node node = new Node(parseLat(n.getLat()), parseLon(n.getLon())); for (int k = 0; k < n.getKeysCount(); k++) { String key = getStringById(n.getKeys(k)); String val = getStringById(n.getVals(k)); if (retainTag(key)) node.addTag(key, val); } entitySink.writeNode(n.getId(), node); } } catch (IOException ex) { LOG.error("An I/O exception occurred in the OSM entity sink."); ex.printStackTrace(); } }
@Override protected void parseNodes(List<Osmformat.Node> nodes) { for (Osmformat.Node i : nodes) { List<Tag> tags = new ArrayList<Tag>(); for (int j = 0; j < i.getKeysCount(); j++) { tags.add(new Tag(getStringById(i.getKeys(j)), getStringById(i.getVals(j)))); } // long id, int version, Date timestamp, OsmUser user, // long changesetId, Collection<Tag> tags, // double latitude, double longitude Node tmp; long id = i.getId(); double latf = parseLat(i.getLat()), lonf = parseLon(i.getLon()); if (i.hasInfo()) { Osmformat.Info info = i.getInfo(); tmp = new Node(new CommonEntityData(id, info.getVersion(), getDate(info), getUser(info), info.getChangeset(), tags), latf, lonf); } else { tmp = new Node(new CommonEntityData(id, NOVERSION, NODATE, OsmUser.NONE, NOCHANGESET, tags), latf, lonf); } sink.process(new NodeContainer(tmp)); } }
/** * <pre> * Parallel arrays. * </pre> * * <code>repeated uint32 keys = 2 [packed = true];</code> */ @java.lang.Override public int getKeysCount() { return instance.getKeysCount(); } /**