protected override Node CreateNode(Track track, Segment segment, Osm.Node node, int x, int y) { Node n = new Node(track, segment, node) { MapX = x, MapY = y }; if (!segment.Name.Equals(segment.Ref)) { n.Name = $"{segment.Name} ({segment.Ref})"; } n.Prefab = "Highway"; if (segment.Lanes == 2) { n.Prefab = "Rural Highway"; } if (segment.IsTunnel) { n.Prefab += " Tunnel"; } if (segment.IsBridge) { n.Prefab += " Bridge"; } return(n); }
public override int Build() { Tracks.Clear(); Track track = new Track(++trackId, Tracktype.Airline); Node node; Osm.Segment segment = new Osm.Segment(); segment.Tags.Add("ref", "North/South connection"); Osm.Node osmNode; segment.Id = 1; // make a track with segment size of 96 meter. (180 segments North/South) for (int y = -MapSize / 2; y <= MapSize / 2; y += 96) { osmNode = new Osm.Node(); osmNode.Lat = GeoTools.DistanceToLat(lat, y); osmNode.Lon = lon; node = CreateNode(track, segment, osmNode, 0, y); track.Nodes.Add(node); } Tracks.Add(track); return(0); }
/// <summary> /// Adds a node. /// </summary> public override void AddNode(Osm.Node node) { _currentEntities.Add(node); if (_currentEntities.Count > 8000) { this.FlushBlock(); } }
public Node(Track track, Osm.Segment segment, Osm.Node node) { Track = track; Segment = segment; OsmNode = node; Name = Segment.Name; }
protected override Node CreateNode(Track track, Segment segment, Osm.Node node, int x, int y) { return(new Node(track, segment, node) { MapX = x, MapY = y, Elevation = -10, Width = 60 }); }
protected override Node CreateNode(Track track, Segment segment, Osm.Node node, int x, int y) { return(new Node(track, segment, node) { MapX = x, MapY = y, Elevation = 1100, Prefab = "Airplane Path" }); }
/// <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); }
/// <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, Osm.Node node) { var pbfNode = new OsmSharp.Osm.PBF.Node(); Encoder.EncodeNode(block, reverseStringTable, pbfNode, node); return(pbfNode); }
protected abstract Node CreateNode(Track track, Segment segment, Osm.Node node, int x, int y);