diff --git a/src/ProjNet/IO/CoordinateSystems/CoordinateSystemWktReader.cs b/src/ProjNet/IO/CoordinateSystems/CoordinateSystemWktReader.cs
index a5b3dae..fb3104e 100644
--- a/src/ProjNet/IO/CoordinateSystems/CoordinateSystemWktReader.cs
+++ b/src/ProjNet/IO/CoordinateSystems/CoordinateSystemWktReader.cs
@@ -367,7 +367,7 @@ private static ProjectedCoordinateSystem ReadProjectedCoordinateSystem(WktStream
string authority = string.Empty;
long authorityCode = -1;
- tokenizer.NextToken();
+ var ct = tokenizer.NextToken();
if (tokenizer.GetStringValue() == ",")
{
tokenizer.NextToken();
@@ -377,11 +377,18 @@ private static ProjectedCoordinateSystem ReadProjectedCoordinateSystem(WktStream
tokenizer.NextToken();
if (tokenizer.GetStringValue() == ",") tokenizer.NextToken();
}
- if (tokenizer.GetStringValue() == ",") tokenizer.NextToken();
- if (tokenizer.GetStringValue() == "AUTHORITY")
+
+ while (ct != TokenType.Eol && ct != TokenType.Eof)
{
- tokenizer.ReadAuthority(out authority, out authorityCode);
- tokenizer.ReadCloser(bracket);
+ if (tokenizer.GetStringValue() == "AUTHORITY")
+ {
+ tokenizer.ReadAuthority(out authority, out authorityCode);
+ break;
+ }
+ else
+ {
+ ct = tokenizer.NextToken();
+ }
}
}
//This is default axis values if not specified.
diff --git a/test/ProjNet.Tests/ProjNetIssues.cs b/test/ProjNet.Tests/ProjNetIssues.cs
index 3234c8c..8365921 100644
--- a/test/ProjNet.Tests/ProjNetIssues.cs
+++ b/test/ProjNet.Tests/ProjNetIssues.cs
@@ -297,5 +297,22 @@ public void TestGitHubIssue98()
Assert.IsTrue(cmpdCs.HeadCoordinateSystem is ProjectedCoordinateSystem);
Assert.IsTrue(cmpdCs.TailCoordinateSystem is VerticalCoordinateSystem);
}
+
+ ///
+ /// Tests if a coordinate system can be created from a Well-Known Text (WKT) representation
+ /// and verifies that the authority code is correctly loaded.
+ ///
+ ///
+ /// This test ensures that the WKT parsing functionality of the CoordinateSystemFactory
+ /// correctly initializes the coordinate system and its associated metadata, such as the authority code.
+ ///
+ [Test]
+ public void TestAuthorityNotLoadedIssue()
+ {
+ string wkt = "PROJCS[\"WGS 84 / Pseudo-Mercator\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],EXTENSION[\"PROJ4\",\"+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs\"],AUTHORITY[\"EPSG\",\"3857\"]]";
+ var coordinateSystem = CoordinateSystemFactory.CreateFromWkt(wkt);
+ Assert.IsNotNull(coordinateSystem);
+ Assert.AreEqual(coordinateSystem.AuthorityCode, 3857);
+ }
}
}