Passed
Push — extents ( 7a19a2...e49118 )
by Doug
89:18 queued 27:41
created

CoordinateOperationMethods::getFunctionName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
/**
4
 * PHPCoord.
5
 *
6
 * @author Doug Wright
7
 */
8
declare(strict_types=1);
9
10
namespace PHPCoord\CoordinateOperation;
11
12
/**
13
 * @internal
14
 */
15
class CoordinateOperationMethods
16
{
17
    /**
18
     * Abridged Molodensky
19
     * This transformation is a truncated Taylor series expansion of a transformation between two geographic coordinate
20
     * systems, modelled as a set of geocentric translations.
21
     */
22
    public const EPSG_ABRIDGED_MOLODENSKY = 'urn:ogc:def:method:EPSG::9605';
23
24
    /**
25
     * Affine geometric transformation.
26
     */
27
    public const EPSG_AFFINE_GEOMETRIC_TRANSFORMATION = 'urn:ogc:def:method:EPSG::9623';
28
29
    /**
30
     * Affine parametric transformation.
31
     */
32
    public const EPSG_AFFINE_PARAMETRIC_TRANSFORMATION = 'urn:ogc:def:method:EPSG::9624';
33
34
    /**
35
     * Albers Equal Area.
36
     */
37
    public const EPSG_ALBERS_EQUAL_AREA = 'urn:ogc:def:method:EPSG::9822';
38
39
    /**
40
     * American Polyconic.
41
     */
42
    public const EPSG_AMERICAN_POLYCONIC = 'urn:ogc:def:method:EPSG::9818';
43
44
    /**
45
     * Axis Order Reversal (2D)
46
     * This is a parameter-less conversion to reverse the order of the axes of a 2D CRS.
47
     */
48
    public const EPSG_AXIS_ORDER_REVERSAL_2D = 'urn:ogc:def:method:EPSG::9843';
49
50
    /**
51
     * Axis Order Reversal (Geographic3D horizontal)
52
     * This is a parameter-less conversion to change the order of horizontal coordinates of a geographic 3D CRS.
53
     */
54
    public const EPSG_AXIS_ORDER_REVERSAL_GEOGRAPHIC3D_HORIZONTAL = 'urn:ogc:def:method:EPSG::9844';
55
56
    /**
57
     * Bonne.
58
     */
59
    public const EPSG_BONNE = 'urn:ogc:def:method:EPSG::9827';
60
61
    /**
62
     * Bonne (South Orientated).
63
     */
64
    public const EPSG_BONNE_SOUTH_ORIENTATED = 'urn:ogc:def:method:EPSG::9828';
65
66
    /**
67
     * Cartesian Grid Offsets
68
     * This transformation allows calculation of coordinates in the target system by adding the parameter value to the
69
     * coordinate values of the point in the source system.
70
     */
71
    public const EPSG_CARTESIAN_GRID_OFFSETS = 'urn:ogc:def:method:EPSG::9656';
72
73
    /**
74
     * Cassini-Soldner.
75
     */
76
    public const EPSG_CASSINI_SOLDNER = 'urn:ogc:def:method:EPSG::9806';
77
78
    /**
79
     * Change of Vertical Unit.
80
     */
81
    public const EPSG_CHANGE_OF_VERTICAL_UNIT = 'urn:ogc:def:method:EPSG::1104';
82
83
    /**
84
     * Colombia Urban.
85
     */
86
    public const EPSG_COLOMBIA_URBAN = 'urn:ogc:def:method:EPSG::1052';
87
88
    /**
89
     * Complex polynomial of degree 3
90
     * Coordinate pairs treated as complex numbers.  This exploits the correlation between the polynomial coefficients
91
     * and leads to a smaller number of coefficients than the general polynomial of degree 3.
92
     */
93
    public const EPSG_COMPLEX_POLYNOMIAL_OF_DEGREE_3 = 'urn:ogc:def:method:EPSG::9652';
94
95
    /**
96
     * Complex polynomial of degree 4
97
     * Coordinate pairs treated as complex numbers.  This exploits the correlation between the polynomial coefficients
98
     * and leads to a smaller number of coefficients than the general polynomial of degree 4.
99
     */
100
    public const EPSG_COMPLEX_POLYNOMIAL_OF_DEGREE_4 = 'urn:ogc:def:method:EPSG::9653';
101
102
    /**
103
     * Coordinate Frame rotation (geocentric domain)
104
     * This method is a specific case of the Molodensky-Badekas (CF) method (code 1034) in which the evaluation point
105
     * is at the geocentre with coordinate values of zero. Note the analogy with the Position Vector method (code 1033)
106
     * but beware of the differences!
107
     */
108
    public const EPSG_COORDINATE_FRAME_ROTATION_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1032';
109
110
    /**
111
     * Coordinate Frame rotation (geog2D domain)
112
     * Note the analogy with the Position Vector tfm (code 9606) but beware of the differences!  The Position Vector
113
     * convention is used by IAG and recommended by ISO 19111. See methods 1032 and 1038 for similar tfms operating
114
     * between other CRS types.
115
     */
116
    public const EPSG_COORDINATE_FRAME_ROTATION_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::9607';
117
118
    /**
119
     * Coordinate Frame rotation (geog3D domain)
120
     * Note the analogy with the Position Vector tfm (code 1037) but beware of the differences!  The Position Vector
121
     * convention is used by IAG and recommended by ISO 19111. See methods 1032 and 9607 for similar tfms operating
122
     * between other CRS types.
123
     */
124
    public const EPSG_COORDINATE_FRAME_ROTATION_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1038';
125
126
    /**
127
     * Equal Earth.
128
     */
129
    public const EPSG_EQUAL_EARTH = 'urn:ogc:def:method:EPSG::1078';
130
131
    /**
132
     * Equidistant Cylindrical
133
     * See method code 1029 for spherical development. See also Pseudo Plate Carree, method code 9825.
134
     */
135
    public const EPSG_EQUIDISTANT_CYLINDRICAL = 'urn:ogc:def:method:EPSG::1028';
136
137
    /**
138
     * Equidistant Cylindrical (Spherical)
139
     * See method code 1028 for ellipsoidal development. If the latitude of natural origin is at the equator, also
140
     * known as Plate Carrée. See also Pseudo Plate Carree, method code 9825.
141
     */
142
    public const EPSG_EQUIDISTANT_CYLINDRICAL_SPHERICAL = 'urn:ogc:def:method:EPSG::1029';
143
144
    /**
145
     * General polynomial of degree 2.
146
     */
147
    public const EPSG_GENERAL_POLYNOMIAL_OF_DEGREE_2 = 'urn:ogc:def:method:EPSG::9645';
148
149
    /**
150
     * General polynomial of degree 3.
151
     */
152
    public const EPSG_GENERAL_POLYNOMIAL_OF_DEGREE_3 = 'urn:ogc:def:method:EPSG::9646';
153
154
    /**
155
     * General polynomial of degree 4.
156
     */
157
    public const EPSG_GENERAL_POLYNOMIAL_OF_DEGREE_4 = 'urn:ogc:def:method:EPSG::9647';
158
159
    /**
160
     * General polynomial of degree 6.
161
     */
162
    public const EPSG_GENERAL_POLYNOMIAL_OF_DEGREE_6 = 'urn:ogc:def:method:EPSG::9648';
163
164
    /**
165
     * Geocentric translation by Grid Interpolation (IGN).
166
     */
167
    public const EPSG_GEOCENTRIC_TRANSLATION_BY_GRID_INTERPOLATION_IGN = 'urn:ogc:def:method:EPSG::1087';
168
169
    /**
170
     * Geocentric translations (geocentric domain)
171
     * This method allows calculation of geocentric coords in the target system by adding the parameter values to the
172
     * corresponding coordinates of the point in the source system. See methods 1035 and 9603 for similar tfms
173
     * operating between other CRSs types.
174
     */
175
    public const EPSG_GEOCENTRIC_TRANSLATIONS_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1031';
176
177
    /**
178
     * Geocentric translations (geog2D domain)
179
     * See methods 1031 and 1035 for similar tfms operating between other CRSs types.
180
     */
181
    public const EPSG_GEOCENTRIC_TRANSLATIONS_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::9603';
182
183
    /**
184
     * Geocentric translations (geog3D domain)
185
     * See methods 1031 and 9603 for similar tfms operating between other CRSs types.
186
     */
187
    public const EPSG_GEOCENTRIC_TRANSLATIONS_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1035';
188
189
    /**
190
     * Geocentric/topocentric conversions.
191
     */
192
    public const EPSG_GEOCENTRIC_TOPOCENTRIC_CONVERSIONS = 'urn:ogc:def:method:EPSG::9836';
193
194
    /**
195
     * Geog3D to Geog2D+GravityRelatedHeight (OSGM-GB).
196
     */
197
    public const EPSG_GEOG3D_TO_GEOG2D_PLUS_GRAVITYRELATEDHEIGHT_OSGM_GB = 'urn:ogc:def:method:EPSG::1097';
198
199
    /**
200
     * Geog3D to Geog2D+GravityRelatedHeight (gtx).
201
     */
202
    public const EPSG_GEOG3D_TO_GEOG2D_PLUS_GRAVITYRELATEDHEIGHT_GTX = 'urn:ogc:def:method:EPSG::1088';
203
204
    /**
205
     * Geographic/geocentric conversions
206
     * In applications it is often concatenated with the 3- 7- or 10-parameter transformations 9603, 9606, 9607 or
207
     * 9636 to form a geographic to geographic transformation.
208
     */
209
    public const EPSG_GEOGRAPHIC_GEOCENTRIC_CONVERSIONS = 'urn:ogc:def:method:EPSG::9602';
210
211
    /**
212
     * Geographic/topocentric conversions.
213
     */
214
    public const EPSG_GEOGRAPHIC_TOPOCENTRIC_CONVERSIONS = 'urn:ogc:def:method:EPSG::9837';
215
216
    /**
217
     * Geographic2D offsets
218
     * This transformation allows calculation of coordinates in the target system by adding the parameter value to the
219
     * coordinate values of the point in the source system.
220
     */
221
    public const EPSG_GEOGRAPHIC2D_OFFSETS = 'urn:ogc:def:method:EPSG::9619';
222
223
    /**
224
     * Geographic2D with Height Offsets
225
     * This transformation allows calculation of coordinates in the target system by adding the parameter value to the
226
     * coordinate values of the point in the source system.
227
     */
228
    public const EPSG_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS = 'urn:ogc:def:method:EPSG::9618';
229
230
    /**
231
     * Geographic3D offsets
232
     * This transformation allows calculation of coordinates in the target system by adding the parameter value to the
233
     * coordinate values of the point in the source system.
234
     */
235
    public const EPSG_GEOGRAPHIC3D_OFFSETS = 'urn:ogc:def:method:EPSG::9660';
236
237
    /**
238
     * Geographic3D to 2D conversion.
239
     */
240
    public const EPSG_GEOGRAPHIC3D_TO_2D_CONVERSION = 'urn:ogc:def:method:EPSG::9659';
241
242
    /**
243
     * Geographic3D to GravityRelatedHeight (NZgeoid)
244
     * EPSG initially gave this method the name "Geographic3D to GravityRelatedHeight (NZgeoid2009)". As the same file
245
     * format was retained for the 2016 geoid, date removed from the method name.
246
     */
247
    public const EPSG_GEOGRAPHIC3D_TO_GRAVITYRELATEDHEIGHT_NZGEOID = 'urn:ogc:def:method:EPSG::1030';
248
249
    /**
250
     * Geographic3D to GravityRelatedHeight (OSGM-GB)
251
     * Transformation of the vertical component of a Geographic 3D CRS to a Vertical CRS.
252
     */
253
    public const EPSG_GEOGRAPHIC3D_TO_GRAVITYRELATEDHEIGHT_OSGM_GB = 'urn:ogc:def:method:EPSG::9663';
254
255
    /**
256
     * Geographic3D to GravityRelatedHeight (gtx)
257
     * Transformation of the vertical component of a Geographic 3D CRS to a Vertical CRS. Grid file format: US NGS .gtx
258
     * (in US sometimes also referred to as 'vdatum format').
259
     */
260
    public const EPSG_GEOGRAPHIC3D_TO_GRAVITYRELATEDHEIGHT_GTX = 'urn:ogc:def:method:EPSG::9665';
261
262
    /**
263
     * Guam Projection
264
     * Simplified form of Oblique Azimuthal Equidistant projection method.
265
     */
266
    public const EPSG_GUAM_PROJECTION = 'urn:ogc:def:method:EPSG::9831';
267
268
    /**
269
     * Height Depth Reversal.
270
     */
271
    public const EPSG_HEIGHT_DEPTH_REVERSAL = 'urn:ogc:def:method:EPSG::1068';
272
273
    /**
274
     * Hotine Oblique Mercator (variant A).
275
     */
276
    public const EPSG_HOTINE_OBLIQUE_MERCATOR_VARIANT_A = 'urn:ogc:def:method:EPSG::9812';
277
278
    /**
279
     * Hotine Oblique Mercator (variant B).
280
     */
281
    public const EPSG_HOTINE_OBLIQUE_MERCATOR_VARIANT_B = 'urn:ogc:def:method:EPSG::9815';
282
283
    /**
284
     * Hyperbolic Cassini-Soldner.
285
     */
286
    public const EPSG_HYPERBOLIC_CASSINI_SOLDNER = 'urn:ogc:def:method:EPSG::9833';
287
288
    /**
289
     * Krovak.
290
     */
291
    public const EPSG_KROVAK = 'urn:ogc:def:method:EPSG::9819';
292
293
    /**
294
     * Krovak (North Orientated).
295
     */
296
    public const EPSG_KROVAK_NORTH_ORIENTATED = 'urn:ogc:def:method:EPSG::1041';
297
298
    /**
299
     * Krovak Modified
300
     * Incorporates a polynomial transformation which is defined to be exact and for practical purposes is considered
301
     * to be a map projection.
302
     */
303
    public const EPSG_KROVAK_MODIFIED = 'urn:ogc:def:method:EPSG::1042';
304
305
    /**
306
     * Krovak Modified (North Orientated)
307
     * Incorporates a polynomial transformation which is defined to be exact and for practical purposes is considered
308
     * to be a map projection.
309
     */
310
    public const EPSG_KROVAK_MODIFIED_NORTH_ORIENTATED = 'urn:ogc:def:method:EPSG::1043';
311
312
    /**
313
     * Laborde Oblique Mercator.
314
     */
315
    public const EPSG_LABORDE_OBLIQUE_MERCATOR = 'urn:ogc:def:method:EPSG::9813';
316
317
    /**
318
     * Lambert Azimuthal Equal Area
319
     * This is the ellipsoidal form of the projection.
320
     */
321
    public const EPSG_LAMBERT_AZIMUTHAL_EQUAL_AREA = 'urn:ogc:def:method:EPSG::9820';
322
323
    /**
324
     * Lambert Azimuthal Equal Area (Spherical)
325
     * This is the spherical form of the projection.  See coordinate operation method Lambert Azimuthal Equal Area
326
     * (code 9820) for ellipsoidal form.  Differences of several tens of metres result from comparison of the two
327
     * methods.
328
     */
329
    public const EPSG_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL = 'urn:ogc:def:method:EPSG::1027';
330
331
    /**
332
     * Lambert Conic Conformal (1SP variant B).
333
     */
334
    public const EPSG_LAMBERT_CONIC_CONFORMAL_1SP_VARIANT_B = 'urn:ogc:def:method:EPSG::1102';
335
336
    /**
337
     * Lambert Conic Conformal (1SP).
338
     */
339
    public const EPSG_LAMBERT_CONIC_CONFORMAL_1SP = 'urn:ogc:def:method:EPSG::9801';
340
341
    /**
342
     * Lambert Conic Conformal (2SP Belgium)
343
     * In 2000 this modification was replaced through use of the regular Lambert Conic Conformal (2SP) method [9802]
344
     * with appropriately modified parameter values.
345
     */
346
    public const EPSG_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM = 'urn:ogc:def:method:EPSG::9803';
347
348
    /**
349
     * Lambert Conic Conformal (2SP Michigan).
350
     */
351
    public const EPSG_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN = 'urn:ogc:def:method:EPSG::1051';
352
353
    /**
354
     * Lambert Conic Conformal (2SP).
355
     */
356
    public const EPSG_LAMBERT_CONIC_CONFORMAL_2SP = 'urn:ogc:def:method:EPSG::9802';
357
358
    /**
359
     * Lambert Conic Conformal (West Orientated).
360
     */
361
    public const EPSG_LAMBERT_CONIC_CONFORMAL_WEST_ORIENTATED = 'urn:ogc:def:method:EPSG::9826';
362
363
    /**
364
     * Lambert Conic Near-Conformal
365
     * The Lambert Near-Conformal projection is derived from the Lambert Conformal Conic projection by truncating the
366
     * series expansion of the projection formulae.
367
     */
368
    public const EPSG_LAMBERT_CONIC_NEAR_CONFORMAL = 'urn:ogc:def:method:EPSG::9817';
369
370
    /**
371
     * Lambert Cylindrical Equal Area
372
     * This is the ellipsoidal form of the projection.
373
     */
374
    public const EPSG_LAMBERT_CYLINDRICAL_EQUAL_AREA = 'urn:ogc:def:method:EPSG::9835';
375
376
    /**
377
     * Lambert Cylindrical Equal Area (Spherical)
378
     * This is the spherical form of the projection.  See coordinate operation method Lambert Cylindrical Equal Area
379
     * (code 9835) for ellipsoidal form.  Differences of several tens of metres result from comparison of the two
380
     * methods.
381
     */
382
    public const EPSG_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL = 'urn:ogc:def:method:EPSG::9834';
383
384
    /**
385
     * Longitude rotation
386
     * This transformation allows calculation of the longitude of a point in the target system by adding the parameter
387
     * value to the longitude value of the point in the source system.
388
     */
389
    public const EPSG_LONGITUDE_ROTATION = 'urn:ogc:def:method:EPSG::9601';
390
391
    /**
392
     * Madrid to ED50 polynomial.
393
     */
394
    public const EPSG_MADRID_TO_ED50_POLYNOMIAL = 'urn:ogc:def:method:EPSG::9617';
395
396
    /**
397
     * Mercator (Spherical).
398
     */
399
    public const EPSG_MERCATOR_SPHERICAL = 'urn:ogc:def:method:EPSG::1026';
400
401
    /**
402
     * Mercator (variant A)
403
     * Note that in these formulas the parameter latitude of natural origin (latO) is not used. However for this
404
     * Mercator (variant A) method the EPSG dataset includes this parameter, which must have a value of zero, for
405
     * completeness in CRS labelling.
406
     */
407
    public const EPSG_MERCATOR_VARIANT_A = 'urn:ogc:def:method:EPSG::9804';
408
409
    /**
410
     * Mercator (variant B)
411
     * Used for most nautical charts.
412
     */
413
    public const EPSG_MERCATOR_VARIANT_B = 'urn:ogc:def:method:EPSG::9805';
414
415
    /**
416
     * Mercator (variant C).
417
     */
418
    public const EPSG_MERCATOR_VARIANT_C = 'urn:ogc:def:method:EPSG::1044';
419
420
    /**
421
     * Modified Azimuthal Equidistant
422
     * Modified form of Oblique Azimuthal Equidistant projection method developed for Polynesian islands. For the
423
     * distances over which these projections are used (under 800km) this modification introduces no significant error.
424
     */
425
    public const EPSG_MODIFIED_AZIMUTHAL_EQUIDISTANT = 'urn:ogc:def:method:EPSG::9832';
426
427
    /**
428
     * Molodensky
429
     * See Abridged Molodensky.
430
     */
431
    public const EPSG_MOLODENSKY = 'urn:ogc:def:method:EPSG::9604';
432
433
    /**
434
     * Molodensky-Badekas (CF geocentric domain)
435
     * See method codes 1039 and 9636 for this operation in other coordinate domains and method code 1061 for opposite
436
     * rotation convention in geocentric domain.
437
     */
438
    public const EPSG_MOLODENSKY_BADEKAS_CF_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1034';
439
440
    /**
441
     * Molodensky-Badekas (CF geog2D domain)
442
     * See method codes 1034 and 1039 for this operation in other coordinate domains and method code 1063 for the
443
     * opposite rotation convention in geographic 2D domain.
444
     */
445
    public const EPSG_MOLODENSKY_BADEKAS_CF_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::9636';
446
447
    /**
448
     * Molodensky-Badekas (CF geog3D domain)
449
     * See method codes 1034 and 9636 for this operation in other coordinate domains and method code 1062 for opposite
450
     * rotation convention in geographic 3D domain.
451
     */
452
    public const EPSG_MOLODENSKY_BADEKAS_CF_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1039';
453
454
    /**
455
     * Molodensky-Badekas (PV geocentric domain)
456
     * See method codes 1062 and 1063 for this operation in other coordinate domains and method code 1034 for opposite
457
     * rotation convention in geocentric domain.
458
     */
459
    public const EPSG_MOLODENSKY_BADEKAS_PV_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1061';
460
461
    /**
462
     * Molodensky-Badekas (PV geog2D domain)
463
     * See method codes 1061 and 1062 for this operation in other coordinate domains and method code 9636 for opposite
464
     * rotation in geographic 2D domain.
465
     */
466
    public const EPSG_MOLODENSKY_BADEKAS_PV_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::1063';
467
468
    /**
469
     * Molodensky-Badekas (PV geog3D domain)
470
     * See method codes 1061 and 1063 for this operation in other coordinate domains and method code 1039 for opposite
471
     * rotation convention in geographic 3D domain.
472
     */
473
    public const EPSG_MOLODENSKY_BADEKAS_PV_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1062';
474
475
    /**
476
     * NADCON5 (2D)
477
     * Geodetic transformation operating on geographic coordinate differences by bi-quadratic interpolation.  Input
478
     * expects longitudes to be positive east in range 0-360° (0° = Greenwich).
479
     */
480
    public const EPSG_NADCON5_2D = 'urn:ogc:def:method:EPSG::1074';
481
482
    /**
483
     * NADCON5 (3D)
484
     * Geodetic transformation operating on geographic coordinate differences by bi-quadratic interpolation.  Input
485
     * expects longitudes to be positive east in range 0-360° (0° = Greenwich).
486
     */
487
    public const EPSG_NADCON5_3D = 'urn:ogc:def:method:EPSG::1075';
488
489
    /**
490
     * NTv2
491
     * Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.  Supersedes
492
     * NTv1 (transformation method code 9614).  Input expects longitudes to be positive west.
493
     */
494
    public const EPSG_NTV2 = 'urn:ogc:def:method:EPSG::9615';
495
496
    /**
497
     * New Zealand Map Grid.
498
     */
499
    public const EPSG_NEW_ZEALAND_MAP_GRID = 'urn:ogc:def:method:EPSG::9811';
500
501
    /**
502
     * Oblique Stereographic
503
     * This is not the same as the projection method of the same name in USGS Professional Paper no. 1395, "Map
504
     * Projections - A Working Manual" by John P. Snyder.
505
     */
506
    public const EPSG_OBLIQUE_STEREOGRAPHIC = 'urn:ogc:def:method:EPSG::9809';
507
508
    /**
509
     * Ordnance Survey National Transformation
510
     * Geodetic transformation between ETRS89 (or WGS 84) and OSGB36 / National Grid.  Uses ETRS89 / National Grid as
511
     * an intermediate coordinate system for bi-linear interpolation of gridded grid coordinate differences.
512
     */
513
    public const EPSG_ORDNANCE_SURVEY_NATIONAL_TRANSFORMATION = 'urn:ogc:def:method:EPSG::9633';
514
515
    /**
516
     * Orthographic
517
     * If the natural origin of the projection is at the topocentric origin, this is a special case of the Vertical
518
     * Perspective (orthographic case) (method code 9839) in which the ellipsoid height of all mapped points is zero (h
519
     * = 0).
520
     */
521
    public const EPSG_ORTHOGRAPHIC = 'urn:ogc:def:method:EPSG::9840';
522
523
    /**
524
     * Point motion (ellipsoidal).
525
     */
526
    public const EPSG_POINT_MOTION_ELLIPSOIDAL = 'urn:ogc:def:method:EPSG::1067';
527
528
    /**
529
     * Point motion (geocentric Cartesian).
530
     */
531
    public const EPSG_POINT_MOTION_GEOCENTRIC_CARTESIAN = 'urn:ogc:def:method:EPSG::1064';
532
533
    /**
534
     * Polar Stereographic (variant A)
535
     * Latitude of natural origin must be either 90 degrees or -90 degrees (or equivalent in alternative angle unit).
536
     */
537
    public const EPSG_POLAR_STEREOGRAPHIC_VARIANT_A = 'urn:ogc:def:method:EPSG::9810';
538
539
    /**
540
     * Polar Stereographic (variant B).
541
     */
542
    public const EPSG_POLAR_STEREOGRAPHIC_VARIANT_B = 'urn:ogc:def:method:EPSG::9829';
543
544
    /**
545
     * Polar Stereographic (variant C).
546
     */
547
    public const EPSG_POLAR_STEREOGRAPHIC_VARIANT_C = 'urn:ogc:def:method:EPSG::9830';
548
549
    /**
550
     * Popular Visualisation Pseudo Mercator
551
     * Applies spherical formulas to the ellipsoid. As such does not have the properties of a true Mercator projection.
552
     */
553
    public const EPSG_POPULAR_VISUALISATION_PSEUDO_MERCATOR = 'urn:ogc:def:method:EPSG::1024';
554
555
    /**
556
     * Position Vector transformation (geocentric domain)
557
     * This method is a specific case of the Molodensky-Badekas (PV) method (code 1061) in which the evaluation point
558
     * is the geocentre with coordinate values of zero. Note the analogy with the Coordinate Frame method (code 1032)
559
     * but beware of the differences!
560
     */
561
    public const EPSG_POSITION_VECTOR_TRANSFORMATION_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1033';
562
563
    /**
564
     * Position Vector transformation (geog2D domain)
565
     * Note the analogy with the Coordinate Frame rotation (code 9607) but beware of the differences!  The Position
566
     * Vector convention is used by IAG and recommended by ISO 19111. See methods 1033 and 1037 for similar tfms
567
     * operating between other CRS types.
568
     */
569
    public const EPSG_POSITION_VECTOR_TRANSFORMATION_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::9606';
570
571
    /**
572
     * Position Vector transformation (geog3D domain)
573
     * Note the analogy with the Coordinate Frame rotation (code 1038) but beware of the differences!  The Position
574
     * Vector convention is used by IAG and recommended by ISO 19111. See methods 1033 and 9606 for similar tfms
575
     * operating between other CRS types.
576
     */
577
    public const EPSG_POSITION_VECTOR_TRANSFORMATION_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1037';
578
579
    /**
580
     * Pseudo Plate Carree
581
     * Used only for depiction of graticule (latitude/longitude) coordinates on a computer display. The axes units are
582
     * decimal degrees and of variable scale. The origin is at Lat = 0, Long = 0. See Equidistant Cylindrical, code
583
     * 1029, for proper Plate Carrée.
584
     */
585
    public const EPSG_PSEUDO_PLATE_CARREE = 'urn:ogc:def:method:EPSG::9825';
586
587
    /**
588
     * Reversible polynomial of degree 13.
589
     */
590
    public const EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_13 = 'urn:ogc:def:method:EPSG::9654';
591
592
    /**
593
     * Reversible polynomial of degree 2
594
     * Reversibility is subject to constraints.  See Guidance Note 7 for conditions and clarification.
595
     */
596
    public const EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_2 = 'urn:ogc:def:method:EPSG::9649';
597
598
    /**
599
     * Reversible polynomial of degree 3
600
     * Reversibility is subject to constraints.  See Guidance Note 7 for conditions and clarification.
601
     */
602
    public const EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_3 = 'urn:ogc:def:method:EPSG::9650';
603
604
    /**
605
     * Reversible polynomial of degree 4
606
     * Reversibility is subject to constraints.  See Guidance Note 7 for conditions and clarification.
607
     */
608
    public const EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_4 = 'urn:ogc:def:method:EPSG::9651';
609
610
    /**
611
     * Similarity transformation
612
     * Defined for two-dimensional coordinate systems.
613
     */
614
    public const EPSG_SIMILARITY_TRANSFORMATION = 'urn:ogc:def:method:EPSG::9621';
615
616
    /**
617
     * Swiss Oblique Cylindrical
618
     * Can be accommodated by Oblique Mercator method (code 9815), for which this method is an approximation (see BfL
619
     * document swissprojectionen.pdf at www.swisstopo.com).
620
     */
621
    public const EPSG_SWISS_OBLIQUE_CYLINDRICAL = 'urn:ogc:def:method:EPSG::9814';
622
623
    /**
624
     * Time-dependent Coordinate Frame rotation (geocen)
625
     * Note the analogy with the Time-dependent Position Vector transformation (code 1053) but beware of the
626
     * differences!  The Position Vector convention is used by IAG. See method codes 1057 and 1058 for similar methods
627
     * operating between other CRS types.
628
     */
629
    public const EPSG_TIME_DEPENDENT_COORDINATE_FRAME_ROTATION_GEOCEN = 'urn:ogc:def:method:EPSG::1056';
630
631
    /**
632
     * Time-dependent Coordinate Frame rotation (geog2D)
633
     * Note the analogy with the Time-dependent Position Vector transformation (code 1054) but beware of the
634
     * differences!  The Position Vector convention is used by IAG. See methods 1056 and 1058 for similar tfms
635
     * operating between other CRS types.
636
     */
637
    public const EPSG_TIME_DEPENDENT_COORDINATE_FRAME_ROTATION_GEOG2D = 'urn:ogc:def:method:EPSG::1057';
638
639
    /**
640
     * Time-dependent Coordinate Frame rotation (geog3D)
641
     * Note the analogy with the Time-dependent Position Vector transformation (code 1055) but beware of the
642
     * differences!  The Position Vector convention is used by IAG. See method codes 1056 and 1057 for similar methods
643
     * operating between other CRS types.
644
     */
645
    public const EPSG_TIME_DEPENDENT_COORDINATE_FRAME_ROTATION_GEOG3D = 'urn:ogc:def:method:EPSG::1058';
646
647
    /**
648
     * Time-dependent Position Vector tfm (geocentric)
649
     * Note the analogy with the Time-dependent Coordinate Frame rotation (code 1056) but beware of the differences!
650
     * The Position Vector convention is used by IAG. See method codes 1054 and 1055 for similar methods operating
651
     * between other CRS types.
652
     */
653
    public const EPSG_TIME_DEPENDENT_POSITION_VECTOR_TFM_GEOCENTRIC = 'urn:ogc:def:method:EPSG::1053';
654
655
    /**
656
     * Time-dependent Position Vector tfm (geog2D)
657
     * Note the analogy with the Time-dependent Coordinate Frame rotation (code 1057) but beware of the differences!
658
     * The Position Vector convention is used by IAG. See method codes 1053 and 1055 for similar methods operating
659
     * between other CRS types.
660
     */
661
    public const EPSG_TIME_DEPENDENT_POSITION_VECTOR_TFM_GEOG2D = 'urn:ogc:def:method:EPSG::1054';
662
663
    /**
664
     * Time-dependent Position Vector tfm (geog3D)
665
     * Note the analogy with the Coordinate Frame rotation (code 1058) but beware of the differences!  The Position
666
     * Vector convention is used by IAG. See method codes 1053 and 1054 for similar methods operating between other CRS
667
     * types.
668
     */
669
    public const EPSG_TIME_DEPENDENT_POSITION_VECTOR_TFM_GEOG3D = 'urn:ogc:def:method:EPSG::1055';
670
671
    /**
672
     * Time-specific Coordinate Frame rotation (geocen)
673
     * Note the analogy with the Time-specific Position Vector method (code 1065) but beware of the differences!
674
     */
675
    public const EPSG_TIME_SPECIFIC_COORDINATE_FRAME_ROTATION_GEOCEN = 'urn:ogc:def:method:EPSG::1066';
676
677
    /**
678
     * Time-specific Position Vector transform (geocen)
679
     * Note the analogy with the Time-specifc Coordinate Frame method (code 1066) but beware of the differences!
680
     */
681
    public const EPSG_TIME_SPECIFIC_POSITION_VECTOR_TRANSFORM_GEOCEN = 'urn:ogc:def:method:EPSG::1065';
682
683
    /**
684
     * Transverse Mercator.
685
     */
686
    public const EPSG_TRANSVERSE_MERCATOR = 'urn:ogc:def:method:EPSG::9807';
687
688
    /**
689
     * Transverse Mercator (South Orientated).
690
     */
691
    public const EPSG_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED = 'urn:ogc:def:method:EPSG::9808';
692
693
    /**
694
     * Transverse Mercator Zoned Grid System
695
     * If locations fall outwith the fixed zones the general Transverse Mercator method (code 9807) must be used for
696
     * each zone.
697
     */
698
    public const EPSG_TRANSVERSE_MERCATOR_ZONED_GRID_SYSTEM = 'urn:ogc:def:method:EPSG::9824';
699
700
    /**
701
     * Vertical Offset
702
     * This transformation allows calculation of height (or depth) in the target system by adding the parameter value
703
     * to the height (or depth)-value of the point in the source system.
704
     */
705
    public const EPSG_VERTICAL_OFFSET = 'urn:ogc:def:method:EPSG::9616';
706
707
    /**
708
     * Vertical Offset and Slope
709
     * This transformation allows calculation of height in the target system by applying the parameter values to the
710
     * height value of the point in the source system.
711
     */
712
    public const EPSG_VERTICAL_OFFSET_AND_SLOPE = 'urn:ogc:def:method:EPSG::1046';
713
714
    /**
715
     * Vertical Offset by Grid Interpolation (NZLVD).
716
     */
717
    public const EPSG_VERTICAL_OFFSET_BY_GRID_INTERPOLATION_NZLVD = 'urn:ogc:def:method:EPSG::1071';
718
719
    /**
720
     * Vertical Offset by Grid Interpolation (gtx).
721
     */
722
    public const EPSG_VERTICAL_OFFSET_BY_GRID_INTERPOLATION_GTX = 'urn:ogc:def:method:EPSG::1084';
723
724
    /**
725
     * Vertical Perspective
726
     * For a viewing point height approaching or at infinity, see the Vertical Perspective (orthographic case) (method
727
     * code 9839).
728
     */
729
    public const EPSG_VERTICAL_PERSPECTIVE = 'urn:ogc:def:method:EPSG::9838';
730
731
    /**
732
     * Vertical Perspective (Orthographic case)
733
     * This is a special case of the general Vertical Perspective (method code 9838) in which the viewing point at
734
     * infinity.
735
     */
736
    public const EPSG_VERTICAL_PERSPECTIVE_ORTHOGRAPHIC_CASE = 'urn:ogc:def:method:EPSG::9839';
737
738
    /**
739
     * zero-tide height to mean-tide height (EVRF2019)
740
     * The offset of -0.08593 is applied to force EVRF2019 mean-tide height to be equal to EVRF2019 height at the
741
     * EVRF2019 nominal origin at Amsterdams Peil.
742
     */
743
    public const EPSG_ZERO_TIDE_HEIGHT_TO_MEAN_TIDE_HEIGHT_EVRF2019 = 'urn:ogc:def:method:EPSG::1107';
744
745
    private const METHOD_CODE_TO_IMPLEMENTATION_LOOKUP = [
746
        self::EPSG_GEOGRAPHIC_GEOCENTRIC_CONVERSIONS => 'geographicGeocentric',
747
        self::EPSG_GEOCENTRIC_TRANSLATIONS_GEOCENTRIC_DOMAIN => 'geocentricTranslation',
748
        self::EPSG_GEOCENTRIC_TRANSLATIONS_GEOG2D_DOMAIN => 'geocentricTranslation',
749
        self::EPSG_COORDINATE_FRAME_ROTATION_GEOCENTRIC_DOMAIN => 'coordinateFrameRotation',
750
        self::EPSG_COORDINATE_FRAME_ROTATION_GEOG2D_DOMAIN => 'coordinateFrameRotation',
751
        self::EPSG_TIME_DEPENDENT_COORDINATE_FRAME_ROTATION_GEOCEN => 'timeDependentCoordinateFrameRotation',
752
        self::EPSG_TIME_SPECIFIC_COORDINATE_FRAME_ROTATION_GEOCEN => 'timeSpecificCoordinateFrameRotation',
753
        self::EPSG_POSITION_VECTOR_TRANSFORMATION_GEOCENTRIC_DOMAIN => 'positionVectorTransformation',
754
        self::EPSG_POSITION_VECTOR_TRANSFORMATION_GEOG2D_DOMAIN => 'positionVectorTransformation',
755
        self::EPSG_TIME_DEPENDENT_POSITION_VECTOR_TFM_GEOCENTRIC => 'timeDependentPositionVectorTransformation',
756
        self::EPSG_TIME_SPECIFIC_POSITION_VECTOR_TRANSFORM_GEOCEN => 'timeSpecificPositionVectorTransformation',
757
        self::EPSG_MOLODENSKY_BADEKAS_CF_GEOG2D_DOMAIN => 'coordinateFrameMolodenskyBadekas',
758
        self::EPSG_MOLODENSKY_BADEKAS_PV_GEOCENTRIC_DOMAIN => 'positionVectorMolodenskyBadekas',
759
        self::EPSG_MOLODENSKY_BADEKAS_PV_GEOG2D_DOMAIN => 'positionVectorMolodenskyBadekas',
760
        self::EPSG_AFFINE_PARAMETRIC_TRANSFORMATION => 'affineParametricTransform',
761
        self::EPSG_ALBERS_EQUAL_AREA => 'albersEqualArea',
762
        self::EPSG_AMERICAN_POLYCONIC => 'americanPolyconic',
763
        self::EPSG_BONNE_SOUTH_ORIENTATED => 'bonneSouthOrientated',
764
        self::EPSG_CARTESIAN_GRID_OFFSETS => 'offsets',
765
        self::EPSG_CASSINI_SOLDNER => 'cassiniSoldner',
766
        self::EPSG_HYPERBOLIC_CASSINI_SOLDNER => 'hyperbolicCassiniSoldner',
767
        self::EPSG_COLOMBIA_URBAN => 'columbiaUrban',
768
        self::EPSG_EQUAL_EARTH => 'equalEarth',
769
        self::EPSG_EQUIDISTANT_CYLINDRICAL => 'equidistantCylindrical',
770
        self::EPSG_GEOGRAPHIC3D_TO_2D_CONVERSION => 'threeDToTwoD',
771
        self::EPSG_GUAM_PROJECTION => 'guamProjection',
772
        self::EPSG_KROVAK => 'krovak',
773
        self::EPSG_KROVAK_NORTH_ORIENTATED => 'krovak',
774
        self::EPSG_KROVAK_MODIFIED => 'krovakModified',
775
        self::EPSG_KROVAK_MODIFIED_NORTH_ORIENTATED => 'krovakModified',
776
        self::EPSG_LAMBERT_AZIMUTHAL_EQUAL_AREA => 'lambertAzimuthalEqualArea',
777
        self::EPSG_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL => 'lambertAzimuthalEqualAreaSpherical',
778
        self::EPSG_LAMBERT_CONIC_CONFORMAL_1SP => 'lambertConicConformal1SP',
779
        self::EPSG_LAMBERT_CONIC_CONFORMAL_1SP_VARIANT_B => 'lambertConicConformal1SPVariantB',
780
        self::EPSG_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM => 'lambertConicConformal2SPBelgium',
781
        self::EPSG_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN => 'lambertConicConformal2SPMichigan',
782
        self::EPSG_LAMBERT_CONIC_CONFORMAL_2SP => 'lambertConicConformal2SP',
783
        self::EPSG_LAMBERT_CONIC_CONFORMAL_WEST_ORIENTATED => 'lambertConicConformalWestOrientated',
784
        self::EPSG_LAMBERT_CONIC_NEAR_CONFORMAL => 'lambertConicNearConformal',
785
        self::EPSG_LAMBERT_CYLINDRICAL_EQUAL_AREA => 'lambertCylindricalEqualArea',
786
        self::EPSG_MODIFIED_AZIMUTHAL_EQUIDISTANT => 'modifiedAzimuthalEquidistant',
787
        self::EPSG_OBLIQUE_STEREOGRAPHIC => 'obliqueStereographic',
788
        self::EPSG_POLAR_STEREOGRAPHIC_VARIANT_A => 'polarStereographicVariantA',
789
        self::EPSG_POLAR_STEREOGRAPHIC_VARIANT_B => 'polarStereographicVariantB',
790
        self::EPSG_POLAR_STEREOGRAPHIC_VARIANT_C => 'polarStereographicVariantC',
791
        self::EPSG_POPULAR_VISUALISATION_PSEUDO_MERCATOR => 'popularVisualisationPseudoMercator',
792
        self::EPSG_SIMILARITY_TRANSFORMATION => 'similarityTransformation',
793
        self::EPSG_MERCATOR_VARIANT_A => 'mercatorVariantA',
794
        self::EPSG_MERCATOR_VARIANT_B => 'mercatorVariantB',
795
        self::EPSG_GEOGRAPHIC2D_OFFSETS => 'geographic2DOffsets',
796
        self::EPSG_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS => 'geographic2DWithHeightOffsets',
797
        self::EPSG_LONGITUDE_ROTATION => 'longitudeRotation',
798
        self::EPSG_HOTINE_OBLIQUE_MERCATOR_VARIANT_A => 'obliqueMercatorHotineVariantA',
799
        self::EPSG_HOTINE_OBLIQUE_MERCATOR_VARIANT_B => 'obliqueMercatorHotineVariantB',
800
        self::EPSG_TRANSVERSE_MERCATOR => 'transverseMercator',
801
        self::EPSG_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED => 'transverseMercator',
802
        self::EPSG_TRANSVERSE_MERCATOR_ZONED_GRID_SYSTEM => 'transverseMercatorZonedGrid',
803
        self::EPSG_VERTICAL_OFFSET => 'verticalOffset',
804
        self::EPSG_VERTICAL_OFFSET_AND_SLOPE => 'verticalOffsetAndSlope',
805
        self::EPSG_GENERAL_POLYNOMIAL_OF_DEGREE_2 => 'generalPolynomial',
806
        self::EPSG_GENERAL_POLYNOMIAL_OF_DEGREE_6 => 'generalPolynomial',
807
        self::EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_4 => 'reversiblePolynomial',
808
        self::EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_13 => 'reversiblePolynomial',
809
        self::EPSG_NEW_ZEALAND_MAP_GRID => 'newZealandMapGrid',
810
        self::EPSG_LABORDE_OBLIQUE_MERCATOR => 'obliqueMercatorLaborde',
811
        self::EPSG_MADRID_TO_ED50_POLYNOMIAL => 'madridToED50Polynomial',
812
        self::EPSG_COMPLEX_POLYNOMIAL_OF_DEGREE_3 => 'complexPolynomial',
813
        self::EPSG_COMPLEX_POLYNOMIAL_OF_DEGREE_4 => 'complexPolynomial',
814
        self::EPSG_AXIS_ORDER_REVERSAL_2D => 'axisReversal',
815
        self::EPSG_AXIS_ORDER_REVERSAL_GEOGRAPHIC3D_HORIZONTAL => 'axisReversal',
816
        self::EPSG_HEIGHT_DEPTH_REVERSAL => 'heightDepthReversal',
817
        self::EPSG_CHANGE_OF_VERTICAL_UNIT => 'changeOfVerticalUnit',
818
        self::EPSG_ORDNANCE_SURVEY_NATIONAL_TRANSFORMATION => 'OSTN15',
819
        self::EPSG_GEOG3D_TO_GEOG2D_PLUS_GRAVITYRELATEDHEIGHT_OSGM_GB => 'geographic3DTo2DPlusGravityHeightOSGM15',
820
        self::EPSG_GEOGRAPHIC3D_TO_GRAVITYRELATEDHEIGHT_OSGM_GB => 'geographic3DToGravityHeightOSGM15',
821
        self::EPSG_NADCON5_2D => 'NADCON5',
822
        self::EPSG_NADCON5_3D => 'NADCON5',
823
        self::EPSG_NTV2 => 'NTv2',
824
        self::EPSG_ZERO_TIDE_HEIGHT_TO_MEAN_TIDE_HEIGHT_EVRF2019 => 'zeroTideHeightToMeanTideHeightEVRF2019',
825
        self::EPSG_GEOCENTRIC_TRANSLATION_BY_GRID_INTERPOLATION_IGN => 'geocentricTranslationByGridInterpolationIGNF',
826
        self::EPSG_GEOG3D_TO_GEOG2D_PLUS_GRAVITYRELATEDHEIGHT_GTX => 'geographic3DTo2DPlusGravityHeightGTX',
827
        self::EPSG_GEOGRAPHIC3D_TO_GRAVITYRELATEDHEIGHT_GTX => 'geographic3DToGravityHeightGTX',
828
        self::EPSG_VERTICAL_OFFSET_BY_GRID_INTERPOLATION_GTX => 'verticalOffsetGTX',
829
    ];
830
831
    public static function getFunctionName(string $srid): string
832
    {
833
        return self::METHOD_CODE_TO_IMPLEMENTATION_LOOKUP[$srid];
834
    }
835
}
836