Repository: SixLabors/ImageSharp

Issue:
Support for GPSHPositioningError tag?
### Prerequisites

- [X] I have written a descriptive issue title
- [X] I have verified that I am running the latest version of ImageSharp
- [X] I have verified if the problem exist in both `DEBUG` and `RELEASE` mode
- [X] I have searched [open](https://github.com/SixLabors/ImageSharp/issues) and [closed](https://github.com/SixLabors/ImageSharp/issues?q=is%3Aissue+is%3Aclosed) issues to ensure it has not already been reported

### ImageSharp version

3.0.2

### Other ImageSharp packages and versions

None

### Environment (Operating system, version and so on)

windows, android, ios

### .NET Framework version

7

### Description

Is Support for GPSHPositioningError tag present? if not, can we include that.

### Steps to Reproduce

Read exif image which has GPSHPositioningError.  unable to read or write the tag.

### Images

_No response_


Hints:
Hi @prabhavmehra  

Just a heads up, feature requests should be made via Discussion channels not raised as issues. 

You're more than welcome to submit a PR if you feel like adding the missing tag. The relevant information about the tags backing structure is here. 

https://exiftool.org/TagNames/GPS.html
I can have a look at adding this one, is it just this one tag that is missing or are there more GPS related tags that should be included?

EDIT:

Seems like they are all there except for this one.

Patch:
diff --git a/src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTag.Rational.cs b/src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTag.Rational.cs
index 96603b182a..e4fe13fe57 100644
--- a/src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTag.Rational.cs
+++ b/src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTag.Rational.cs
@@ -165,4 +165,9 @@ public abstract partial class ExifTag
     /// Gets the GPSDestDistance exif tag.
     /// </summary>
     public static ExifTag<Rational> GPSDestDistance { get; } = new ExifTag<Rational>(ExifTagValue.GPSDestDistance);
+
+    /// <summary>
+    /// Gets the GPSHPositioningError exif tag.
+    /// </summary>
+    public static ExifTag<Rational> GPSHPositioningError { get; } = new ExifTag<Rational>(ExifTagValue.GPSHPositioningError);
 }
diff --git a/src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTagValue.cs b/src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTagValue.cs
index 3788a1296f..56e8a3ffd1 100644
--- a/src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTagValue.cs
+++ b/src/ImageSharp/Metadata/Profiles/Exif/Tags/ExifTagValue.cs
@@ -1691,6 +1691,11 @@ internal enum ExifTagValue
     /// </summary>
     GPSDifferential = 0x001E,
 
+    /// <summary>
+    /// GPSHPositioningError
+    /// </summary>
+    GPSHPositioningError = 0x001F,
+
     /// <summary>
     /// Used in the Oce scanning process.
     /// Identifies the scanticket used in the scanning process.
diff --git a/src/ImageSharp/Metadata/Profiles/Exif/Values/ExifValues.cs b/src/ImageSharp/Metadata/Profiles/Exif/Values/ExifValues.cs
index a4217fe026..93f67d46ad 100644
--- a/src/ImageSharp/Metadata/Profiles/Exif/Values/ExifValues.cs
+++ b/src/ImageSharp/Metadata/Profiles/Exif/Values/ExifValues.cs
@@ -241,6 +241,8 @@ internal static partial class ExifValues
                 return new ExifRational(ExifTag.GPSDestBearing);
             case ExifTagValue.GPSDestDistance:
                 return new ExifRational(ExifTag.GPSDestDistance);
+            case ExifTagValue.GPSHPositioningError:
+                return new ExifRational(ExifTag.GPSHPositioningError);
 
             case ExifTagValue.WhitePoint:
                 return new ExifRationalArray(ExifTag.WhitePoint);


Test patch:
diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs
index bf1ef1a9b0..99cafa8960 100644
--- a/tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs
+++ b/tests/ImageSharp.Tests/Metadata/Profiles/Exif/Values/ExifValuesTests.cs
@@ -128,6 +128,7 @@ public class ExifValuesTests
         { ExifTag.GPSImgDirection },
         { ExifTag.GPSDestBearing },
         { ExifTag.GPSDestDistance },
+        { ExifTag.GPSHPositioningError },
     };
 
     public static TheoryData<ExifTag> RationalArrayTags => new TheoryData<ExifTag>