Changelog
Unreleased
[5.11.1] - 2025-08-14
Changed
Updates to data for Georgia, Germany, Greenland, Kazakhstan and USA
5.11.0 - 2025-06-15
Added
Added new parameter
$accuracyand new methodgetAccuracy()onPointobjects to store/reveal accuracy of the point. You can use this either to store the data for your own use (e.g. survey errors) and/or PHPCoord will update this with the accuracy of the calculated point after a conversion
Changed
Updates to data for BES Islands, Brazil, Canada, Finland, ITRF, Latvia, Liberia, Mayotte, Uganda and Uzbekistan
5.10.3 - 2025-01-31
Changed
Updates to data for Canada and Germany
Fixed
Calculation of small distances along a meridian
5.10.2 - 2024-10-06
Fixed
Fix off by 1 error when computing certain British/Irish grid references
5.10.1 - 2024-09-24
Fixed
Compatibility with opcache preloading
5.10.0 - 2024-08-23
Added
Added a new method
isWithinCRSBoundingArea()on mostPointobjects to check if they lie within the bounds of their defined CRS
5.9.2 - 2024-08-18
Changed
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
Changed
Updates to data for USA and WGS84
Support for Irish polynomial transformation in the ETRS89 to TM75 direction (TM75 to ETRS89 was already supported)
Fixed
British and Irish Grid references were rounding rather than truncating causing a sometimes off-by-1 error
5.9.0 - 2024-08-04
Changed
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
Added
Support for compressed grid files to reduce distribution sizes
5.7.0 - 2024-01-27
Changed
Updates to data for Canada, Denmark, France, Germany and USA
More aggressive buffering of extent polygons
5.6.0 - 2023-09-30
Changed
Updates to data for Australia, Austria, Canada, Germany, Italy, Netherlands, Portugal, South Korea, UK and USA
5.5.0 - 2023-07-07
Added
Support for Lambert Cylindrical Equal Area (Spherical) projection
Changed
Infer a current epoch when doing time-dependant transforms and no explicit epoch is supplied
Updates to data for Polar regions, Algeria and Spain
Deprecated
The namespace of all
*Pointclasses have been tidied up and changed to fromPHPCoordtoPHPCoord\Pointe.g.PHPCoord\GeographicPointis 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
Added
getSupportedSRIDsWithHelp()as a version ofgetSupportedSRIDs()that returns at runtime the inline help available within the source code
Changed
Updates to data for Algeria, Bosnia and Herzegovina, Denmark, Germany, Latvia and USA
5.3.1 - 2023-02-20
Changed
Further enhancements to coordinate conversion from a
CompoundPoint
5.3.0 - 2023-02-19
Added
Support for converting coordinates from a
CompoundPointwhere the horizontal component isProjectedto a 3D CRS
Changed
Updates to data for ETRS89, Colombia, Slovenia, USA and UK
Fixed
Don’t use 2D CRS as intermediate in a chain when converting from/to a 3D CRS
5.2.0 - 2023-01-08
Changed
Updates to data for IGS, Japan and UK
Fixed
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
Added
Support for 3D projected coordinates
Support for custom coordinate reference systems and custom conversions
Changed
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
Fixed
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
Fixed
Guard against divide by zero issues when calculating distance between two points
5.0.0 - 2021-11-12
Added
Support for IGN France geocentric translation by grid interpolation. This requires the Europe datapack
Support for vertical grid files. These require a relevant datapack
Changed
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 ): GeographicPointUpdates 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.
Fixed
Buffering of Irish extent
4.7.0 - 2022-06-26
Added
Support for defining 3D projected coordinates
Fixed
Improved handling of longitudes greater than 180 degrees
Corrected conversion of geocentric coordinates to geographic coordinates when using a non-Greenwich prime meridian
Changed
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
Fixed
Guard against divide by zero issues when calculating distance between two points
4.6.0 - 2021-10-22
Changed
Updates to data for Papua New Guinea, Ukraine and WGS84
Some internal simplifications and optimisations
Fixed
Corrected the decoding of sexagesimal DMS degree fractional components
4.5.0 - 2021-09-25
Changed
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
Fixed
Some PHP8.1 deprecations
Deprecated
Compound::EPSG_RGF93_LAMBERT_93_PLUS_NGF_IGN69_HEIGHT, useCompound::EPSG_RGF93_V1_LAMBERT_93_PLUS_NGF_IGN69_HEIGHTinsteadCompound::EPSG_RGF93_LAMBERT_93_PLUS_NGF_IGN78_HEIGHT, useCompound::EPSG_RGF93_V1_LAMBERT_93_PLUS_NGF_IGN78_HEIGHTinsteadCompound::EPSG_RGF93_PLUS_NGF_IGN69_HEIGHT, useCompound::EPSG_RGF93_V2_PLUS_NGF_IGN69_HEIGHTinsteadCompound::EPSG_RGF93_PLUS_NGF_IGN78_HEIGHT, useCompound::EPSG_RGF93_V2_PLUS_NGF_IGN78_HEIGHTinsteadGeocentric::EPSG_CHTRF95, useGeocentric::EPSG_CHTRS95insteadGeocentric::EPSG_RGF93, useGeocentric::EPSG_RGF93_V1insteadGeographic2D::EPSG_CHTRF95, useGeographic2D::EPSG_CHTRS95insteadGeographic2D::EPSG_RGF93, useGeographic2D::EPSG_RGF93_V1insteadGeographic2D::EPSG_RGF93_LON_LAT, useGeographic2D::EPSG_RGF93_V1_LON_LATinsteadGeographic3D::EPSG_CHTRF95, useGeographic3D::EPSG_CHTRS95insteadGeographic3D::EPSG_RGF93, useGeographic3D::EPSG_RGF93_V1insteadGeographic3D::EPSG_RGF93_LON_LAT, useGeographic3D::EPSG_RGF93_V1_LON_LATinsteadProjected::EPSG_RGF93_CC42, useProjected::EPSG_RGF93_V1_CC42insteadProjected::EPSG_RGF93_CC43, useProjected::EPSG_RGF93_V1_CC43insteadProjected::EPSG_RGF93_CC44, useProjected::EPSG_RGF93_V1_CC44insteadProjected::EPSG_RGF93_CC45, useProjected::EPSG_RGF93_V1_CC45insteadProjected::EPSG_RGF93_CC46, useProjected::EPSG_RGF93_V1_CC46insteadProjected::EPSG_RGF93_CC47, useProjected::EPSG_RGF93_V1_CC47insteadProjected::EPSG_RGF93_CC48, useProjected::EPSG_RGF93_V1_CC48insteadProjected::EPSG_RGF93_CC49, useProjected::EPSG_RGF93_V1_CC49insteadProjected::EPSG_RGF93_CC50, useProjected::EPSG_RGF93_V1_CC50insteadProjected::EPSG_RGF93_LAMBERT_93, useProjected::EPSG_RGF93_V1_LAMBERT_93insteadDatum::EPSG_SWISS_TERRESTRIAL_REFERENCE_FRAME_1995, useDatum::EPSG_SWISS_TERRESTRIAL_REFERENCE_SYSTEM_1995insteadDatum::EPSG_RESEAU_GEODESIQUE_FRANCAIS_1993, useDatum::EPSG_RESEAU_GEODESIQUE_FRANCAIS_1993_V1instead
4.4.0 - 2021-06-24
Added
Support for NTv2, OSTN15/OSGM15 and NADCON5 grid files. These require a relevant datapack
Changed
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
Deprecated
Compound::EPSG_BELGE_1972_BELGIAN_LAMBERT_72_PLUS_OSTEND_HEIGHT, useCompound::EPSG_BD72_BELGIAN_LAMBERT_72_PLUS_OSTEND_HEIGHTinsteadGeographic2D::EPSG_BELGE_1950, useGeographic2D::EPSG_BD50insteadGeographic2D::EPSG_BELGE_1950_BRUSSELS, useGeographic2D::EPSG_BD50_BRUSSELSinsteadGeographic2D::EPSG_BELGE_1972, useGeographic2D::EPSG_BD72insteadProjected::EPSG_BELGE_1950_BRUSSELS_BELGE_LAMBERT_50, useProjected::EPSG_BD50_BRUSSELS_BELGE_LAMBERT_50insteadProjected::EPSG_BELGE_1972_BELGE_LAMBERT_72, useProjected::EPSG_BD72_BELGE_LAMBERT_72insteadProjected::EPSG_BELGE_1972_BELGIAN_LAMBERT_72, useProjected::EPSG_BD72_BELGIAN_LAMBERT_72insteadVertical::EPSG_GENOA_HEIGHT, useVertical::EPSG_GENOA_1942_HEIGHTinsteadDatum::EPSG_GENOA, useDatum::EPSG_GENOA_1942instead
4.3.0 - 2021-04-24
Added
Datapacks. See docs for more info
Changed
Updates to data for Canada
4.2.0 - 2021-04-19
Added
More accurate extent data
Fixed
Ensure projections still work even when origin points are on the other side of the antimeridian
Changed
Updates to data for Australia, Poland, UK and US Gulf of Mexico
Deprecated
Compound::EPSG_OSGB_1936_BRITISH_NATIONAL_GRID_PLUS_ODN_HEIGHT, useCompound::EPSG_OSGB36_BRITISH_NATIONAL_GRID_PLUS_ODN_HEIGHTinsteadGeographic2D::EPSG_OSGB_1936, useGeographic2D::EPSG_OSGB36insteadProjected::EPSG_OSGB_1936_BRITISH_NATIONAL_GRID, useProjected::EPSG_OSGB36_BRITISH_NATIONAL_GRIDinsteadProjected::EPSG_ETRS89_POLAND_CS2000_ZONE_5, useProjected::EPSG_ETRF2000_PL_CS2000_15insteadProjected::EPSG_ETRS89_POLAND_CS2000_ZONE_6, useProjected::EPSG_ETRF2000_PL_CS2000_18insteadProjected::EPSG_ETRS89_POLAND_CS2000_ZONE_7, useProjected::EPSG_ETRF2000_PL_CS2000_21insteadProjected::EPSG_ETRS89_POLAND_CS2000_ZONE_8, useProjected::EPSG_ETRF2000_PL_CS2000_24insteadProjected::EPSG_ETRS89_POLAND_CS92, useProjected::EPSG_ETRF2000_PL_CS92insteadDatum::EPSG_OSGB_1936, useDatum::EPSG_ORDNANCE_SURVEY_OF_GREAT_BRITAIN_1936instead
4.1.0 - 2021-03-03
Added
Added
UTMPointas a better way of handling UTM zones than the EPSG model does itImproved conversion chaining for
CompoundPoints
Changed
Moved
verticalOffsetAndSlopemethod fromCompoundPointtoVerticalPoint. 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
Fixed
Documentation issues
4.0.0 - 2021-03-01
Added
Chaining of conversions
Documentation(!)
4.0.0beta1 - 2021-01-05
Added
6200+ new coordinate systems.
Changed
Project reimplemented from scratch. License changed from GPL to MIT.
3.1.2 - 2020-09-29
Changed
Supported PHP versions changed from
^7.1to^7.3||^8.0
3.1.1 - 2020-04-16
Fixed
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
Added
OSRef::toGridReferenceWithSpacesto complementOSRef::toGridReference[thomasedwards]
3.0.0 - 2019-04-13
Added
Support for accepting 2, 4, 8 and 10 figure Ordnance Survey references (6 figure was already supported)
Changed
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
Removed
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
Added distance calculations for grid-based co-ordinate systems to complement the existing lat/long implementation
2.0.3 - 2016-05-29
Fixed
Fixed confusing docblock
2.0.2 - 2016-01-31
Fixed
Ensure consistency of units
2.0.1 - 2016-01-19
Added
Add support for 2, 4, 8 and 10 figure Ordnance Survey references (6 figure was already supported) [stevegoddard]
2.0 - 2016-01-03
Added
3D co-ordinates
Irish Grid and ITM support
Changed
Major refactoring, breaks compatibility with previous API (hopefully for the better!)
1.1.2 - 2015-12-31
Fixed
Corrected issue with Helmert transform where the resulting co-ordinate could be placed into the wrong quadrant
1.1.1 - 2014-11-19
Fixed
Corrected bug in original code where OS 6-figure grid references were sometimes off by 1
Changed
Updated Composer to use PSR-4
1.1 - 2013-08-01
Just cleanup
1.0.0 - 2013-02-13
Initial release of this fork (based off of v2.3 of original)
Fixed
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)
Changed
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