Skip to content

Commit

Permalink
Update EPSG data
Browse files Browse the repository at this point in the history
  • Loading branch information
dvdoug committed Aug 4, 2024
1 parent 76d7dfc commit 84af5ba
Show file tree
Hide file tree
Showing 17 changed files with 198 additions and 9 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ PHPCoord
PHPCoord is a PHP library to aid in handling coordinates. It can convert coordinates for a point from one system
to another and also calculate distance between points.

<!-- numOfCRS -->6988 different coordinate systems are supported, covering the entire globe. Some common systems supported include:
<!-- numOfCRS -->6992 different coordinate systems are supported, covering the entire globe. Some common systems supported include:
- WGS84 (GPS)
- OSGB36 (Great Britain)
- NAD27 and NAD83 (North America)
Expand Down
24 changes: 24 additions & 0 deletions docs/reflection/coordinatereferencesystem/compound.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2051,6 +2051,30 @@ GDA94 + AHD height
CoordinateReferenceSystem::fromSRID('urn:ogc:def:crs:EPSG::9464')


GR96 + GLLAT(2023) depth
------------------------
| Extent: Greenland - offshore

.. code-block:: php

Compound::fromSRID(Compound::EPSG_GR96_PLUS_GLLAT_2023_DEPTH)
Compound::fromSRID('urn:ogc:def:crs:EPSG::10652')
CoordinateReferenceSystem::fromSRID(Compound::EPSG_GR96_PLUS_GLLAT_2023_DEPTH)
CoordinateReferenceSystem::fromSRID('urn:ogc:def:crs:EPSG::10652')


GR96 + GLMSL(2023) depth
------------------------
| Extent: Greenland - offshore

.. code-block:: php

Compound::fromSRID(Compound::EPSG_GR96_PLUS_GLMSL_2023_DEPTH)
Compound::fromSRID('urn:ogc:def:crs:EPSG::10651')
CoordinateReferenceSystem::fromSRID(Compound::EPSG_GR96_PLUS_GLMSL_2023_DEPTH)
CoordinateReferenceSystem::fromSRID('urn:ogc:def:crs:EPSG::10651')


GR96 + GVR2000 height
---------------------
| Extent: Greenland - onshore and offshore between 59°N and 84°N and west of 10°W
Expand Down
24 changes: 24 additions & 0 deletions docs/reflection/coordinatereferencesystem/vertical.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1252,6 +1252,18 @@ GHA height

For scientific purposes see EVRF2000 Austria height (CRS code 9274).

GLLAT(2023) depth
-----------------
| Extent: Greenland - offshore

.. code-block:: php

Vertical::fromSRID(Vertical::EPSG_GLLAT_2023_DEPTH)
Vertical::fromSRID('urn:ogc:def:crs:EPSG::10650')
CoordinateReferenceSystem::fromSRID(Vertical::EPSG_GLLAT_2023_DEPTH)
CoordinateReferenceSystem::fromSRID('urn:ogc:def:crs:EPSG::10650')


GLLMSL(2022) height
-------------------
| Extent: Greenland - onshore
Expand All @@ -1265,6 +1277,18 @@ GLLMSL(2022) height

Collection of 77 disconnected local levelling nets each tied to local mean sea level.

GLMSL(2023) depth
-----------------
| Extent: Greenland - offshore

.. code-block:: php

Vertical::fromSRID(Vertical::EPSG_GLMSL_2023_DEPTH)
Vertical::fromSRID('urn:ogc:def:crs:EPSG::10649')
CoordinateReferenceSystem::fromSRID(Vertical::EPSG_GLMSL_2023_DEPTH)
CoordinateReferenceSystem::fromSRID('urn:ogc:def:crs:EPSG::10649')


GNTRANS height
--------------
| Extent: Germany - onshore - states of Baden-Wurtemberg, Bayern, Berlin, Brandenburg, Bremen, Hamburg, Hessen, Mecklenburg-Vorpommern, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Sachsen, Sachsen-Anhalt, Schleswig-Holstein, Thuringen
Expand Down
24 changes: 24 additions & 0 deletions docs/reflection/datum/datum.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3332,6 +3332,30 @@ Greenland Local Mean Sea Level (2022)

GLLMSL has been introduced to accomodate transformations between older local height systems and the modern nation-wide height systems. In effect these datums are now defined by their transformation to GVR2016.

Greenland Lowest Astronomic Tide (2023)
---------------------------------------
| Type: Vertical
| Extent: Greenland - offshore

.. code-block:: php

Datum::fromSRID(Datum::EPSG_GREENLAND_LOWEST_ASTRONOMIC_TIDE_2023)
Datum::fromSRID('urn:ogc:def:datum:EPSG::1388')

Mean sea level as determined by satellite altimetry adjusted to LAT using coastal tide gauges and global tide models. Defined with respect to GR96 through the gllat_2023 hydroid model.

Greenland Mean Sea Level (2023)
-------------------------------
| Type: Vertical
| Extent: Greenland - offshore

.. code-block:: php

Datum::fromSRID(Datum::EPSG_GREENLAND_MEAN_SEA_LEVEL_2023)
Datum::fromSRID('urn:ogc:def:datum:EPSG::1387')

Mean sea level as determined by satellite altimetry and coastal tide gauges. Defined with respect to GR96 through the glmsl_2023 hydroid model.

Greenland Vertical Reference 2000
---------------------------------
| Type: Vertical
Expand Down
2 changes: 1 addition & 1 deletion docs/reflection/numOfCRS.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
.. |numOfCRS| replace:: 6988
.. |numOfCRS| replace:: 6992
12 changes: 12 additions & 0 deletions src/CoordinateReferenceSystem/Compound.php
Original file line number Diff line number Diff line change
Expand Up @@ -1114,6 +1114,18 @@ class Compound extends CoordinateReferenceSystem
*/
public const EPSG_GDA94_PLUS_AHD_HEIGHT = 'urn:ogc:def:crs:EPSG::9464';

/**
* GR96 + GLLAT(2023) depth
* Extent: Greenland - offshore.
*/
public const EPSG_GR96_PLUS_GLLAT_2023_DEPTH = 'urn:ogc:def:crs:EPSG::10652';

/**
* GR96 + GLMSL(2023) depth
* Extent: Greenland - offshore.
*/
public const EPSG_GR96_PLUS_GLMSL_2023_DEPTH = 'urn:ogc:def:crs:EPSG::10651';

/**
* GR96 + GVR2000 height
* Extent: Greenland - onshore and offshore between 59°N and 84°N and west of 10°W
Expand Down
20 changes: 20 additions & 0 deletions src/CoordinateReferenceSystem/CompoundSRIDData.php
Original file line number Diff line number Diff line change
Expand Up @@ -4321,6 +4321,26 @@ trait CompoundSRIDData
'extent_description' => 'Martinique - onshore',
'help' => '',
],
'urn:ogc:def:crs:EPSG::10651' => [
'name' => 'GR96 + GLMSL(2023) depth',
'horizontal_crs' => 'urn:ogc:def:crs:EPSG::4747',
'horizontal_crs_type' => 'geographic 2D',
'vertical_crs' => 'urn:ogc:def:crs:EPSG::10649',
'extent' => ['urn:ogc:def:area:EPSG::4776'],
'extent_name' => 'Greenland - offshore',
'extent_description' => 'Greenland - offshore',
'help' => '',
],
'urn:ogc:def:crs:EPSG::10652' => [
'name' => 'GR96 + GLLAT(2023) depth',
'horizontal_crs' => 'urn:ogc:def:crs:EPSG::4747',
'horizontal_crs_type' => 'geographic 2D',
'vertical_crs' => 'urn:ogc:def:crs:EPSG::10650',
'extent' => ['urn:ogc:def:area:EPSG::4776'],
'extent_name' => 'Greenland - offshore',
'extent_description' => 'Greenland - offshore',
'help' => '',
],
'urn:ogc:def:crs:EPSG::20001' => [
'name' => 'ETRS89 + SVD2006 height',
'horizontal_crs' => 'urn:ogc:def:crs:EPSG::4258',
Expand Down
2 changes: 1 addition & 1 deletion src/CoordinateReferenceSystem/Geocentric.php
Original file line number Diff line number Diff line change
Expand Up @@ -1566,7 +1566,7 @@ public static function fromSRID(string $srid): self
}
if (!isset(self::$cachedObjects[$srid])) {
$data = static::$sridData[$srid];
$extent = ($data['extent'] instanceof BoundingArea) ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
$extent = $data['extent'] instanceof BoundingArea ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
self::$cachedObjects[$srid] = new self($srid, Cartesian::fromSRID($data['coordinate_system']), Datum::fromSRID($data['datum']), $extent, $data['name']);
}

Expand Down
2 changes: 1 addition & 1 deletion src/CoordinateReferenceSystem/Geographic2D.php
Original file line number Diff line number Diff line change
Expand Up @@ -4368,7 +4368,7 @@ public static function fromSRID(string $srid): self
$data = static::$sridData[$srid];
$baseCRS = $data['base_crs'] ? CoordinateReferenceSystem::fromSRID($data['base_crs']) : null;
assert($baseCRS === null || $baseCRS instanceof self || $baseCRS instanceof Geographic3D);
$extent = ($data['extent'] instanceof BoundingArea) ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
$extent = $data['extent'] instanceof BoundingArea ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
self::$cachedObjects[$srid] = new self($srid, Ellipsoidal::fromSRID($data['coordinate_system']), Datum::fromSRID($data['datum']), $extent, $data['name'], $baseCRS);
}

Expand Down
2 changes: 1 addition & 1 deletion src/CoordinateReferenceSystem/Geographic3D.php
Original file line number Diff line number Diff line change
Expand Up @@ -1689,7 +1689,7 @@ public static function fromSRID(string $srid): self
$data = static::$sridData[$srid];
$baseCRS = $data['base_crs'] ? CoordinateReferenceSystem::fromSRID($data['base_crs']) : null;
assert($baseCRS === null || $baseCRS instanceof Geocentric || $baseCRS instanceof self);
$extent = ($data['extent'] instanceof BoundingArea) ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
$extent = $data['extent'] instanceof BoundingArea ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
self::$cachedObjects[$srid] = new self($srid, Ellipsoidal::fromSRID($data['coordinate_system']), Datum::fromSRID($data['datum']), $extent, $data['name'], $baseCRS);
}

Expand Down
2 changes: 1 addition & 1 deletion src/CoordinateReferenceSystem/Projected.php
Original file line number Diff line number Diff line change
Expand Up @@ -40780,7 +40780,7 @@ public static function fromSRID(string $srid): self
if (!isset(self::$cachedObjects[$srid])) {
$data = static::$sridData[$srid];
$baseCRS = Geographic::fromSRID($data['base_crs']);
$extent = ($data['extent'] instanceof BoundingArea) ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
$extent = $data['extent'] instanceof BoundingArea ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
self::$cachedObjects[$srid] = new self($srid, Cartesian::fromSRID($data['coordinate_system']), $baseCRS->getDatum(), $extent, $data['name'], $baseCRS, $data['deriving_conversion']);
}

Expand Down
14 changes: 13 additions & 1 deletion src/CoordinateReferenceSystem/Vertical.php
Original file line number Diff line number Diff line change
Expand Up @@ -751,13 +751,25 @@ class Vertical extends CoordinateReferenceSystem
*/
public const EPSG_GHA_HEIGHT = 'urn:ogc:def:crs:EPSG::5778';

/**
* GLLAT(2023) depth
* Extent: Greenland - offshore.
*/
public const EPSG_GLLAT_2023_DEPTH = 'urn:ogc:def:crs:EPSG::10650';

/**
* GLLMSL(2022) height
* Extent: Greenland - onshore
* Collection of 77 disconnected local levelling nets each tied to local mean sea level.
*/
public const EPSG_GLLMSL_2022_HEIGHT = 'urn:ogc:def:crs:EPSG::10565';

/**
* GLMSL(2023) depth
* Extent: Greenland - offshore.
*/
public const EPSG_GLMSL_2023_DEPTH = 'urn:ogc:def:crs:EPSG::10649';

/**
* GNTRANS height
* Extent: Germany - onshore - states of Baden-Wurtemberg, Bayern, Berlin, Brandenburg, Bremen, Hamburg, Hessen,
Expand Down Expand Up @@ -2149,7 +2161,7 @@ public static function fromSRID(string $srid): self
}
if (!isset(self::$cachedObjects[$srid])) {
$data = static::$sridData[$srid];
$extent = ($data['extent'] instanceof BoundingArea) ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
$extent = $data['extent'] instanceof BoundingArea ? $data['extent'] : BoundingArea::createFromExtentCodes($data['extent']);
self::$cachedObjects[$srid] = new self($srid, VerticalCS::fromSRID($data['coordinate_system']), Datum::fromSRID($data['datum']), $extent, $data['name']);
}

Expand Down
18 changes: 18 additions & 0 deletions src/CoordinateReferenceSystem/VerticalSRIDData.php
Original file line number Diff line number Diff line change
Expand Up @@ -2543,6 +2543,24 @@ trait VerticalSRIDData
'extent_description' => 'Greenland - onshore',
'help' => 'Collection of 77 disconnected local levelling nets each tied to local mean sea level.',
],
'urn:ogc:def:crs:EPSG::10649' => [
'name' => 'GLMSL(2023) depth',
'coordinate_system' => 'urn:ogc:def:cs:EPSG::6498',
'datum' => 'urn:ogc:def:datum:EPSG::1387',
'extent' => ['urn:ogc:def:area:EPSG::4776'],
'extent_name' => 'Greenland - offshore',
'extent_description' => 'Greenland - offshore',
'help' => '',
],
'urn:ogc:def:crs:EPSG::10650' => [
'name' => 'GLLAT(2023) depth',
'coordinate_system' => 'urn:ogc:def:cs:EPSG::6498',
'datum' => 'urn:ogc:def:datum:EPSG::1388',
'extent' => ['urn:ogc:def:area:EPSG::4776'],
'extent_name' => 'Greenland - offshore',
'extent_description' => 'Greenland - offshore',
'help' => '',
],
'urn:ogc:def:crs:EPSG::20000' => [
'name' => 'SVD2006 height',
'coordinate_system' => 'urn:ogc:def:cs:EPSG::6499',
Expand Down
44 changes: 44 additions & 0 deletions src/Datum/Datum.php
Original file line number Diff line number Diff line change
Expand Up @@ -2420,6 +2420,24 @@ class Datum
*/
public const EPSG_GREENLAND_LOCAL_MEAN_SEA_LEVEL_2022 = 'urn:ogc:def:datum:EPSG::1378';

/**
* Greenland Lowest Astronomic Tide (2023)
* Type: Vertical
* Extent: Greenland - offshore
* Mean sea level as determined by satellite altimetry adjusted to LAT using coastal tide gauges and global tide
* models. Defined with respect to GR96 through the gllat_2023 hydroid model.
*/
public const EPSG_GREENLAND_LOWEST_ASTRONOMIC_TIDE_2023 = 'urn:ogc:def:datum:EPSG::1388';

/**
* Greenland Mean Sea Level (2023)
* Type: Vertical
* Extent: Greenland - offshore
* Mean sea level as determined by satellite altimetry and coastal tide gauges. Defined with respect to GR96
* through the glmsl_2023 hydroid model.
*/
public const EPSG_GREENLAND_MEAN_SEA_LEVEL_2023 = 'urn:ogc:def:datum:EPSG::1387';

/**
* Greenland Vertical Reference 2000
* Type: Vertical
Expand Down Expand Up @@ -12949,6 +12967,32 @@ class Datum
'extent_description' => 'United Kingdom (UK) - on or related to the west coast mainline rail route from London (Euston) via Carlisle to Glasgow',
'help' => 'Defined through the application of the WC05 NTv2 transformation from ETRS89 as realized through OSNet v2009 CORS.
Created in 2024 to support intermediate CRS "WC05-IRF" in the emulation of the WC05 Snake map projection.',
],
'urn:ogc:def:datum:EPSG::1387' => [
'name' => 'Greenland Mean Sea Level (2023)',
'type' => 'vertical',
'ellipsoid' => null,
'prime_meridian' => null,
'conventional_rs' => 1030,
'frame_reference_epoch' => null,
'anchor_epoch' => null,
'extent_name' => 'Greenland - offshore',
'extent_description' => 'Greenland - offshore',
'help' => 'Mean sea level as determined by satellite altimetry and coastal tide gauges. Defined with respect to GR96 through the glmsl_2023 hydroid model.
',
],
'urn:ogc:def:datum:EPSG::1388' => [
'name' => 'Greenland Lowest Astronomic Tide (2023)',
'type' => 'vertical',
'ellipsoid' => null,
'prime_meridian' => null,
'conventional_rs' => 1031,
'frame_reference_epoch' => null,
'anchor_epoch' => null,
'extent_name' => 'Greenland - offshore',
'extent_description' => 'Greenland - offshore',
'help' => 'Mean sea level as determined by satellite altimetry adjusted to LAT using coastal tide gauges and global tide models. Defined with respect to GR96 through the gllat_2023 hydroid model.
',
],
'urn:ogc:def:datum:EPSG::5100' => [
'name' => 'Mean Sea Level',
Expand Down
4 changes: 2 additions & 2 deletions src/Datum/Ellipsoid.php
Original file line number Diff line number Diff line change
Expand Up @@ -780,8 +780,8 @@ public static function fromSRID(string $srid): self
}
if (!isset(self::$cachedObjects[$srid])) {
$data = static::$sridData[$srid];
$semiMajorAxis = ($data['semi_major_axis'] instanceof Length) ? $data['semi_major_axis'] : Length::makeUnit($data['semi_major_axis'], $data['uom']);
$semiMinorAxis = ($data['semi_minor_axis'] instanceof Length) ? $data['semi_minor_axis'] : Length::makeUnit($data['semi_minor_axis'], $data['uom']);
$semiMajorAxis = $data['semi_major_axis'] instanceof Length ? $data['semi_major_axis'] : Length::makeUnit($data['semi_major_axis'], $data['uom']);
$semiMinorAxis = $data['semi_minor_axis'] instanceof Length ? $data['semi_minor_axis'] : Length::makeUnit($data['semi_minor_axis'], $data['uom']);
self::$cachedObjects[$srid] = new self($semiMajorAxis, $semiMinorAxis, $data['name'], $srid);
}

Expand Down
10 changes: 10 additions & 0 deletions src/Geometry/Extents/BoundingBoxOnly/4776.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"id": "urn:ogc:def:area:EPSG::4776",
"title": "Europe-FSU/Greenland - offshore",
"type": "Polygon",
"coordinates": [
[
[-75.09865925115868, 56.2831773899496], [8.088408124305108, 56.2831773899496], [8.088408124305108, 87.12394292865132], [-75.09865925115868, 87.12394292865132], [-75.09865925115868, 56.2831773899496]
]
]
}
1 change: 1 addition & 0 deletions src/Geometry/RegionMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -3686,5 +3686,6 @@ class RegionMap
'urn:ogc:def:area:EPSG::4773' => self::REGION_EUROPE,
'urn:ogc:def:area:EPSG::4774' => self::REGION_EUROPE,
'urn:ogc:def:area:EPSG::4775' => self::REGION_EUROPE,
'urn:ogc:def:area:EPSG::4776' => self::REGION_EUROPE,
];
}

0 comments on commit 84af5ba

Please sign in to comment.