/// <summary> /// Encodes an OsmSharp-node into a PBF-node. /// </summary> /// <returns></returns> public static OsmSharp.Osm.PBF.Node EncodeNode(PrimitiveBlock block, Dictionary <string, int> reverseStringTable, OsmSharp.Osm.PBF.Node pbfNode, Osm.Node node) { pbfNode.id = node.Id.Value; pbfNode.info = new Info(); pbfNode.info.version = 0; if (node.ChangeSetId.HasValue) { pbfNode.info.changeset = node.ChangeSetId.Value; } else { pbfNode.info.changeset = 0; } if (node.TimeStamp.HasValue) { pbfNode.info.timestamp = Encoder.EncodeTimestamp(node.TimeStamp.Value, block.date_granularity); } else { pbfNode.info.timestamp = 0; } if (node.UserId.HasValue) { pbfNode.info.uid = (int)node.UserId.Value; } else { pbfNode.info.uid = 0; } pbfNode.info.user_sid = Encoder.EncodeString(block, reverseStringTable, node.UserName); if (node.Version.HasValue) { pbfNode.info.version = (int)node.Version.Value; } else { pbfNode.info.version = 0; } pbfNode.lat = Encoder.EncodeLatLon(node.Latitude.Value, block.lat_offset, block.granularity); pbfNode.lon = Encoder.EncodeLatLon(node.Longitude.Value, block.lon_offset, block.granularity); if (node.Tags != null) { foreach (var tag in node.Tags) { pbfNode.keys.Add((uint)Encoder.EncodeString(block, reverseStringTable, tag.Key)); pbfNode.vals.Add((uint)Encoder.EncodeString(block, reverseStringTable, tag.Value)); } } else { pbfNode.keys.Clear(); pbfNode.vals.Clear(); } return(pbfNode); }
public static Node EncodeNode(PrimitiveBlock block, Dictionary <string, int> reverseStringTable, Node pbfNode, OsmSharp.Osm.Node node) { pbfNode.id = node.Id.Value; pbfNode.info = new Info(); pbfNode.info.version = 0; pbfNode.info.changeset = !node.ChangeSetId.HasValue ? 0L : node.ChangeSetId.Value; DateTime?timeStamp = node.TimeStamp; if (timeStamp.HasValue) { Info info = pbfNode.info; timeStamp = node.TimeStamp; int num = Encoder.EncodeTimestamp(timeStamp.Value, (long)block.date_granularity); info.timestamp = num; } else { pbfNode.info.timestamp = 0; } long?userId = node.UserId; if (userId.HasValue) { Info info = pbfNode.info; userId = node.UserId; int num = (int)userId.Value; info.uid = num; } else { pbfNode.info.uid = 0; } pbfNode.info.user_sid = Encoder.EncodeString(block, reverseStringTable, node.UserName); pbfNode.info.version = !node.Version.HasValue ? 0 : (int)node.Version.Value; pbfNode.lat = Encoder.EncodeLatLon(node.Latitude.Value, block.lat_offset, (long)block.granularity); pbfNode.lon = Encoder.EncodeLatLon(node.Longitude.Value, block.lon_offset, (long)block.granularity); if (node.Tags != null) { foreach (Tag tag in node.Tags) { pbfNode.keys.Add((uint)Encoder.EncodeString(block, reverseStringTable, tag.Key)); pbfNode.vals.Add((uint)Encoder.EncodeString(block, reverseStringTable, tag.Value)); } } else { pbfNode.keys.Clear(); pbfNode.vals.Clear(); } return(pbfNode); }