using System.Text.Json.Serialization; namespace OSMDatastructure.Graph; [Serializable] public class OsmNode { public ulong nodeId { get; } public HashSet edges { get; set; } public Coordinates coordinates { get; } public OsmNode(ulong nodeId, float lat, float lon) { this.nodeId = nodeId; edges = new(); coordinates = new Coordinates(lat, lon); } [JsonConstructor] public OsmNode(ulong nodeId, Coordinates coordinates) { this.nodeId = nodeId; edges = new(); this.coordinates = coordinates; } public OsmEdge? GetEdgeToNode(OsmNode n) { HashSet e = edges.Where(edge => edge.neighborId == n.nodeId).ToHashSet(); if (e.Count > 0) return e.First(); return null; } public override bool Equals(object? obj) { return obj != null && obj.GetType() == this.GetType() && ((OsmNode)obj).nodeId == this.nodeId; } public override string ToString() { return $"Node id:{nodeId} coordinates:{coordinates} edges-count:{edges.Count}"; } }