Add Methods to way to GetDirection GetHighwayType, GetMaxSpeed
This commit is contained in:
parent
d769cfda64
commit
207df8dcd7
6
OSM_Graph/Enums/WayDirection.cs
Normal file
6
OSM_Graph/Enums/WayDirection.cs
Normal file
@ -0,0 +1,6 @@
|
||||
namespace OSM_Graph.Enums;
|
||||
|
||||
public enum WayDirection
|
||||
{
|
||||
Forwards, Backwards, Both
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text.RegularExpressions;
|
||||
using OSM_Graph.Enums;
|
||||
|
||||
namespace OSM_Graph;
|
||||
|
||||
@ -8,6 +9,41 @@ public class Way(ulong id, Dictionary<string, string> tags, List<ulong> nodeIds)
|
||||
public readonly ulong ID = id;
|
||||
public readonly List<ulong> NodeIds = nodeIds;
|
||||
|
||||
public WayDirection GetDirection()
|
||||
{
|
||||
if (Tags.TryGetValue("oneway", out string? onewayStr))
|
||||
return onewayStr switch
|
||||
{
|
||||
"yes" => WayDirection.Forwards,
|
||||
"1" => WayDirection.Forwards,
|
||||
"no" => WayDirection.Both,
|
||||
"-1" => WayDirection.Backwards,
|
||||
_ => WayDirection.Both
|
||||
};
|
||||
HighwayType[] impliedTypes = [HighwayType.motorway, HighwayType.motorway_link];
|
||||
if (impliedTypes.Contains(GetHighwayType()))
|
||||
return WayDirection.Forwards;
|
||||
return WayDirection.Both;
|
||||
}
|
||||
|
||||
public HighwayType GetHighwayType()
|
||||
{
|
||||
if (!Tags.TryGetValue("highway", out string? highwayTypeStr))
|
||||
return HighwayType.NONE;
|
||||
if (!Enum.TryParse(highwayTypeStr, out HighwayType highwayType))
|
||||
return HighwayType.NONE;
|
||||
return highwayType;
|
||||
}
|
||||
|
||||
public byte GetMaxSpeed()
|
||||
{
|
||||
if (!Tags.TryGetValue("maxspeed", out string? maxSpeedStr))
|
||||
return 0;
|
||||
if (!byte.TryParse(maxSpeedStr, out byte speed))
|
||||
return 0;
|
||||
return speed;
|
||||
}
|
||||
|
||||
public string Serialize()
|
||||
{
|
||||
string tags = string.Join(',', Tags.Select(t =>
|
||||
|
Loading…
Reference in New Issue
Block a user