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.Runtime.Serialization;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using OSM_Graph.Enums;
|
||||||
|
|
||||||
namespace OSM_Graph;
|
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 ulong ID = id;
|
||||||
public readonly List<ulong> NodeIds = nodeIds;
|
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()
|
public string Serialize()
|
||||||
{
|
{
|
||||||
string tags = string.Join(',', Tags.Select(t =>
|
string tags = string.Join(',', Tags.Select(t =>
|
||||||
|
Loading…
Reference in New Issue
Block a user