Releases: NetTopologySuite/NetTopologySuite.IO.GPX
Releases · NetTopologySuite/NetTopologySuite.IO.GPX
1.1.1
1.1.1
GpxReader
will now throw anXmlException
when it encounters an unexpected top-level child element of the rootgpx
element, instead of running into an infinite loop (#41).- "Unexpected top-level child elements" are elements whose names we do not recognize,
metadata
orextensions
showing up more than once, or themetadata
element showing up somewhere after the first child element.
- "Unexpected top-level child elements" are elements whose names we do not recognize,
GpxReaderSettings
now has anIgnoreUnexpectedChildrenOfTopLevelElement
property to use to ignore those elements instead of throwingXmlException
.
1.1.0
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
1.0.0
- Updates to make this compatible with v2 of the core NTS library.
0.6.0
0.6.0
- Mark upper-bounds on package dependencies to make it clear that this only supports the 1.x series.
0.5.0
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 thexmlns
declaration for extensions that are declared in the standard GPX namespace (#33).
0.4.0
0.3.2
0.3.1
0.3.0
0.3.0
GpxReaderSettings
now has aDefaultCreatorIfMissing
attribute to use for filling in a missingGpxMetadata.Creator
value, to help read values saved from legacy versions of IHM (#23).- Custom
GpxExtensionReader
andGpxExtensionWriter
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)
andGetHashCode()
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 returnsImmutableXElementContainer
, 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'sEquals(object)
andGetHashCode()
semantics match what you want the container's semantics to be.
- If you do not use a custom
- Mutable types, such as
GpxWebLink
now has a constructor that accepts just the value forHref
, 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
, andGpxDgpsStationId
now all have staticMinValue
andMaxValue
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 aGeoAPI.Geometries.Coordinate
instance, for convenience (#20).GpxWaypoint
constructors and helper method now both reject infinite values ofelevationInMeters
(#24).GpxWaypoint
constructors and helper methods now throwArgumentOutOfRangeException
instead ofArgumentException
in situations where the former is more appropriate.- Trying to set
GpxFile.Metadata
tonull
now throwsArgumentNullException
right away (#21). - Add methods on
GpxFile
to allow converting to / from string, for convenience (#19).