Passed
Push — 4.x ( 1d49e7...4cde9a )
by Doug
06:44
created

CoordinateOperationMethods::getFunctionName()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 77
Code Lines 73

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 73
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 73
nc 1
nop 1
dl 0
loc 77
ccs 73
cts 73
cp 1
crap 1
rs 8.589
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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::1069';
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 translations  (geog3D domain)
166
     * See methods 1031 and 9603 for similar tfms operating between other CRSs types.
167
     */
168
    public const EPSG_GEOCENTRIC_TRANSLATIONS_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1035';
169
170
    /**
171
     * Geocentric translations (geocentric domain)
172
     * This method allows calculation of geocentric coords in the target system by adding the parameter values to the
173
     * corresponding coordinates of the point in the source system. See methods 1035 and 9603 for similar tfms
174
     * operating between other CRSs types.
175
     */
176
    public const EPSG_GEOCENTRIC_TRANSLATIONS_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1031';
177
178
    /**
179
     * Geocentric translations (geog2D domain)
180
     * See methods 1031 and 1035 for similar tfms operating between other CRSs types.
181
     */
182
    public const EPSG_GEOCENTRIC_TRANSLATIONS_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::9603';
183
184
    /**
185
     * Geocentric/topocentric conversions.
186
     */
187
    public const EPSG_GEOCENTRIC_TOPOCENTRIC_CONVERSIONS = 'urn:ogc:def:method:EPSG::9836';
188
189
    /**
190
     * Geog3D to Geog2D+GravityRelatedHeight (gtx).
191
     */
192
    public const EPSG_GEOG3D_TO_GEOG2D_PLUS_GRAVITYRELATEDHEIGHT_GTX = 'urn:ogc:def:method:EPSG::1088';
193
194
    /**
195
     * Geographic/geocentric conversions
196
     * In applications it is often concatenated with the 3- 7- or 10-parameter transformations 9603, 9606, 9607 or
197
     * 9636 to form a geographic to geographic transformation.
198
     */
199
    public const EPSG_GEOGRAPHIC_GEOCENTRIC_CONVERSIONS = 'urn:ogc:def:method:EPSG::9602';
200
201
    /**
202
     * Geographic/topocentric conversions.
203
     */
204
    public const EPSG_GEOGRAPHIC_TOPOCENTRIC_CONVERSIONS = 'urn:ogc:def:method:EPSG::9837';
205
206
    /**
207
     * Geographic2D offsets
208
     * This transformation allows calculation of coordinates in the target system by adding the parameter value to the
209
     * coordinate values of the point in the source system.
210
     */
211
    public const EPSG_GEOGRAPHIC2D_OFFSETS = 'urn:ogc:def:method:EPSG::9619';
212
213
    /**
214
     * Geographic2D with Height Offsets
215
     * This transformation allows calculation of coordinates in the target system by adding the parameter value to the
216
     * coordinate values of the point in the source system.
217
     */
218
    public const EPSG_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS = 'urn:ogc:def:method:EPSG::9618';
219
220
    /**
221
     * Geographic3D offsets
222
     * This transformation allows calculation of coordinates in the target system by adding the parameter value to the
223
     * coordinate values of the point in the source system.
224
     */
225
    public const EPSG_GEOGRAPHIC3D_OFFSETS = 'urn:ogc:def:method:EPSG::9660';
226
227
    /**
228
     * Geographic3D to 2D conversion.
229
     */
230
    public const EPSG_GEOGRAPHIC3D_TO_2D_CONVERSION = 'urn:ogc:def:method:EPSG::9659';
231
232
    /**
233
     * Guam Projection
234
     * Simplified form of Oblique Azimuthal Equidistant projection method.
235
     */
236
    public const EPSG_GUAM_PROJECTION = 'urn:ogc:def:method:EPSG::9831';
237
238
    /**
239
     * Height Depth Reversal.
240
     */
241
    public const EPSG_HEIGHT_DEPTH_REVERSAL = 'urn:ogc:def:method:EPSG::1068';
242
243
    /**
244
     * Hotine Oblique Mercator (variant A).
245
     */
246
    public const EPSG_HOTINE_OBLIQUE_MERCATOR_VARIANT_A = 'urn:ogc:def:method:EPSG::9812';
247
248
    /**
249
     * Hotine Oblique Mercator (variant B).
250
     */
251
    public const EPSG_HOTINE_OBLIQUE_MERCATOR_VARIANT_B = 'urn:ogc:def:method:EPSG::9815';
252
253
    /**
254
     * Hyperbolic Cassini-Soldner.
255
     */
256
    public const EPSG_HYPERBOLIC_CASSINI_SOLDNER = 'urn:ogc:def:method:EPSG::9833';
257
258
    /**
259
     * Krovak.
260
     */
261
    public const EPSG_KROVAK = 'urn:ogc:def:method:EPSG::9819';
262
263
    /**
264
     * Krovak (North Orientated).
265
     */
266
    public const EPSG_KROVAK_NORTH_ORIENTATED = 'urn:ogc:def:method:EPSG::1041';
267
268
    /**
269
     * Krovak Modified
270
     * Incorporates a polynomial transformation which is defined to be exact and for practical purposes is considered
271
     * to be a map projection.
272
     */
273
    public const EPSG_KROVAK_MODIFIED = 'urn:ogc:def:method:EPSG::1042';
274
275
    /**
276
     * Krovak Modified (North Orientated)
277
     * Incorporates a polynomial transformation which is defined to be exact and for practical purposes is considered
278
     * to be a map projection.
279
     */
280
    public const EPSG_KROVAK_MODIFIED_NORTH_ORIENTATED = 'urn:ogc:def:method:EPSG::1043';
281
282
    /**
283
     * Laborde Oblique Mercator.
284
     */
285
    public const EPSG_LABORDE_OBLIQUE_MERCATOR = 'urn:ogc:def:method:EPSG::9813';
286
287
    /**
288
     * Lambert Azimuthal Equal Area
289
     * This is the ellipsoidal form of the projection.
290
     */
291
    public const EPSG_LAMBERT_AZIMUTHAL_EQUAL_AREA = 'urn:ogc:def:method:EPSG::9820';
292
293
    /**
294
     * Lambert Azimuthal Equal Area (Spherical)
295
     * This is the spherical form of the projection.  See coordinate operation method Lambert Azimuthal Equal Area
296
     * (code 9820) for ellipsoidal form.  Differences of several tens of metres result from comparison of the two
297
     * methods.
298
     */
299
    public const EPSG_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL = 'urn:ogc:def:method:EPSG::1027';
300
301
    /**
302
     * Lambert Conic Conformal (1SP).
303
     */
304
    public const EPSG_LAMBERT_CONIC_CONFORMAL_1SP = 'urn:ogc:def:method:EPSG::9801';
305
306
    /**
307
     * Lambert Conic Conformal (2SP Belgium)
308
     * In 2000 this modification was replaced through use of the regular Lambert Conic Conformal (2SP) method [9802]
309
     * with appropriately modified parameter values.
310
     */
311
    public const EPSG_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM = 'urn:ogc:def:method:EPSG::9803';
312
313
    /**
314
     * Lambert Conic Conformal (2SP Michigan).
315
     */
316
    public const EPSG_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN = 'urn:ogc:def:method:EPSG::1051';
317
318
    /**
319
     * Lambert Conic Conformal (2SP).
320
     */
321
    public const EPSG_LAMBERT_CONIC_CONFORMAL_2SP = 'urn:ogc:def:method:EPSG::9802';
322
323
    /**
324
     * Lambert Conic Conformal (West Orientated).
325
     */
326
    public const EPSG_LAMBERT_CONIC_CONFORMAL_WEST_ORIENTATED = 'urn:ogc:def:method:EPSG::9826';
327
328
    /**
329
     * Lambert Conic Near-Conformal
330
     * The Lambert Near-Conformal projection is derived from the Lambert Conformal Conic projection by truncating the
331
     * series expansion of the projection formulae.
332
     */
333
    public const EPSG_LAMBERT_CONIC_NEAR_CONFORMAL = 'urn:ogc:def:method:EPSG::9817';
334
335
    /**
336
     * Lambert Cylindrical Equal Area
337
     * This is the ellipsoidal form of the projection.
338
     */
339
    public const EPSG_LAMBERT_CYLINDRICAL_EQUAL_AREA = 'urn:ogc:def:method:EPSG::9835';
340
341
    /**
342
     * Lambert Cylindrical Equal Area (Spherical)
343
     * This is the spherical form of the projection.  See coordinate operation method Lambert Cylindrical Equal Area
344
     * (code 9835) for ellipsoidal form.  Differences of several tens of metres result from comparison of the two
345
     * methods.
346
     */
347
    public const EPSG_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL = 'urn:ogc:def:method:EPSG::9834';
348
349
    /**
350
     * Longitude rotation
351
     * This transformation allows calculation of the longitude of a point in the target system by adding the parameter
352
     * value to the longitude value of the point in the source system.
353
     */
354
    public const EPSG_LONGITUDE_ROTATION = 'urn:ogc:def:method:EPSG::9601';
355
356
    /**
357
     * Madrid to ED50 polynomial.
358
     */
359
    public const EPSG_MADRID_TO_ED50_POLYNOMIAL = 'urn:ogc:def:method:EPSG::9617';
360
361
    /**
362
     * Mercator (Spherical).
363
     */
364
    public const EPSG_MERCATOR_SPHERICAL = 'urn:ogc:def:method:EPSG::1026';
365
366
    /**
367
     * Mercator (variant A)
368
     * Note that in these formulas the parameter latitude of natural origin (latO) is not used. However for this
369
     * Mercator (variant A) method the EPSG dataset includes this parameter, which must have a value of zero, for
370
     * completeness in CRS labelling.
371
     */
372
    public const EPSG_MERCATOR_VARIANT_A = 'urn:ogc:def:method:EPSG::9804';
373
374
    /**
375
     * Mercator (variant B)
376
     * Used for most nautical charts.
377
     */
378
    public const EPSG_MERCATOR_VARIANT_B = 'urn:ogc:def:method:EPSG::9805';
379
380
    /**
381
     * Mercator (variant C).
382
     */
383
    public const EPSG_MERCATOR_VARIANT_C = 'urn:ogc:def:method:EPSG::1044';
384
385
    /**
386
     * Modified Azimuthal Equidistant
387
     * Modified form of Oblique Azimuthal Equidistant projection method developed for Polynesian islands. For the
388
     * distances over which these projections are used (under 800km) this modification introduces no significant error.
389
     */
390
    public const EPSG_MODIFIED_AZIMUTHAL_EQUIDISTANT = 'urn:ogc:def:method:EPSG::9832';
391
392
    /**
393
     * Molodensky
394
     * See Abridged Molodensky.
395
     */
396
    public const EPSG_MOLODENSKY = 'urn:ogc:def:method:EPSG::9604';
397
398
    /**
399
     * Molodensky-Badekas (CF geocentric domain)
400
     * See method codes 1039 and 9636 for this operation in other coordinate domains and method code 1061 for opposite
401
     * rotation convention in geocentric domain.
402
     */
403
    public const EPSG_MOLODENSKY_BADEKAS_CF_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1034';
404
405
    /**
406
     * Molodensky-Badekas (CF geog2D domain)
407
     * See method codes 1034 and 1039 for this operation in other coordinate domains and method code 1063 for the
408
     * opposite rotation convention in geographic 2D domain.
409
     */
410
    public const EPSG_MOLODENSKY_BADEKAS_CF_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::9636';
411
412
    /**
413
     * Molodensky-Badekas (CF geog3D domain)
414
     * See method codes 1034 and 9636 for this operation in other coordinate domains and method code 1062 for opposite
415
     * rotation convention in geographic 3D domain.
416
     */
417
    public const EPSG_MOLODENSKY_BADEKAS_CF_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1039';
418
419
    /**
420
     * Molodensky-Badekas (PV geocentric domain)
421
     * See method codes 1062 and 1063 for this operation in other coordinate domains and method code 1034 for opposite
422
     * rotation convention in geocentric domain.
423
     */
424
    public const EPSG_MOLODENSKY_BADEKAS_PV_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1061';
425
426
    /**
427
     * Molodensky-Badekas (PV geog2D domain)
428
     * See method codes 1061 and 1062 for this operation in other coordinate domains and method code 9636 for opposite
429
     * rotation in geographic 2D domain.
430
     */
431
    public const EPSG_MOLODENSKY_BADEKAS_PV_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::1063';
432
433
    /**
434
     * Molodensky-Badekas (PV geog3D domain)
435
     * See method codes 1061 and 1063 for this operation in other coordinate domains and method code 1039 for opposite
436
     * rotation convention in geographic 3D domain.
437
     */
438
    public const EPSG_MOLODENSKY_BADEKAS_PV_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1062';
439
440
    /**
441
     * New Zealand Map Grid.
442
     */
443
    public const EPSG_NEW_ZEALAND_MAP_GRID = 'urn:ogc:def:method:EPSG::9811';
444
445
    /**
446
     * Oblique Stereographic
447
     * This is not the same as the projection method of the same name in USGS Professional Paper no. 1395, "Map
448
     * Projections - A Working Manual" by John P. Snyder.
449
     */
450
    public const EPSG_OBLIQUE_STEREOGRAPHIC = 'urn:ogc:def:method:EPSG::9809';
451
452
    /**
453
     * Orthographic
454
     * If the natural origin of the projection is at the topocentric origin, this is a special case of the Vertical
455
     * Perspective (orthographic case) (method code 9839) in which the ellipsoid height of all mapped points is zero (h
456
     * = 0).
457
     */
458
    public const EPSG_ORTHOGRAPHIC = 'urn:ogc:def:method:EPSG::9840';
459
460
    /**
461
     * Point motion (ellipsoidal).
462
     */
463
    public const EPSG_POINT_MOTION_ELLIPSOIDAL = 'urn:ogc:def:method:EPSG::1067';
464
465
    /**
466
     * Point motion (geocentric Cartesian).
467
     */
468
    public const EPSG_POINT_MOTION_GEOCENTRIC_CARTESIAN = 'urn:ogc:def:method:EPSG::1064';
469
470
    /**
471
     * Polar Stereographic (variant A)
472
     * Latitude of natural origin must be either 90 degrees or -90 degrees (or equivalent in alternative angle unit).
473
     */
474
    public const EPSG_POLAR_STEREOGRAPHIC_VARIANT_A = 'urn:ogc:def:method:EPSG::9810';
475
476
    /**
477
     * Polar Stereographic (variant B).
478
     */
479
    public const EPSG_POLAR_STEREOGRAPHIC_VARIANT_B = 'urn:ogc:def:method:EPSG::9829';
480
481
    /**
482
     * Polar Stereographic (variant C).
483
     */
484
    public const EPSG_POLAR_STEREOGRAPHIC_VARIANT_C = 'urn:ogc:def:method:EPSG::9830';
485
486
    /**
487
     * Popular Visualisation Pseudo Mercator
488
     * Applies spherical formulas to the ellipsoid. As such does not have the properties of a true Mercator projection.
489
     */
490
    public const EPSG_POPULAR_VISUALISATION_PSEUDO_MERCATOR = 'urn:ogc:def:method:EPSG::1024';
491
492
    /**
493
     * Position Vector transformation (geocentric domain)
494
     * This method is a specific case of the Molodensky-Badekas (PV) method (code 1061) in which the evaluation point
495
     * is the geocentre with coordinate values of zero. Note the analogy with the Coordinate Frame method (code 1032)
496
     * but beware of the differences!
497
     */
498
    public const EPSG_POSITION_VECTOR_TRANSFORMATION_GEOCENTRIC_DOMAIN = 'urn:ogc:def:method:EPSG::1033';
499
500
    /**
501
     * Position Vector transformation (geog2D domain)
502
     * Note the analogy with the Coordinate Frame rotation (code 9607) but beware of the differences!  The Position
503
     * Vector convention is used by IAG and recommended by ISO 19111. See methods 1033 and 1037 for similar tfms
504
     * operating between other CRS types.
505
     */
506
    public const EPSG_POSITION_VECTOR_TRANSFORMATION_GEOG2D_DOMAIN = 'urn:ogc:def:method:EPSG::9606';
507
508
    /**
509
     * Position Vector transformation (geog3D domain)
510
     * Note the analogy with the Coordinate Frame rotation (code 1038) but beware of the differences!  The Position
511
     * Vector convention is used by IAG and recommended by ISO 19111. See methods 1033 and 9606 for similar tfms
512
     * operating between other CRS types.
513
     */
514
    public const EPSG_POSITION_VECTOR_TRANSFORMATION_GEOG3D_DOMAIN = 'urn:ogc:def:method:EPSG::1037';
515
516
    /**
517
     * Pseudo Plate Carree
518
     * Used only for depiction of graticule (latitude/longitude) coordinates on a computer display. The axes units are
519
     * decimal degrees and of variable scale. The origin is at Lat = 0, Long = 0. See Equidistant Cylindrical, code
520
     * 1029, for proper Plate Carrée.
521
     */
522
    public const EPSG_PSEUDO_PLATE_CARREE = 'urn:ogc:def:method:EPSG::9825';
523
524
    /**
525
     * Reversible polynomial of degree 13.
526
     */
527
    public const EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_13 = 'urn:ogc:def:method:EPSG::9654';
528
529
    /**
530
     * Reversible polynomial of degree 2
531
     * Reversibility is subject to constraints.  See Guidance Note 7 for conditions and clarification.
532
     */
533
    public const EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_2 = 'urn:ogc:def:method:EPSG::9649';
534
535
    /**
536
     * Reversible polynomial of degree 3
537
     * Reversibility is subject to constraints.  See Guidance Note 7 for conditions and clarification.
538
     */
539
    public const EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_3 = 'urn:ogc:def:method:EPSG::9650';
540
541
    /**
542
     * Reversible polynomial of degree 4
543
     * Reversibility is subject to constraints.  See Guidance Note 7 for conditions and clarification.
544
     */
545
    public const EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_4 = 'urn:ogc:def:method:EPSG::9651';
546
547
    /**
548
     * Similarity transformation
549
     * Defined for two-dimensional coordinate systems.
550
     */
551
    public const EPSG_SIMILARITY_TRANSFORMATION = 'urn:ogc:def:method:EPSG::9621';
552
553
    /**
554
     * Swiss Oblique Cylindrical
555
     * Can be accommodated by Oblique Mercator method (code 9815), for which this method is an approximation (see BfL
556
     * document swissprojectionen.pdf at www.swisstopo.com).
557
     */
558
    public const EPSG_SWISS_OBLIQUE_CYLINDRICAL = 'urn:ogc:def:method:EPSG::9814';
559
560
    /**
561
     * Time-dependent Coordinate Frame rotation (geocen)
562
     * Note the analogy with the Time-dependent Position Vector transformation (code 1053) but beware of the
563
     * differences!  The Position Vector convention is used by IAG. See method codes 1057 and 1058 for similar methods
564
     * operating between other CRS types.
565
     */
566
    public const EPSG_TIME_DEPENDENT_COORDINATE_FRAME_ROTATION_GEOCEN = 'urn:ogc:def:method:EPSG::1056';
567
568
    /**
569
     * Time-dependent Coordinate Frame rotation (geog2D)
570
     * Note the analogy with the Time-dependent Position Vector transformation (code 1054) but beware of the
571
     * differences!  The Position Vector convention is used by IAG. See methods 1056 and 1058 for similar tfms
572
     * operating between other CRS types.
573
     */
574
    public const EPSG_TIME_DEPENDENT_COORDINATE_FRAME_ROTATION_GEOG2D = 'urn:ogc:def:method:EPSG::1057';
575
576
    /**
577
     * Time-dependent Coordinate Frame rotation (geog3D)
578
     * Note the analogy with the Time-dependent Position Vector transformation (code 1055) but beware of the
579
     * differences!  The Position Vector convention is used by IAG. See method codes 1056 and 1057 for similar methods
580
     * operating between other CRS types.
581
     */
582
    public const EPSG_TIME_DEPENDENT_COORDINATE_FRAME_ROTATION_GEOG3D = 'urn:ogc:def:method:EPSG::1058';
583
584
    /**
585
     * Time-dependent Position Vector tfm (geocentric)
586
     * Note the analogy with the Time-dependent Coordinate Frame rotation (code 1056) but beware of the differences!
587
     * The Position Vector convention is used by IAG. See method codes 1054 and 1055 for similar methods operating
588
     * between other CRS types.
589
     */
590
    public const EPSG_TIME_DEPENDENT_POSITION_VECTOR_TFM_GEOCENTRIC = 'urn:ogc:def:method:EPSG::1053';
591
592
    /**
593
     * Time-dependent Position Vector tfm (geog2D)
594
     * Note the analogy with the Time-dependent Coordinate Frame rotation (code 1057) but beware of the differences!
595
     * The Position Vector convention is used by IAG. See method codes 1053 and 1055 for similar methods operating
596
     * between other CRS types.
597
     */
598
    public const EPSG_TIME_DEPENDENT_POSITION_VECTOR_TFM_GEOG2D = 'urn:ogc:def:method:EPSG::1054';
599
600
    /**
601
     * Time-dependent Position Vector tfm (geog3D)
602
     * Note the analogy with the Coordinate Frame rotation (code 1058) but beware of the differences!  The Position
603
     * Vector convention is used by IAG. See method codes 1053 and 1054 for similar methods operating between other CRS
604
     * types.
605
     */
606
    public const EPSG_TIME_DEPENDENT_POSITION_VECTOR_TFM_GEOG3D = 'urn:ogc:def:method:EPSG::1055';
607
608
    /**
609
     * Time-specific Coordinate Frame rotation (geocen)
610
     * Note the analogy with the Time-specific Position Vector method (code 1065) but beware of the differences!
611
     */
612
    public const EPSG_TIME_SPECIFIC_COORDINATE_FRAME_ROTATION_GEOCEN = 'urn:ogc:def:method:EPSG::1066';
613
614
    /**
615
     * Time-specific Position Vector transform (geocen)
616
     * Note the analogy with the Time-specifc Coordinate Frame method (code 1066) but beware of the differences!
617
     */
618
    public const EPSG_TIME_SPECIFIC_POSITION_VECTOR_TRANSFORM_GEOCEN = 'urn:ogc:def:method:EPSG::1065';
619
620
    /**
621
     * Transverse Mercator.
622
     */
623
    public const EPSG_TRANSVERSE_MERCATOR = 'urn:ogc:def:method:EPSG::9807';
624
625
    /**
626
     * Transverse Mercator (South Orientated).
627
     */
628
    public const EPSG_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED = 'urn:ogc:def:method:EPSG::9808';
629
630
    /**
631
     * Transverse Mercator Zoned Grid System
632
     * If locations fall outwith the fixed zones the general Transverse Mercator method (code 9807) must be used for
633
     * each zone.
634
     */
635
    public const EPSG_TRANSVERSE_MERCATOR_ZONED_GRID_SYSTEM = 'urn:ogc:def:method:EPSG::9824';
636
637
    /**
638
     * Vertical Offset
639
     * This transformation allows calculation of height (or depth) in the target system by adding the parameter value
640
     * to the height (or depth)-value of the point in the source system.
641
     */
642
    public const EPSG_VERTICAL_OFFSET = 'urn:ogc:def:method:EPSG::9616';
643
644
    /**
645
     * Vertical Offset and Slope
646
     * This transformation allows calculation of height in the target system by applying the parameter values to the
647
     * height value of the point in the source system.
648
     */
649
    public const EPSG_VERTICAL_OFFSET_AND_SLOPE = 'urn:ogc:def:method:EPSG::1046';
650
651
    /**
652
     * Vertical Perspective
653
     * For a viewing point height approaching or at infinity, see the Vertical Perspective (orthographic case) (method
654
     * code 9839).
655
     */
656
    public const EPSG_VERTICAL_PERSPECTIVE = 'urn:ogc:def:method:EPSG::9838';
657
658
    /**
659
     * Vertical Perspective (Orthographic case)
660
     * This is a special case of the general Vertical Perspective (method code 9838) in which the viewing point at
661
     * infinity.
662
     */
663
    public const EPSG_VERTICAL_PERSPECTIVE_ORTHOGRAPHIC_CASE = 'urn:ogc:def:method:EPSG::9839';
664
665 9
    public static function getFunctionName(string $srid): string
666
    {
667
        $lookup = [
668 9
            self::EPSG_GEOGRAPHIC_GEOCENTRIC_CONVERSIONS => 'geographicGeocentric',
669 9
            self::EPSG_GEOCENTRIC_TRANSLATIONS_GEOCENTRIC_DOMAIN => 'geocentricTranslation',
670 9
            self::EPSG_GEOCENTRIC_TRANSLATIONS_GEOG2D_DOMAIN => 'geocentricTranslation',
671 9
            self::EPSG_COORDINATE_FRAME_ROTATION_GEOCENTRIC_DOMAIN => 'coordinateFrameRotation',
672 9
            self::EPSG_COORDINATE_FRAME_ROTATION_GEOG2D_DOMAIN => 'coordinateFrameRotation',
673 9
            self::EPSG_TIME_DEPENDENT_COORDINATE_FRAME_ROTATION_GEOCEN => 'timeDependentCoordinateFrameRotation',
674 9
            self::EPSG_TIME_SPECIFIC_COORDINATE_FRAME_ROTATION_GEOCEN => 'timeSpecificCoordinateFrameRotation',
675 9
            self::EPSG_POSITION_VECTOR_TRANSFORMATION_GEOCENTRIC_DOMAIN => 'positionVectorTransformation',
676 9
            self::EPSG_POSITION_VECTOR_TRANSFORMATION_GEOG2D_DOMAIN => 'positionVectorTransformation',
677 9
            self::EPSG_TIME_DEPENDENT_POSITION_VECTOR_TFM_GEOCENTRIC => 'timeDependentPositionVectorTransformation',
678 9
            self::EPSG_TIME_SPECIFIC_POSITION_VECTOR_TRANSFORM_GEOCEN => 'timeSpecificPositionVectorTransformation',
679 9
            self::EPSG_MOLODENSKY_BADEKAS_CF_GEOG2D_DOMAIN => 'coordinateFrameMolodenskyBadekas',
680 9
            self::EPSG_MOLODENSKY_BADEKAS_PV_GEOCENTRIC_DOMAIN => 'positionVectorMolodenskyBadekas',
681 9
            self::EPSG_MOLODENSKY_BADEKAS_PV_GEOG2D_DOMAIN => 'positionVectorMolodenskyBadekas',
682 9
            self::EPSG_AFFINE_PARAMETRIC_TRANSFORMATION => 'affineParametricTransform',
683 9
            self::EPSG_ALBERS_EQUAL_AREA => 'albersEqualArea',
684 9
            self::EPSG_AMERICAN_POLYCONIC => 'americanPolyconic',
685 9
            self::EPSG_BONNE_SOUTH_ORIENTATED => 'bonneSouthOrientated',
686 9
            self::EPSG_CARTESIAN_GRID_OFFSETS => 'offsets',
687 9
            self::EPSG_CASSINI_SOLDNER => 'cassiniSoldner',
688 9
            self::EPSG_HYPERBOLIC_CASSINI_SOLDNER => 'hyperbolicCassiniSoldner',
689 9
            self::EPSG_COLOMBIA_URBAN => 'columbiaUrban',
690 9
            self::EPSG_EQUAL_EARTH => 'equalEarth',
691 9
            self::EPSG_EQUIDISTANT_CYLINDRICAL => 'equidistantCylindrical',
692 9
            self::EPSG_GEOGRAPHIC3D_TO_2D_CONVERSION => 'threeDToTwoD',
693 9
            self::EPSG_GUAM_PROJECTION => 'guamProjection',
694 9
            self::EPSG_KROVAK => 'krovak',
695 9
            self::EPSG_KROVAK_NORTH_ORIENTATED => 'krovak',
696 9
            self::EPSG_KROVAK_MODIFIED => 'krovakModified',
697 9
            self::EPSG_KROVAK_MODIFIED_NORTH_ORIENTATED => 'krovakModified',
698 9
            self::EPSG_LAMBERT_AZIMUTHAL_EQUAL_AREA => 'lambertAzimuthalEqualArea',
699 9
            self::EPSG_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL => 'lambertAzimuthalEqualAreaSpherical',
700 9
            self::EPSG_LAMBERT_CONIC_CONFORMAL_1SP => 'lambertConicConformal1SP',
701 9
            self::EPSG_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM => 'lambertConicConformal2SPBelgium',
702 9
            self::EPSG_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN => 'lambertConicConformal2SPMichigan',
703 9
            self::EPSG_LAMBERT_CONIC_CONFORMAL_2SP => 'lambertConicConformal2SP',
704 9
            self::EPSG_LAMBERT_CONIC_CONFORMAL_WEST_ORIENTATED => 'lambertConicConformalWestOrientated',
705 9
            self::EPSG_LAMBERT_CONIC_NEAR_CONFORMAL => 'lambertConicNearConformal',
706 9
            self::EPSG_LAMBERT_CYLINDRICAL_EQUAL_AREA => 'lambertCylindricalEqualArea',
707 9
            self::EPSG_MODIFIED_AZIMUTHAL_EQUIDISTANT => 'modifiedAzimuthalEquidistant',
708 9
            self::EPSG_OBLIQUE_STEREOGRAPHIC => 'obliqueStereographic',
709 9
            self::EPSG_POLAR_STEREOGRAPHIC_VARIANT_A => 'polarStereographicVariantA',
710 9
            self::EPSG_POLAR_STEREOGRAPHIC_VARIANT_B => 'polarStereographicVariantB',
711 9
            self::EPSG_POLAR_STEREOGRAPHIC_VARIANT_C => 'polarStereographicVariantC',
712 9
            self::EPSG_POPULAR_VISUALISATION_PSEUDO_MERCATOR => 'popularVisualisationPseudoMercator',
713 9
            self::EPSG_SIMILARITY_TRANSFORMATION => 'similarityTransformation',
714 9
            self::EPSG_MERCATOR_VARIANT_A => 'mercatorVariantA',
715 9
            self::EPSG_MERCATOR_VARIANT_B => 'mercatorVariantB',
716 9
            self::EPSG_GEOGRAPHIC2D_OFFSETS => 'geographic2DOffsets',
717 9
            self::EPSG_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS => 'geographic2DWithHeightOffsets',
718 9
            self::EPSG_LONGITUDE_ROTATION => 'longitudeRotation',
719 9
            self::EPSG_HOTINE_OBLIQUE_MERCATOR_VARIANT_A => 'obliqueMercatorHotineVariantA',
720 9
            self::EPSG_HOTINE_OBLIQUE_MERCATOR_VARIANT_B => 'obliqueMercatorHotineVariantB',
721 9
            self::EPSG_TRANSVERSE_MERCATOR => 'transverseMercator',
722 9
            self::EPSG_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED => 'transverseMercator',
723 9
            self::EPSG_TRANSVERSE_MERCATOR_ZONED_GRID_SYSTEM => 'transverseMercatorZonedGrid',
724 9
            self::EPSG_VERTICAL_OFFSET => 'verticalOffset',
725 9
            self::EPSG_VERTICAL_OFFSET_AND_SLOPE => 'verticalOffsetAndSlope',
726 9
            self::EPSG_GENERAL_POLYNOMIAL_OF_DEGREE_2 => 'generalPolynomial',
727 9
            self::EPSG_GENERAL_POLYNOMIAL_OF_DEGREE_6 => 'generalPolynomial',
728 9
            self::EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_4 => 'reversiblePolynomial',
729 9
            self::EPSG_REVERSIBLE_POLYNOMIAL_OF_DEGREE_13 => 'reversiblePolynomial',
730 9
            self::EPSG_NEW_ZEALAND_MAP_GRID => 'newZealandMapGrid',
731 9
            self::EPSG_LABORDE_OBLIQUE_MERCATOR => 'obliqueMercatorLaborde',
732 9
            self::EPSG_MADRID_TO_ED50_POLYNOMIAL => 'madridToED50Polynomial',
733 9
            self::EPSG_COMPLEX_POLYNOMIAL_OF_DEGREE_3 => 'complexPolynomial',
734 9
            self::EPSG_COMPLEX_POLYNOMIAL_OF_DEGREE_4 => 'complexPolynomial',
735 9
            self::EPSG_AXIS_ORDER_REVERSAL_2D => 'axisReversal',
736 9
            self::EPSG_AXIS_ORDER_REVERSAL_GEOGRAPHIC3D_HORIZONTAL => 'axisReversal',
737 9
            self::EPSG_HEIGHT_DEPTH_REVERSAL => 'heightDepthReversal',
738 9
            self::EPSG_CHANGE_OF_VERTICAL_UNIT => 'changeOfVerticalUnit',
739
        ];
740
741 9
        return $lookup[$srid];
742
    }
743
}
744