diff --git a/OsmToDatabase.Common/TagParsing.cs b/OsmToDatabase.Common/TagParsing.cs new file mode 100644 index 0000000..ba79e74 --- /dev/null +++ b/OsmToDatabase.Common/TagParsing.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using OsmSharp; +using OsmSharp.Tags; + +namespace OsmToDatabase.Common +{ + public static class TagParsing + { + /// + /// Gets the value of a tag with the given key. + /// + /// Node that is being searched for tags. + /// Key of the tag that is being searched for. + /// Value of the tag, or null if it is not found. + public static string? TagValueByKey(this Node node, string tagKey) + { + return node + .Tags.Select(t => t) + .FirstOrDefault(tag => tag is not null && tag.Value.Key == tagKey) + ?.Value; + } + + public static double? TagDoubleValueByKey(this Node node, string tagKey) + { + string? tagValue = node.TagValueByKey(tagKey); + bool success = double.TryParse(tagValue, out double result); + return success ? result : null; + } + } +}