Skip to content

Releases: NetTopologySuite/NetTopologySuite.IO.GPX

1.1.1

31 Jul 14:43
b943560
Compare
Choose a tag to compare

1.1.1

  • GpxReader will now throw an XmlException when it encounters an unexpected top-level child element of the root gpx element, instead of running into an infinite loop (#41).
    • "Unexpected top-level child elements" are elements whose names we do not recognize, metadata or extensions showing up more than once, or the metadata element showing up somewhere after the first child element.
  • GpxReaderSettings now has an IgnoreUnexpectedChildrenOfTopLevelElement property to use to ignore those elements instead of throwing XmlException.

1.1.0

05 Feb 13:50
fc0d269
Compare
Choose a tag to compare

1.1.0

  • Allow specifying arbitrary namespaces (+prefixes) on the root element so that they don't have to be repeated on every extensions element (#36).
  • Add opt-in support in GpxWebLink for URI strings longer than 65519 characters, as a workaround for dotnet/runtime#1875 (#39).
    • If upstream relaxes this restriction in a later release, then this code will automatically "upgrade" to fully support the new higher restriction.

1.0.0

05 Sep 12:35
48f677b
Compare
Choose a tag to compare

1.0.0

  • Updates to make this compatible with v2 of the core NTS library.

0.6.0

29 Jun 13:35
9f6acb2
Compare
Choose a tag to compare

0.6.0

  • Mark upper-bounds on package dependencies to make it clear that this only supports the 1.x series.

0.5.0

02 Apr 13:04
5a115b0
Compare
Choose a tag to compare

0.5.0

  • GpxWriterSettings.TimeZoneInfo is no longer completely ignored (#30).
  • Fix an issue where written timestamps were being rounded to the nearest second instead of preserving as many significant digits as DateTime allows (#31).
  • Tweak the settings used for GpxFile.BuildString to avoid repeating the xmlns declaration for extensions that are declared in the standard GPX namespace (#33).

0.4.0

12 Feb 13:37
e76b14e
Compare
Choose a tag to compare

0.4.0

  • GpxReaderSettings now has an IgnoreBadDateTime property to use for ignoring a timestamp value that we cannot parse as an instance of the DateTime struct, to work around a 0000-00-00T00:00:00Z coming from CompeGPS (#29).
  • Update referenced packages to latest revisions.

0.3.2

25 Sep 11:59
eea05ee
Compare
Choose a tag to compare

0.3.2

  • The opt-in GpxReaderSettings.AllowMissingVersionAttribute property added in 0.3.1 has been replaced by IgnoreVersionAttribute, which enables the same situations as AllowMissingVersionAttribute did, plus situations where version was specified as something other than version='1.1' (#28).

0.3.1

13 Sep 12:59
172ec17
Compare
Choose a tag to compare

0.3.1

  • GpxReaderSettings now has an opt-in AllowMissingVersionAttribute property, to allow reading files without a version attribute (#27).

0.3.0

09 Sep 03:43
8197f70
Compare
Choose a tag to compare

0.3.0

  • GpxReaderSettings now has a DefaultCreatorIfMissing attribute to use for filling in a missing GpxMetadata.Creator value, to help read values saved from legacy versions of IHM (#23).
  • Custom GpxExtensionReader and GpxExtensionWriter subclasses can now override just one method if there's a common way to handle extensions regardless of where they show up (#26).
  • All immutable data model types now override Equals(object) and GetHashCode() to have "value" semantics (#9).
    • Mutable types, such as GpxFile, do not do this, for your own safety.
    • In all lists, including lists of web links, ordering matters. [A, B] is not considered equal to [B, A].
    • Extensions values are considered for equality.
      • If you do not use a custom GpxExtensionReader for extensions, or if yours always returns ImmutableXElementContainer, then this should work like you would expect it to work.
      • Otherwise, whenever you return non-null, it is your responsibility to make sure that the result's Equals(object) and GetHashCode() semantics match what you want the container's semantics to be.
  • GpxWebLink now has a constructor that accepts just the value for Href, since that's the only required value.
  • GpxLongitude no longer permits +180 as a legal value, in keeping with the GPX 1.1 schema. (#25).
    • Converting from NTS features will automatically replace +180 with the equivalent -180.
  • GpxLongitude, GpxLatitude, GpxDegrees, and GpxDgpsStationId now all have static MinValue and MaxValue fields to get the smallest and largest legal values.
  • GpxBounds now has a shortcut for getting the a value that covers the entire WGS-84 ellipsoid.
  • GpxWaypoint now has a constructor that accepts a GeoAPI.Geometries.Coordinate instance, for convenience (#20).
  • GpxWaypoint constructors and helper method now both reject infinite values of elevationInMeters (#24).
  • GpxWaypoint constructors and helper methods now throw ArgumentOutOfRangeException instead of ArgumentException in situations where the former is more appropriate.
  • Trying to set GpxFile.Metadata to null now throws ArgumentNullException right away (#21).
  • Add methods on GpxFile to allow converting to / from string, for convenience (#19).

0.2.1

29 Aug 00:47
ba6734f
Compare
Choose a tag to compare

0.2.1

  • Add a default constructor for GpxTrackSegment so that its .WithX methods are actually meaningful (#22).