5.10.2 - 2024-10-06
- Fix off by 1 error when computing certain British/Irish grid references
5.10.1 - 2024-09-24
- Compatibility with opcache preloading
5.10.0 - 2024-08-23
- Added a new method
isWithinCRSBoundingArea()
on mostPoint
objects to check if they lie within the bounds of their defined CRS
5.9.2 - 2024-08-18
- Split declaration of the
Projected::EPSG_*
constants into multiple files internally to aid with static analysis in IDEs (there are so many, the file defining them was over the max file size analysis threshold for Intelephense)
5.9.1 - 2024-08-15
- Updates to data for USA and WGS84
- Support for Irish polynomial transformation in the ETRS89 to TM75 direction (TM75 to ETRS89 was already supported)
- British and Irish Grid references were rounding rather than truncating causing a sometimes off-by-1 error
5.9.0 - 2024-08-04
- Updates to data for Czechia, Denmark, ETRS89, Germany, Martinique, Portugal, St Helena, UK and WGS84
- Switched from Vincenty to Karney algorithm for calculating distance between two Geographic points
- Minimum PHP version increased to 8.1
5.8.0 - 2024-02-03
- Support for compressed grid files to reduce distribution sizes
5.7.0 - 2024-01-27
- Updates to data for Canada, Denmark, France, Germany and USA
- More aggressive buffering of extent polygons
5.6.0 - 2023-09-30
- Updates to data for Australia, Austria, Canada, Germany, Italy, Netherlands, Portugal, South Korea, UK and USA
5.5.0 - 2023-07-07
- Support for Lambert Cylindrical Equal Area (Spherical) projection
- Infer a current epoch when doing time-dependant transforms and no explicit epoch is supplied
- Updates to data for Polar regions, Algeria and Spain
- The namespace of all
*Point
classes have been tidied up and changed to fromPHPCoord
toPHPCoord\Point
e.g.PHPCoord\GeographicPoint
is nowPHPCoord\Point\GeographicPoint
. An alias has been provided, all existing code referencing the old names will continue to work
5.4.0 - 2023-05-27
- Added
getSupportedSRIDsWithHelp()
as a version ofgetSupportedSRIDs()
that returns at runtime the inline help available within the source code
- Updates to data for Algeria, Bosnia and Herzegovina, Denmark, Germany, Latvia and USA
5.3.1 - 2023-02-20
- Further enhancements to coordinate conversion from a
CompoundPoint
5.3.0 - 2023-02-19
- Support for converting coordinates from a
CompoundPoint
where the horizontal component isProjected
to a 3D CRS
- Updates to data for ETRS89, Colombia, Slovenia, USA and UK
- Don't use 2D CRS as intermediate in a chain when converting from/to a 3D CRS
5.2.0 - 2023-01-08
- Updates to data for IGS, Japan and UK
- Improved handling of extent polygon buffering involving complex shapes (e.g. Netherlands)
- Fixed longitude wraparound issue with GTX grids
5.1.0 - 2022-11-10
- Support for 3D projected coordinates
- Support for custom coordinate reference systems and custom conversions
- Updates to data for ITRF, WGS84, Australia, Belgium, Canada, France, Germany, Iceland, Indonesia, Ireland, Japan, Luxembourg, Norway, North Macedonia, UK and USA
- Some internal simplifications and optimisations
- Improved handling of longitudes greater than 180 degrees
- Corrected conversion of geocentric coordinates to geographic coordinates when using a non-Greenwich prime meridian
5.0.1 - 2022-01-29
- Guard against divide by zero issues when calculating distance between two points
5.0.0 - 2021-11-12
- Support for IGN France geocentric translation by grid interpolation. This requires the Europe datapack
- Support for vertical grid files. These require a relevant datapack
-
The signatures of all
*Point::create*()
methods have been changed to put the CRS first. Previously the distance/direction values came first. This is to ensure that all optional parameters are at the end of the signature, addressing a PHP8.1 deprecation.Example:
// in v4 GeographicPoint::create( Angle $latitude, Angle $longitude, ?Length $height = null, Geographic $crs, // was after distance/direction ?DateTimeInterface $epoch = null ): GeographicPoint // in v5 GeographicPoint::create( Geographic $crs, // now goes first Angle $latitude, Angle $longitude, ?Length $height = null, ?DateTimeInterface $epoch = null ): GeographicPoint
-
Updates to data for Canada, Norway, UK
-
Some internal simplifications and optimisations
-
Supported PHP versions changed to
^8.0
4.7.1 - 2024-01-26
The v4.x series is receiving basic maintenance only. All feature development takes place in v5.x. This is because one of PHP8.1's new deprecations required a significant non-backwards compatible change to address.
- Buffering of Irish extent
4.7.0 - 2022-06-26
- Support for defining 3D projected coordinates
- Improved handling of longitudes greater than 180 degrees
- Corrected conversion of geocentric coordinates to geographic coordinates when using a non-Greenwich prime meridian
- Updates to data for ITRF, WGS84, Australia, Belgium, Canada, France, Germany, Iceland, Ireland, Japan, Luxembourg, Norway, North Macedonia, UK and USA
4.6.1 - 2022-01-29
- Guard against divide by zero issues when calculating distance between two points
4.6.0 - 2021-10-22
- Updates to data for Papua New Guinea, Ukraine and WGS84
- Some internal simplifications and optimisations
- Corrected the decoding of sexagesimal DMS degree fractional components
4.5.0 - 2021-09-25
- Updates to data for Canada, Costa Rica, France, French Southern Territories, Kyrgistan, Liechtenstein, Poland, Russia, Switzerland, Tonga, UK, USA, Wallis and Futuna
- Many internal simplifications and optimisations, leading to faster conversions and a corresponding update of the maximum chain depth from 5 to 7
- Some PHP8.1 deprecations
Compound::EPSG_RGF93_LAMBERT_93_PLUS_NGF_IGN69_HEIGHT
, useCompound::EPSG_RGF93_V1_LAMBERT_93_PLUS_NGF_IGN69_HEIGHT
insteadCompound::EPSG_RGF93_LAMBERT_93_PLUS_NGF_IGN78_HEIGHT
, useCompound::EPSG_RGF93_V1_LAMBERT_93_PLUS_NGF_IGN78_HEIGHT
insteadCompound::EPSG_RGF93_PLUS_NGF_IGN69_HEIGHT
, useCompound::EPSG_RGF93_V2_PLUS_NGF_IGN69_HEIGHT
insteadCompound::EPSG_RGF93_PLUS_NGF_IGN78_HEIGHT
, useCompound::EPSG_RGF93_V2_PLUS_NGF_IGN78_HEIGHT
insteadGeocentric::EPSG_CHTRF95
, useGeocentric::EPSG_CHTRS95
insteadGeocentric::EPSG_RGF93
, useGeocentric::EPSG_RGF93_V1
insteadGeographic2D::EPSG_CHTRF95
, useGeographic2D::EPSG_CHTRS95
insteadGeographic2D::EPSG_RGF93
, useGeographic2D::EPSG_RGF93_V1
insteadGeographic2D::EPSG_RGF93_LON_LAT
, useGeographic2D::EPSG_RGF93_V1_LON_LAT
insteadGeographic3D::EPSG_CHTRF95
, useGeographic3D::EPSG_CHTRS95
insteadGeographic3D::EPSG_RGF93
, useGeographic3D::EPSG_RGF93_V1
insteadGeographic3D::EPSG_RGF93_LON_LAT
, useGeographic3D::EPSG_RGF93_V1_LON_LAT
insteadProjected::EPSG_RGF93_CC42
, useProjected::EPSG_RGF93_V1_CC42
insteadProjected::EPSG_RGF93_CC43
, useProjected::EPSG_RGF93_V1_CC43
insteadProjected::EPSG_RGF93_CC44
, useProjected::EPSG_RGF93_V1_CC44
insteadProjected::EPSG_RGF93_CC45
, useProjected::EPSG_RGF93_V1_CC45
insteadProjected::EPSG_RGF93_CC46
, useProjected::EPSG_RGF93_V1_CC46
insteadProjected::EPSG_RGF93_CC47
, useProjected::EPSG_RGF93_V1_CC47
insteadProjected::EPSG_RGF93_CC48
, useProjected::EPSG_RGF93_V1_CC48
insteadProjected::EPSG_RGF93_CC49
, useProjected::EPSG_RGF93_V1_CC49
insteadProjected::EPSG_RGF93_CC50
, useProjected::EPSG_RGF93_V1_CC50
insteadProjected::EPSG_RGF93_LAMBERT_93
, useProjected::EPSG_RGF93_V1_LAMBERT_93
insteadDatum::EPSG_SWISS_TERRESTRIAL_REFERENCE_FRAME_1995
, useDatum::EPSG_SWISS_TERRESTRIAL_REFERENCE_SYSTEM_1995
insteadDatum::EPSG_RESEAU_GEODESIQUE_FRANCAIS_1993
, useDatum::EPSG_RESEAU_GEODESIQUE_FRANCAIS_1993_V1
instead
4.4.0 - 2021-06-24
- Support for NTv2, OSTN15/OSGM15 and NADCON5 grid files. These require a relevant datapack
- Updates to data for Argentina, Belgium, Canada, Costa Rica, Czechia, Greenland, Italy, Russia, UK and USA
- Performance optimisations
- Supported PHP versions changed to
^7.4||^8.0
Compound::EPSG_BELGE_1972_BELGIAN_LAMBERT_72_PLUS_OSTEND_HEIGHT
, useCompound::EPSG_BD72_BELGIAN_LAMBERT_72_PLUS_OSTEND_HEIGHT
insteadGeographic2D::EPSG_BELGE_1950
, useGeographic2D::EPSG_BD50
insteadGeographic2D::EPSG_BELGE_1950_BRUSSELS
, useGeographic2D::EPSG_BD50_BRUSSELS
insteadGeographic2D::EPSG_BELGE_1972
, useGeographic2D::EPSG_BD72
insteadProjected::EPSG_BELGE_1950_BRUSSELS_BELGE_LAMBERT_50
, useProjected::EPSG_BD50_BRUSSELS_BELGE_LAMBERT_50
insteadProjected::EPSG_BELGE_1972_BELGE_LAMBERT_72
, useProjected::EPSG_BD72_BELGE_LAMBERT_72
insteadProjected::EPSG_BELGE_1972_BELGIAN_LAMBERT_72
, useProjected::EPSG_BD72_BELGIAN_LAMBERT_72
insteadVertical::EPSG_GENOA_HEIGHT
, useVertical::EPSG_GENOA_1942_HEIGHT
insteadDatum::EPSG_GENOA
, useDatum::EPSG_GENOA_1942
instead
4.3.0 - 2021-04-24
- Datapacks. See docs for more info
- Updates to data for Canada
4.2.0 - 2021-04-19
- More accurate extent data
- Ensure projections still work even when origin points are on the other side of the antimeridian
- Updates to data for Australia, Poland, UK and US Gulf of Mexico
Compound::EPSG_OSGB_1936_BRITISH_NATIONAL_GRID_PLUS_ODN_HEIGHT
, useCompound::EPSG_OSGB36_BRITISH_NATIONAL_GRID_PLUS_ODN_HEIGHT
insteadGeographic2D::EPSG_OSGB_1936
, useGeographic2D::EPSG_OSGB36
insteadProjected::EPSG_OSGB_1936_BRITISH_NATIONAL_GRID
, useProjected::EPSG_OSGB36_BRITISH_NATIONAL_GRID
insteadProjected::EPSG_ETRS89_POLAND_CS2000_ZONE_5
, useProjected::EPSG_ETRF2000_PL_CS2000_15
insteadProjected::EPSG_ETRS89_POLAND_CS2000_ZONE_6
, useProjected::EPSG_ETRF2000_PL_CS2000_18
insteadProjected::EPSG_ETRS89_POLAND_CS2000_ZONE_7
, useProjected::EPSG_ETRF2000_PL_CS2000_21
insteadProjected::EPSG_ETRS89_POLAND_CS2000_ZONE_8
, useProjected::EPSG_ETRF2000_PL_CS2000_24
insteadProjected::EPSG_ETRS89_POLAND_CS92
, useProjected::EPSG_ETRF2000_PL_CS92
insteadDatum::EPSG_OSGB_1936
, useDatum::EPSG_ORDNANCE_SURVEY_OF_GREAT_BRITAIN_1936
instead
4.1.0 - 2021-03-03
- Added
UTMPoint
as a better way of handling UTM zones than the EPSG model does it - Improved conversion chaining for
CompoundPoint
s
- Moved
verticalOffsetAndSlope
method fromCompoundPoint
toVerticalPoint
. This is technically a breaking change, but since the code is only 2 days old shouldn't affect anyone.
4.0.1 - 2021-03-01
- Documentation issues
4.0.0 - 2021-03-01
- Chaining of conversions
- Documentation(!)
4.0.0beta1 - 2021-01-05
- 6200+ new coordinate systems.
- Project reimplemented from scratch. License changed from GPL to MIT.
3.1.2 - 2020-09-29
- Supported PHP versions changed from
^7.1
to^7.3||^8.0
3.1.1 - 2020-04-16
- Corrected an issue with transforming ITM references to WGS84
- Corrected an issue with transforming Irish Grid references to WGS84
3.1.0 - 2019-07-21
- Added
OSRef::toGridReferenceWithSpaces
to complementOSRef::toGridReference
[thomasedwards]
3.0.0 - 2019-04-13
- Support for accepting 2, 4, 8 and 10 figure Ordnance Survey references (6 figure was already supported)
- fromSixFigureReference
- All value objects are now immutable - calling a conversion function on them now returns a new object rather than modifying the existing one
- Minimum PHP version is now 7.1
- HHVM support now that project has a stated goal of no longer targeting PHP7 compatibility
OSRef::fromSixFigureReference()
has been removed, useOSRef::fromGridReference()
insteadOSRef::to[Two/Four/Six/Eight/Ten]FigureReference()
have been removed, useOSRef::toGridReference($length)
instead
2.1 - 2016-09-20
- Added distance calculations for grid-based co-ordinate systems to complement the existing lat/long implementation
2.0.3 - 2016-05-29
- Fixed confusing docblock
2.0.2 - 2016-01-31
- Ensure consistency of units
2.0.1 - 2016-01-19
- Add support for 2, 4, 8 and 10 figure Ordnance Survey references (6 figure was already supported) [stevegoddard]
2.0 - 2016-01-03
- 3D co-ordinates
- Irish Grid and ITM support
- Major refactoring, breaks compatibility with previous API (hopefully for the better!)
1.1.2 - 2015-12-31
- Corrected issue with Helmert transform where the resulting co-ordinate could be placed into the wrong quadrant
1.1.1 - 2014-11-19
- Corrected bug in original code where OS 6-figure grid references were sometimes off by 1
- Updated Composer to use PSR-4
1.1 - 2013-08-01
Just cleanup
Initial release of this fork (based off of v2.3 of original)
- When converting Latitude and Longitude between WGS84 and OSGB36 or vice-versa, a wrong constant for the y translation has been corrected (was off by 1 metre)
- Eastings and northings are rounded to 1m, and lat/long to 5dp (approx 1m) to avoid any misconceptions that precision is the same thing as accuracy.
- When calculating surface distances, a more accurate mean radius is now used rather than that derived from historical definitions of a nautical mile