Geo::GDAL  2.4
OSR.pm
Go to the documentation of this file.
1 # This file was automatically generated by SWIG (http://www.swig.org).
2 # Version 4.0.2
3 #
4 # Do not make changes to this file unless you know what you are doing--modify
5 # the SWIG interface file instead.
6 
7 package Geo::OSR;
8 use base qw(Exporter);
9 use base qw(DynaLoader);
10 package Geo::OSRc;
11 bootstrap Geo::OSR;
12 package Geo::OSR;
13 @EXPORT = qw();
14 
15 # ---------- BASE METHODS -------------
16 
17 package Geo::OSR;
18 
19 sub TIEHASH {
20  my ($classname,$obj) = @_;
21  return bless $obj, $classname;
22 }
23 
24 sub CLEAR { }
25 
26 sub FIRSTKEY { }
27 
28 sub NEXTKEY { }
29 
30 sub FETCH {
31  my ($self,$field) = @_;
32  my $member_func = "swig_${field}_get";
33  $self->$member_func();
34 }
35 
36 sub STORE {
37  my ($self,$field,$newval) = @_;
38  my $member_func = "swig_${field}_set";
39  $self->$member_func($newval);
40 }
41 
42 sub this {
43  my $ptr = shift;
44  return tied(%$ptr);
45 }
46 
47 
48 # ------- FUNCTION WRAPPERS --------
49 
50 package Geo::OSR;
51 
52 *UseExceptions = *Geo::OSRc::UseExceptions;
53 *DontUseExceptions = *Geo::OSRc::DontUseExceptions;
54 *GetWellKnownGeogCSAsWKT = *Geo::OSRc::GetWellKnownGeogCSAsWKT;
55 *GetUserInputAsWKT = *Geo::OSRc::GetUserInputAsWKT;
56 *OSRAreaOfUse_west_lon_degree_get = *Geo::OSRc::OSRAreaOfUse_west_lon_degree_get;
57 *OSRAreaOfUse_south_lat_degree_get = *Geo::OSRc::OSRAreaOfUse_south_lat_degree_get;
58 *OSRAreaOfUse_east_lon_degree_get = *Geo::OSRc::OSRAreaOfUse_east_lon_degree_get;
59 *OSRAreaOfUse_north_lat_degree_get = *Geo::OSRc::OSRAreaOfUse_north_lat_degree_get;
60 *OSRAreaOfUse_name_get = *Geo::OSRc::OSRAreaOfUse_name_get;
61 *CreateCoordinateTransformation = *Geo::OSRc::CreateCoordinateTransformation;
62 *SetPROJSearchPath = *Geo::OSRc::SetPROJSearchPath;
63 *SetPROJSearchPaths = *Geo::OSRc::SetPROJSearchPaths;
64 *GetPROJSearchPaths = *Geo::OSRc::GetPROJSearchPaths;
65 *GetPROJVersionMajor = *Geo::OSRc::GetPROJVersionMajor;
66 *GetPROJVersionMinor = *Geo::OSRc::GetPROJVersionMinor;
67 *GetPROJVersionMicro = *Geo::OSRc::GetPROJVersionMicro;
68 
69 ############# Class : Geo::OSR::AreaOfUse ##############
70 
71 package Geo::OSR::AreaOfUse;
72 use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
73 @ISA = qw( Geo::OSR );
74 %OWNER = ();
75 %ITERATORS = ();
76 *swig_west_lon_degree_get = *Geo::OSRc::AreaOfUse_west_lon_degree_get;
77 *swig_west_lon_degree_set = *Geo::OSRc::AreaOfUse_west_lon_degree_set;
78 *swig_south_lat_degree_get = *Geo::OSRc::AreaOfUse_south_lat_degree_get;
79 *swig_south_lat_degree_set = *Geo::OSRc::AreaOfUse_south_lat_degree_set;
80 *swig_east_lon_degree_get = *Geo::OSRc::AreaOfUse_east_lon_degree_get;
81 *swig_east_lon_degree_set = *Geo::OSRc::AreaOfUse_east_lon_degree_set;
82 *swig_north_lat_degree_get = *Geo::OSRc::AreaOfUse_north_lat_degree_get;
83 *swig_north_lat_degree_set = *Geo::OSRc::AreaOfUse_north_lat_degree_set;
84 *swig_name_get = *Geo::OSRc::AreaOfUse_name_get;
85 *swig_name_set = *Geo::OSRc::AreaOfUse_name_set;
86 sub new {
87  my $pkg = shift;
88  my $self = Geo::OSRc::new_AreaOfUse(@_);
89  bless $self, $pkg if defined($self);
90 }
91 
92 sub DESTROY {
93  return unless $_[0]->isa('HASH');
94  my $self = tied(%{$_[0]});
95  return unless defined $self;
96  delete $ITERATORS{$self};
97  if (exists $OWNER{$self}) {
98  Geo::OSRc::delete_AreaOfUse($self);
99  delete $OWNER{$self};
100  }
101 }
102 
103 sub DISOWN {
104  my $self = shift;
105  my $ptr = tied(%$self);
106  delete $OWNER{$ptr};
107 }
108 
109 sub ACQUIRE {
110  my $self = shift;
111  my $ptr = tied(%$self);
112  $OWNER{$ptr} = 1;
113 }
114 
115 
116 ############# Class : Geo::OSR::SpatialReference ##############
117 
118 package Geo::OSR::SpatialReference;
119 use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
120 @ISA = qw( Geo::OSR );
121 %OWNER = ();
122 %ITERATORS = ();
123 use Carp;
124 sub new {
125  my $pkg = shift;
126  my %param = @_;
127  my $self = Geo::OSRc::new_SpatialReference();
128  if (exists $param{WKT}) {
129  ImportFromWkt($self, $param{WKT});
130  } elsif (exists $param{Text}) {
131  ImportFromWkt($self, $param{Text});
132  } elsif (exists $param{Proj4}) {
133  ImportFromProj4($self, $param{Proj4});
134  } elsif (exists $param{ESRI}) {
135  ImportFromESRI($self, @{$param{ESRI}});
136  } elsif (exists $param{EPSG}) {
137  ImportFromEPSG($self, $param{EPSG});
138  } elsif (exists $param{EPSGA}) {
139  ImportFromEPSGA($self, $param{EPSGA});
140  } elsif (exists $param{PCI}) {
141  ImportFromPCI($self, @{$param{PCI}});
142  } elsif (exists $param{USGS}) {
143  ImportFromUSGS($self, @{$param{USGS}});
144  } elsif (exists $param{XML}) {
145  ImportFromXML($self, $param{XML});
146  } elsif (exists $param{GML}) {
147  ImportFromGML($self, $param{GML});
148  } elsif (exists $param{URL}) {
149  ImportFromUrl($self, $param{URL});
150  } elsif (exists $param{ERMapper}) {
151  ImportFromERM($self, @{$param{ERMapper}});
152  } elsif (exists $param{ERM}) {
153  ImportFromERM($self, @{$param{ERM}});
154  } elsif (exists $param{MICoordSys}) {
155  ImportFromMICoordSys($self, $param{MICoordSys});
156  } elsif (exists $param{MapInfoCS}) {
157  ImportFromMICoordSys($self, $param{MapInfoCS});
158  } elsif (exists $param{WGS}) {
159  eval {
160  SetWellKnownGeogCS($self, 'WGS'.$param{WGS});
161  };
162  confess last_error() if $@;
163  } else {
164  error("Unrecognized/missing parameters: @_.");
165  }
166  bless $self, $pkg if defined $self;
167 }
168 
169 sub DESTROY {
170  return unless $_[0]->isa('HASH');
171  my $self = tied(%{$_[0]});
172  return unless defined $self;
173  delete $ITERATORS{$self};
174  if (exists $OWNER{$self}) {
175  Geo::OSRc::delete_SpatialReference($self);
176  delete $OWNER{$self};
177  }
178 }
179 
180 *GetName = *Geo::OSRc::SpatialReference_GetName;
181 *IsSame = *Geo::OSRc::SpatialReference_IsSame;
182 *IsSameGeogCS = *Geo::OSRc::SpatialReference_IsSameGeogCS;
183 *IsSameVertCS = *Geo::OSRc::SpatialReference_IsSameVertCS;
184 *IsGeographic = *Geo::OSRc::SpatialReference_IsGeographic;
185 *IsDerivedGeographic = *Geo::OSRc::SpatialReference_IsDerivedGeographic;
186 *IsProjected = *Geo::OSRc::SpatialReference_IsProjected;
187 *IsCompound = *Geo::OSRc::SpatialReference_IsCompound;
188 *IsGeocentric = *Geo::OSRc::SpatialReference_IsGeocentric;
189 *IsLocal = *Geo::OSRc::SpatialReference_IsLocal;
190 *IsVertical = *Geo::OSRc::SpatialReference_IsVertical;
191 *EPSGTreatsAsLatLong = *Geo::OSRc::SpatialReference_EPSGTreatsAsLatLong;
192 *EPSGTreatsAsNorthingEasting = *Geo::OSRc::SpatialReference_EPSGTreatsAsNorthingEasting;
193 *SetAuthority = *Geo::OSRc::SpatialReference_SetAuthority;
194 *GetAttrValue = *Geo::OSRc::SpatialReference_GetAttrValue;
195 *SetAttrValue = *Geo::OSRc::SpatialReference_SetAttrValue;
196 *SetAngularUnits = *Geo::OSRc::SpatialReference_SetAngularUnits;
197 *GetAngularUnits = *Geo::OSRc::SpatialReference_GetAngularUnits;
198 *GetAngularUnitsName = *Geo::OSRc::SpatialReference_GetAngularUnitsName;
199 *SetTargetLinearUnits = *Geo::OSRc::SpatialReference_SetTargetLinearUnits;
200 *SetLinearUnits = *Geo::OSRc::SpatialReference_SetLinearUnits;
201 *SetLinearUnitsAndUpdateParameters = *Geo::OSRc::SpatialReference_SetLinearUnitsAndUpdateParameters;
202 *GetTargetLinearUnits = *Geo::OSRc::SpatialReference_GetTargetLinearUnits;
203 *GetLinearUnits = *Geo::OSRc::SpatialReference_GetLinearUnits;
204 *GetLinearUnitsName = *Geo::OSRc::SpatialReference_GetLinearUnitsName;
205 *GetAuthorityCode = *Geo::OSRc::SpatialReference_GetAuthorityCode;
206 *GetAuthorityName = *Geo::OSRc::SpatialReference_GetAuthorityName;
207 *GetAreaOfUse = *Geo::OSRc::SpatialReference_GetAreaOfUse;
208 *GetAxisName = *Geo::OSRc::SpatialReference_GetAxisName;
209 *GetAxesCount = *Geo::OSRc::SpatialReference_GetAxesCount;
210 *GetAxisOrientation = *Geo::OSRc::SpatialReference_GetAxisOrientation;
211 *GetAxisMappingStrategy = *Geo::OSRc::SpatialReference_GetAxisMappingStrategy;
212 *SetAxisMappingStrategy = *Geo::OSRc::SpatialReference_SetAxisMappingStrategy;
213 *GetDataAxisToSRSAxisMapping = *Geo::OSRc::SpatialReference_GetDataAxisToSRSAxisMapping;
214 *SetDataAxisToSRSAxisMapping = *Geo::OSRc::SpatialReference_SetDataAxisToSRSAxisMapping;
215 *SetUTM = *Geo::OSRc::SpatialReference_SetUTM;
216 *_GetUTMZone = *Geo::OSRc::SpatialReference__GetUTMZone;
217 *SetStatePlane = *Geo::OSRc::SpatialReference_SetStatePlane;
218 *AutoIdentifyEPSG = *Geo::OSRc::SpatialReference_AutoIdentifyEPSG;
219 *SetProjection = *Geo::OSRc::SpatialReference_SetProjection;
220 *SetProjParm = *Geo::OSRc::SpatialReference_SetProjParm;
221 *GetProjParm = *Geo::OSRc::SpatialReference_GetProjParm;
222 *SetNormProjParm = *Geo::OSRc::SpatialReference_SetNormProjParm;
223 *GetNormProjParm = *Geo::OSRc::SpatialReference_GetNormProjParm;
224 *GetSemiMajor = *Geo::OSRc::SpatialReference_GetSemiMajor;
225 *GetSemiMinor = *Geo::OSRc::SpatialReference_GetSemiMinor;
226 *GetInvFlattening = *Geo::OSRc::SpatialReference_GetInvFlattening;
227 *SetACEA = *Geo::OSRc::SpatialReference_SetACEA;
228 *SetAE = *Geo::OSRc::SpatialReference_SetAE;
229 *SetBonne = *Geo::OSRc::SpatialReference_SetBonne;
230 *SetCEA = *Geo::OSRc::SpatialReference_SetCEA;
231 *SetCS = *Geo::OSRc::SpatialReference_SetCS;
232 *SetEC = *Geo::OSRc::SpatialReference_SetEC;
233 *SetEckertIV = *Geo::OSRc::SpatialReference_SetEckertIV;
234 *SetEckertVI = *Geo::OSRc::SpatialReference_SetEckertVI;
235 *SetEquirectangular = *Geo::OSRc::SpatialReference_SetEquirectangular;
236 *SetEquirectangular2 = *Geo::OSRc::SpatialReference_SetEquirectangular2;
237 *SetGaussSchreiberTMercator = *Geo::OSRc::SpatialReference_SetGaussSchreiberTMercator;
238 *SetGS = *Geo::OSRc::SpatialReference_SetGS;
239 *SetGH = *Geo::OSRc::SpatialReference_SetGH;
240 *SetIGH = *Geo::OSRc::SpatialReference_SetIGH;
241 *SetGEOS = *Geo::OSRc::SpatialReference_SetGEOS;
242 *SetGnomonic = *Geo::OSRc::SpatialReference_SetGnomonic;
243 *SetHOM = *Geo::OSRc::SpatialReference_SetHOM;
244 *SetHOM2PNO = *Geo::OSRc::SpatialReference_SetHOM2PNO;
245 *SetKrovak = *Geo::OSRc::SpatialReference_SetKrovak;
246 *SetLAEA = *Geo::OSRc::SpatialReference_SetLAEA;
247 *SetLCC = *Geo::OSRc::SpatialReference_SetLCC;
248 *SetLCC1SP = *Geo::OSRc::SpatialReference_SetLCC1SP;
249 *SetLCCB = *Geo::OSRc::SpatialReference_SetLCCB;
250 *SetMC = *Geo::OSRc::SpatialReference_SetMC;
251 *SetMercator = *Geo::OSRc::SpatialReference_SetMercator;
252 *SetMercator2SP = *Geo::OSRc::SpatialReference_SetMercator2SP;
253 *SetMollweide = *Geo::OSRc::SpatialReference_SetMollweide;
254 *SetNZMG = *Geo::OSRc::SpatialReference_SetNZMG;
255 *SetOS = *Geo::OSRc::SpatialReference_SetOS;
256 *SetOrthographic = *Geo::OSRc::SpatialReference_SetOrthographic;
257 *SetPolyconic = *Geo::OSRc::SpatialReference_SetPolyconic;
258 *SetPS = *Geo::OSRc::SpatialReference_SetPS;
259 *SetRobinson = *Geo::OSRc::SpatialReference_SetRobinson;
260 *SetSinusoidal = *Geo::OSRc::SpatialReference_SetSinusoidal;
261 *SetStereographic = *Geo::OSRc::SpatialReference_SetStereographic;
262 *SetSOC = *Geo::OSRc::SpatialReference_SetSOC;
263 *SetTM = *Geo::OSRc::SpatialReference_SetTM;
264 *SetTMVariant = *Geo::OSRc::SpatialReference_SetTMVariant;
265 *SetTMG = *Geo::OSRc::SpatialReference_SetTMG;
266 *SetTMSO = *Geo::OSRc::SpatialReference_SetTMSO;
267 *SetVDG = *Geo::OSRc::SpatialReference_SetVDG;
268 *SetVerticalPerspective = *Geo::OSRc::SpatialReference_SetVerticalPerspective;
269 *SetWellKnownGeogCS = *Geo::OSRc::SpatialReference_SetWellKnownGeogCS;
270 *SetFromUserInput = *Geo::OSRc::SpatialReference_SetFromUserInput;
271 *CopyGeogCSFrom = *Geo::OSRc::SpatialReference_CopyGeogCSFrom;
272 *SetTOWGS84 = *Geo::OSRc::SpatialReference_SetTOWGS84;
273 *HasTOWGS84 = *Geo::OSRc::SpatialReference_HasTOWGS84;
274 *GetTOWGS84 = *Geo::OSRc::SpatialReference_GetTOWGS84;
275 *AddGuessedTOWGS84 = *Geo::OSRc::SpatialReference_AddGuessedTOWGS84;
276 *SetLocalCS = *Geo::OSRc::SpatialReference_SetLocalCS;
277 *SetGeogCS = *Geo::OSRc::SpatialReference_SetGeogCS;
278 *SetProjCS = *Geo::OSRc::SpatialReference_SetProjCS;
279 *SetGeocCS = *Geo::OSRc::SpatialReference_SetGeocCS;
280 *SetVertCS = *Geo::OSRc::SpatialReference_SetVertCS;
281 *SetCompoundCS = *Geo::OSRc::SpatialReference_SetCompoundCS;
282 *ImportFromWkt = *Geo::OSRc::SpatialReference_ImportFromWkt;
283 *ImportFromProj4 = *Geo::OSRc::SpatialReference_ImportFromProj4;
284 *ImportFromUrl = *Geo::OSRc::SpatialReference_ImportFromUrl;
285 *ImportFromESRI = *Geo::OSRc::SpatialReference_ImportFromESRI;
286 *ImportFromEPSG = *Geo::OSRc::SpatialReference_ImportFromEPSG;
287 *ImportFromEPSGA = *Geo::OSRc::SpatialReference_ImportFromEPSGA;
288 *ImportFromPCI = *Geo::OSRc::SpatialReference_ImportFromPCI;
289 *ImportFromUSGS = *Geo::OSRc::SpatialReference_ImportFromUSGS;
290 *ImportFromXML = *Geo::OSRc::SpatialReference_ImportFromXML;
291 *ImportFromERM = *Geo::OSRc::SpatialReference_ImportFromERM;
292 *ImportFromMICoordSys = *Geo::OSRc::SpatialReference_ImportFromMICoordSys;
293 *ImportFromOzi = *Geo::OSRc::SpatialReference_ImportFromOzi;
294 *ExportToWkt = *Geo::OSRc::SpatialReference_ExportToWkt;
295 *ExportToPrettyWkt = *Geo::OSRc::SpatialReference_ExportToPrettyWkt;
296 *ExportToPROJJSON = *Geo::OSRc::SpatialReference_ExportToPROJJSON;
297 *ExportToProj4 = *Geo::OSRc::SpatialReference_ExportToProj4;
298 *ExportToPCI = *Geo::OSRc::SpatialReference_ExportToPCI;
299 *ExportToUSGS = *Geo::OSRc::SpatialReference_ExportToUSGS;
300 *ExportToXML = *Geo::OSRc::SpatialReference_ExportToXML;
301 *ExportToMICoordSys = *Geo::OSRc::SpatialReference_ExportToMICoordSys;
302 *CloneGeogCS = *Geo::OSRc::SpatialReference_CloneGeogCS;
303 *Clone = *Geo::OSRc::SpatialReference_Clone;
304 *Validate = *Geo::OSRc::SpatialReference_Validate;
305 *MorphToESRI = *Geo::OSRc::SpatialReference_MorphToESRI;
306 *MorphFromESRI = *Geo::OSRc::SpatialReference_MorphFromESRI;
307 *ConvertToOtherProjection = *Geo::OSRc::SpatialReference_ConvertToOtherProjection;
308 *PromoteTo3D = *Geo::OSRc::SpatialReference_PromoteTo3D;
309 *DemoteTo2D = *Geo::OSRc::SpatialReference_DemoteTo2D;
310 sub DISOWN {
311  my $self = shift;
312  my $ptr = tied(%$self);
313  delete $OWNER{$ptr};
314 }
315 
316 sub ACQUIRE {
317  my $self = shift;
318  my $ptr = tied(%$self);
319  $OWNER{$ptr} = 1;
320 }
321 
322 
323 ############# Class : Geo::OSR::CoordinateTransformationOptions ##############
324 
325 package Geo::OSR::CoordinateTransformationOptions;
326 use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
327 @ISA = qw( Geo::OSR );
328 %OWNER = ();
329 %ITERATORS = ();
330 sub new {
331  my $pkg = shift;
332  my $self = Geo::OSRc::new_CoordinateTransformationOptions(@_);
333  bless $self, $pkg if defined($self);
334 }
335 
336 sub DESTROY {
337  return unless $_[0]->isa('HASH');
338  my $self = tied(%{$_[0]});
339  return unless defined $self;
340  delete $ITERATORS{$self};
341  if (exists $OWNER{$self}) {
342  Geo::OSRc::delete_CoordinateTransformationOptions($self);
343  delete $OWNER{$self};
344  }
345 }
346 
347 *SetAreaOfInterest = *Geo::OSRc::CoordinateTransformationOptions_SetAreaOfInterest;
348 *SetOperation = *Geo::OSRc::CoordinateTransformationOptions_SetOperation;
349 sub DISOWN {
350  my $self = shift;
351  my $ptr = tied(%$self);
352  delete $OWNER{$ptr};
353 }
354 
355 sub ACQUIRE {
356  my $self = shift;
357  my $ptr = tied(%$self);
358  $OWNER{$ptr} = 1;
359 }
360 
361 
362 ############# Class : Geo::OSR::CoordinateTransformation ##############
363 
364 package Geo::OSR::CoordinateTransformation;
365 use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
366 @ISA = qw( Geo::OSR );
367 %OWNER = ();
368 %ITERATORS = ();
369 sub new {
370  my $pkg = shift;
371  my $self = Geo::OSRc::new_CoordinateTransformation(@_);
372  bless $self, $pkg if defined($self);
373 }
374 
375 sub DESTROY {
376  return unless $_[0]->isa('HASH');
377  my $self = tied(%{$_[0]});
378  return unless defined $self;
379  delete $ITERATORS{$self};
380  if (exists $OWNER{$self}) {
381  Geo::OSRc::delete_CoordinateTransformation($self);
382  delete $OWNER{$self};
383  }
384 }
385 
386 *TransformPoint = *Geo::OSRc::CoordinateTransformation_TransformPoint;
387 *_TransformPoints = *Geo::OSRc::CoordinateTransformation__TransformPoints;
388 sub DISOWN {
389  my $self = shift;
390  my $ptr = tied(%$self);
391  delete $OWNER{$ptr};
392 }
393 
394 sub ACQUIRE {
395  my $self = shift;
396  my $ptr = tied(%$self);
397  $OWNER{$ptr} = 1;
398 }
399 
400 
401 # ------- VARIABLE STUBS --------
402 
403 package Geo::OSR;
404 
405 *SRS_WKT_WGS84_LAT_LONG = *Geo::OSRc::SRS_WKT_WGS84_LAT_LONG;
406 *SRS_PT_ALBERS_CONIC_EQUAL_AREA = *Geo::OSRc::SRS_PT_ALBERS_CONIC_EQUAL_AREA;
407 *SRS_PT_AZIMUTHAL_EQUIDISTANT = *Geo::OSRc::SRS_PT_AZIMUTHAL_EQUIDISTANT;
408 *SRS_PT_CASSINI_SOLDNER = *Geo::OSRc::SRS_PT_CASSINI_SOLDNER;
409 *SRS_PT_CYLINDRICAL_EQUAL_AREA = *Geo::OSRc::SRS_PT_CYLINDRICAL_EQUAL_AREA;
410 *SRS_PT_BONNE = *Geo::OSRc::SRS_PT_BONNE;
411 *SRS_PT_ECKERT_I = *Geo::OSRc::SRS_PT_ECKERT_I;
412 *SRS_PT_ECKERT_II = *Geo::OSRc::SRS_PT_ECKERT_II;
413 *SRS_PT_ECKERT_III = *Geo::OSRc::SRS_PT_ECKERT_III;
414 *SRS_PT_ECKERT_IV = *Geo::OSRc::SRS_PT_ECKERT_IV;
415 *SRS_PT_ECKERT_V = *Geo::OSRc::SRS_PT_ECKERT_V;
416 *SRS_PT_ECKERT_VI = *Geo::OSRc::SRS_PT_ECKERT_VI;
417 *SRS_PT_EQUIDISTANT_CONIC = *Geo::OSRc::SRS_PT_EQUIDISTANT_CONIC;
418 *SRS_PT_EQUIRECTANGULAR = *Geo::OSRc::SRS_PT_EQUIRECTANGULAR;
419 *SRS_PT_GALL_STEREOGRAPHIC = *Geo::OSRc::SRS_PT_GALL_STEREOGRAPHIC;
420 *SRS_PT_GAUSSSCHREIBERTMERCATOR = *Geo::OSRc::SRS_PT_GAUSSSCHREIBERTMERCATOR;
421 *SRS_PT_GEOSTATIONARY_SATELLITE = *Geo::OSRc::SRS_PT_GEOSTATIONARY_SATELLITE;
422 *SRS_PT_GOODE_HOMOLOSINE = *Geo::OSRc::SRS_PT_GOODE_HOMOLOSINE;
423 *SRS_PT_IGH = *Geo::OSRc::SRS_PT_IGH;
424 *SRS_PT_GNOMONIC = *Geo::OSRc::SRS_PT_GNOMONIC;
425 *SRS_PT_HOTINE_OBLIQUE_MERCATOR_AZIMUTH_CENTER = *Geo::OSRc::SRS_PT_HOTINE_OBLIQUE_MERCATOR_AZIMUTH_CENTER;
426 *SRS_PT_HOTINE_OBLIQUE_MERCATOR = *Geo::OSRc::SRS_PT_HOTINE_OBLIQUE_MERCATOR;
427 *SRS_PT_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN = *Geo::OSRc::SRS_PT_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN;
428 *SRS_PT_LABORDE_OBLIQUE_MERCATOR = *Geo::OSRc::SRS_PT_LABORDE_OBLIQUE_MERCATOR;
429 *SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP = *Geo::OSRc::SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP;
430 *SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP = *Geo::OSRc::SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP;
431 *SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP_BELGIUM = *Geo::OSRc::SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP_BELGIUM;
432 *SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA = *Geo::OSRc::SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA;
433 *SRS_PT_MERCATOR_1SP = *Geo::OSRc::SRS_PT_MERCATOR_1SP;
434 *SRS_PT_MERCATOR_2SP = *Geo::OSRc::SRS_PT_MERCATOR_2SP;
435 *SRS_PT_MERCATOR_AUXILIARY_SPHERE = *Geo::OSRc::SRS_PT_MERCATOR_AUXILIARY_SPHERE;
436 *SRS_PT_MILLER_CYLINDRICAL = *Geo::OSRc::SRS_PT_MILLER_CYLINDRICAL;
437 *SRS_PT_MOLLWEIDE = *Geo::OSRc::SRS_PT_MOLLWEIDE;
438 *SRS_PT_NEW_ZEALAND_MAP_GRID = *Geo::OSRc::SRS_PT_NEW_ZEALAND_MAP_GRID;
439 *SRS_PT_OBLIQUE_STEREOGRAPHIC = *Geo::OSRc::SRS_PT_OBLIQUE_STEREOGRAPHIC;
440 *SRS_PT_ORTHOGRAPHIC = *Geo::OSRc::SRS_PT_ORTHOGRAPHIC;
441 *SRS_PT_POLAR_STEREOGRAPHIC = *Geo::OSRc::SRS_PT_POLAR_STEREOGRAPHIC;
442 *SRS_PT_POLYCONIC = *Geo::OSRc::SRS_PT_POLYCONIC;
443 *SRS_PT_ROBINSON = *Geo::OSRc::SRS_PT_ROBINSON;
444 *SRS_PT_SINUSOIDAL = *Geo::OSRc::SRS_PT_SINUSOIDAL;
445 *SRS_PT_STEREOGRAPHIC = *Geo::OSRc::SRS_PT_STEREOGRAPHIC;
446 *SRS_PT_SWISS_OBLIQUE_CYLINDRICAL = *Geo::OSRc::SRS_PT_SWISS_OBLIQUE_CYLINDRICAL;
447 *SRS_PT_TRANSVERSE_MERCATOR = *Geo::OSRc::SRS_PT_TRANSVERSE_MERCATOR;
448 *SRS_PT_TRANSVERSE_MERCATOR_SOUTH_ORIENTED = *Geo::OSRc::SRS_PT_TRANSVERSE_MERCATOR_SOUTH_ORIENTED;
449 *SRS_PT_TRANSVERSE_MERCATOR_MI_21 = *Geo::OSRc::SRS_PT_TRANSVERSE_MERCATOR_MI_21;
450 *SRS_PT_TRANSVERSE_MERCATOR_MI_22 = *Geo::OSRc::SRS_PT_TRANSVERSE_MERCATOR_MI_22;
451 *SRS_PT_TRANSVERSE_MERCATOR_MI_23 = *Geo::OSRc::SRS_PT_TRANSVERSE_MERCATOR_MI_23;
452 *SRS_PT_TRANSVERSE_MERCATOR_MI_24 = *Geo::OSRc::SRS_PT_TRANSVERSE_MERCATOR_MI_24;
453 *SRS_PT_TRANSVERSE_MERCATOR_MI_25 = *Geo::OSRc::SRS_PT_TRANSVERSE_MERCATOR_MI_25;
454 *SRS_PT_TUNISIA_MINING_GRID = *Geo::OSRc::SRS_PT_TUNISIA_MINING_GRID;
455 *SRS_PT_TWO_POINT_EQUIDISTANT = *Geo::OSRc::SRS_PT_TWO_POINT_EQUIDISTANT;
456 *SRS_PT_VANDERGRINTEN = *Geo::OSRc::SRS_PT_VANDERGRINTEN;
457 *SRS_PT_KROVAK = *Geo::OSRc::SRS_PT_KROVAK;
458 *SRS_PT_IMW_POLYCONIC = *Geo::OSRc::SRS_PT_IMW_POLYCONIC;
459 *SRS_PT_WAGNER_I = *Geo::OSRc::SRS_PT_WAGNER_I;
460 *SRS_PT_WAGNER_II = *Geo::OSRc::SRS_PT_WAGNER_II;
461 *SRS_PT_WAGNER_III = *Geo::OSRc::SRS_PT_WAGNER_III;
462 *SRS_PT_WAGNER_IV = *Geo::OSRc::SRS_PT_WAGNER_IV;
463 *SRS_PT_WAGNER_V = *Geo::OSRc::SRS_PT_WAGNER_V;
464 *SRS_PT_WAGNER_VI = *Geo::OSRc::SRS_PT_WAGNER_VI;
465 *SRS_PT_WAGNER_VII = *Geo::OSRc::SRS_PT_WAGNER_VII;
466 *SRS_PT_QSC = *Geo::OSRc::SRS_PT_QSC;
467 *SRS_PT_AITOFF = *Geo::OSRc::SRS_PT_AITOFF;
468 *SRS_PT_WINKEL_I = *Geo::OSRc::SRS_PT_WINKEL_I;
469 *SRS_PT_WINKEL_II = *Geo::OSRc::SRS_PT_WINKEL_II;
470 *SRS_PT_WINKEL_TRIPEL = *Geo::OSRc::SRS_PT_WINKEL_TRIPEL;
471 *SRS_PT_CRASTER_PARABOLIC = *Geo::OSRc::SRS_PT_CRASTER_PARABOLIC;
472 *SRS_PT_LOXIMUTHAL = *Geo::OSRc::SRS_PT_LOXIMUTHAL;
473 *SRS_PT_QUARTIC_AUTHALIC = *Geo::OSRc::SRS_PT_QUARTIC_AUTHALIC;
474 *SRS_PT_SCH = *Geo::OSRc::SRS_PT_SCH;
475 *SRS_PP_CENTRAL_MERIDIAN = *Geo::OSRc::SRS_PP_CENTRAL_MERIDIAN;
476 *SRS_PP_SCALE_FACTOR = *Geo::OSRc::SRS_PP_SCALE_FACTOR;
477 *SRS_PP_STANDARD_PARALLEL_1 = *Geo::OSRc::SRS_PP_STANDARD_PARALLEL_1;
478 *SRS_PP_STANDARD_PARALLEL_2 = *Geo::OSRc::SRS_PP_STANDARD_PARALLEL_2;
479 *SRS_PP_PSEUDO_STD_PARALLEL_1 = *Geo::OSRc::SRS_PP_PSEUDO_STD_PARALLEL_1;
480 *SRS_PP_LONGITUDE_OF_CENTER = *Geo::OSRc::SRS_PP_LONGITUDE_OF_CENTER;
481 *SRS_PP_LATITUDE_OF_CENTER = *Geo::OSRc::SRS_PP_LATITUDE_OF_CENTER;
482 *SRS_PP_LONGITUDE_OF_ORIGIN = *Geo::OSRc::SRS_PP_LONGITUDE_OF_ORIGIN;
483 *SRS_PP_LATITUDE_OF_ORIGIN = *Geo::OSRc::SRS_PP_LATITUDE_OF_ORIGIN;
484 *SRS_PP_FALSE_EASTING = *Geo::OSRc::SRS_PP_FALSE_EASTING;
485 *SRS_PP_FALSE_NORTHING = *Geo::OSRc::SRS_PP_FALSE_NORTHING;
486 *SRS_PP_AZIMUTH = *Geo::OSRc::SRS_PP_AZIMUTH;
487 *SRS_PP_LONGITUDE_OF_POINT_1 = *Geo::OSRc::SRS_PP_LONGITUDE_OF_POINT_1;
488 *SRS_PP_LATITUDE_OF_POINT_1 = *Geo::OSRc::SRS_PP_LATITUDE_OF_POINT_1;
489 *SRS_PP_LONGITUDE_OF_POINT_2 = *Geo::OSRc::SRS_PP_LONGITUDE_OF_POINT_2;
490 *SRS_PP_LATITUDE_OF_POINT_2 = *Geo::OSRc::SRS_PP_LATITUDE_OF_POINT_2;
491 *SRS_PP_LONGITUDE_OF_POINT_3 = *Geo::OSRc::SRS_PP_LONGITUDE_OF_POINT_3;
492 *SRS_PP_LATITUDE_OF_POINT_3 = *Geo::OSRc::SRS_PP_LATITUDE_OF_POINT_3;
493 *SRS_PP_RECTIFIED_GRID_ANGLE = *Geo::OSRc::SRS_PP_RECTIFIED_GRID_ANGLE;
494 *SRS_PP_LANDSAT_NUMBER = *Geo::OSRc::SRS_PP_LANDSAT_NUMBER;
495 *SRS_PP_PATH_NUMBER = *Geo::OSRc::SRS_PP_PATH_NUMBER;
496 *SRS_PP_PERSPECTIVE_POINT_HEIGHT = *Geo::OSRc::SRS_PP_PERSPECTIVE_POINT_HEIGHT;
497 *SRS_PP_SATELLITE_HEIGHT = *Geo::OSRc::SRS_PP_SATELLITE_HEIGHT;
498 *SRS_PP_FIPSZONE = *Geo::OSRc::SRS_PP_FIPSZONE;
499 *SRS_PP_ZONE = *Geo::OSRc::SRS_PP_ZONE;
500 *SRS_PP_LATITUDE_OF_1ST_POINT = *Geo::OSRc::SRS_PP_LATITUDE_OF_1ST_POINT;
501 *SRS_PP_LONGITUDE_OF_1ST_POINT = *Geo::OSRc::SRS_PP_LONGITUDE_OF_1ST_POINT;
502 *SRS_PP_LATITUDE_OF_2ND_POINT = *Geo::OSRc::SRS_PP_LATITUDE_OF_2ND_POINT;
503 *SRS_PP_LONGITUDE_OF_2ND_POINT = *Geo::OSRc::SRS_PP_LONGITUDE_OF_2ND_POINT;
504 *SRS_PP_PEG_POINT_LATITUDE = *Geo::OSRc::SRS_PP_PEG_POINT_LATITUDE;
505 *SRS_PP_PEG_POINT_LONGITUDE = *Geo::OSRc::SRS_PP_PEG_POINT_LONGITUDE;
506 *SRS_PP_PEG_POINT_HEADING = *Geo::OSRc::SRS_PP_PEG_POINT_HEADING;
507 *SRS_PP_PEG_POINT_HEIGHT = *Geo::OSRc::SRS_PP_PEG_POINT_HEIGHT;
508 *SRS_UL_METER = *Geo::OSRc::SRS_UL_METER;
509 *SRS_UL_FOOT = *Geo::OSRc::SRS_UL_FOOT;
510 *SRS_UL_FOOT_CONV = *Geo::OSRc::SRS_UL_FOOT_CONV;
511 *SRS_UL_US_FOOT = *Geo::OSRc::SRS_UL_US_FOOT;
512 *SRS_UL_US_FOOT_CONV = *Geo::OSRc::SRS_UL_US_FOOT_CONV;
513 *SRS_UL_NAUTICAL_MILE = *Geo::OSRc::SRS_UL_NAUTICAL_MILE;
514 *SRS_UL_NAUTICAL_MILE_CONV = *Geo::OSRc::SRS_UL_NAUTICAL_MILE_CONV;
515 *SRS_UL_LINK = *Geo::OSRc::SRS_UL_LINK;
516 *SRS_UL_LINK_CONV = *Geo::OSRc::SRS_UL_LINK_CONV;
517 *SRS_UL_CHAIN = *Geo::OSRc::SRS_UL_CHAIN;
518 *SRS_UL_CHAIN_CONV = *Geo::OSRc::SRS_UL_CHAIN_CONV;
519 *SRS_UL_ROD = *Geo::OSRc::SRS_UL_ROD;
520 *SRS_UL_ROD_CONV = *Geo::OSRc::SRS_UL_ROD_CONV;
521 *SRS_UL_LINK_Clarke = *Geo::OSRc::SRS_UL_LINK_Clarke;
522 *SRS_UL_LINK_Clarke_CONV = *Geo::OSRc::SRS_UL_LINK_Clarke_CONV;
523 *SRS_UL_KILOMETER = *Geo::OSRc::SRS_UL_KILOMETER;
524 *SRS_UL_KILOMETER_CONV = *Geo::OSRc::SRS_UL_KILOMETER_CONV;
525 *SRS_UL_DECIMETER = *Geo::OSRc::SRS_UL_DECIMETER;
526 *SRS_UL_DECIMETER_CONV = *Geo::OSRc::SRS_UL_DECIMETER_CONV;
527 *SRS_UL_CENTIMETER = *Geo::OSRc::SRS_UL_CENTIMETER;
528 *SRS_UL_CENTIMETER_CONV = *Geo::OSRc::SRS_UL_CENTIMETER_CONV;
529 *SRS_UL_MILLIMETER = *Geo::OSRc::SRS_UL_MILLIMETER;
530 *SRS_UL_MILLIMETER_CONV = *Geo::OSRc::SRS_UL_MILLIMETER_CONV;
531 *SRS_UL_INTL_NAUT_MILE = *Geo::OSRc::SRS_UL_INTL_NAUT_MILE;
532 *SRS_UL_INTL_NAUT_MILE_CONV = *Geo::OSRc::SRS_UL_INTL_NAUT_MILE_CONV;
533 *SRS_UL_INTL_INCH = *Geo::OSRc::SRS_UL_INTL_INCH;
534 *SRS_UL_INTL_INCH_CONV = *Geo::OSRc::SRS_UL_INTL_INCH_CONV;
535 *SRS_UL_INTL_FOOT = *Geo::OSRc::SRS_UL_INTL_FOOT;
536 *SRS_UL_INTL_FOOT_CONV = *Geo::OSRc::SRS_UL_INTL_FOOT_CONV;
537 *SRS_UL_INTL_YARD = *Geo::OSRc::SRS_UL_INTL_YARD;
538 *SRS_UL_INTL_YARD_CONV = *Geo::OSRc::SRS_UL_INTL_YARD_CONV;
539 *SRS_UL_INTL_STAT_MILE = *Geo::OSRc::SRS_UL_INTL_STAT_MILE;
540 *SRS_UL_INTL_STAT_MILE_CONV = *Geo::OSRc::SRS_UL_INTL_STAT_MILE_CONV;
541 *SRS_UL_INTL_FATHOM = *Geo::OSRc::SRS_UL_INTL_FATHOM;
542 *SRS_UL_INTL_FATHOM_CONV = *Geo::OSRc::SRS_UL_INTL_FATHOM_CONV;
543 *SRS_UL_INTL_CHAIN = *Geo::OSRc::SRS_UL_INTL_CHAIN;
544 *SRS_UL_INTL_CHAIN_CONV = *Geo::OSRc::SRS_UL_INTL_CHAIN_CONV;
545 *SRS_UL_INTL_LINK = *Geo::OSRc::SRS_UL_INTL_LINK;
546 *SRS_UL_INTL_LINK_CONV = *Geo::OSRc::SRS_UL_INTL_LINK_CONV;
547 *SRS_UL_US_INCH = *Geo::OSRc::SRS_UL_US_INCH;
548 *SRS_UL_US_INCH_CONV = *Geo::OSRc::SRS_UL_US_INCH_CONV;
549 *SRS_UL_US_YARD = *Geo::OSRc::SRS_UL_US_YARD;
550 *SRS_UL_US_YARD_CONV = *Geo::OSRc::SRS_UL_US_YARD_CONV;
551 *SRS_UL_US_CHAIN = *Geo::OSRc::SRS_UL_US_CHAIN;
552 *SRS_UL_US_CHAIN_CONV = *Geo::OSRc::SRS_UL_US_CHAIN_CONV;
553 *SRS_UL_US_STAT_MILE = *Geo::OSRc::SRS_UL_US_STAT_MILE;
554 *SRS_UL_US_STAT_MILE_CONV = *Geo::OSRc::SRS_UL_US_STAT_MILE_CONV;
555 *SRS_UL_INDIAN_YARD = *Geo::OSRc::SRS_UL_INDIAN_YARD;
556 *SRS_UL_INDIAN_YARD_CONV = *Geo::OSRc::SRS_UL_INDIAN_YARD_CONV;
557 *SRS_UL_INDIAN_FOOT = *Geo::OSRc::SRS_UL_INDIAN_FOOT;
558 *SRS_UL_INDIAN_FOOT_CONV = *Geo::OSRc::SRS_UL_INDIAN_FOOT_CONV;
559 *SRS_UL_INDIAN_CHAIN = *Geo::OSRc::SRS_UL_INDIAN_CHAIN;
560 *SRS_UL_INDIAN_CHAIN_CONV = *Geo::OSRc::SRS_UL_INDIAN_CHAIN_CONV;
561 *SRS_UA_DEGREE = *Geo::OSRc::SRS_UA_DEGREE;
562 *SRS_UA_DEGREE_CONV = *Geo::OSRc::SRS_UA_DEGREE_CONV;
563 *SRS_UA_RADIAN = *Geo::OSRc::SRS_UA_RADIAN;
564 *SRS_PM_GREENWICH = *Geo::OSRc::SRS_PM_GREENWICH;
565 *SRS_DN_NAD27 = *Geo::OSRc::SRS_DN_NAD27;
566 *SRS_DN_NAD83 = *Geo::OSRc::SRS_DN_NAD83;
567 *SRS_DN_WGS72 = *Geo::OSRc::SRS_DN_WGS72;
568 *SRS_DN_WGS84 = *Geo::OSRc::SRS_DN_WGS84;
569 *SRS_WGS84_SEMIMAJOR = *Geo::OSRc::SRS_WGS84_SEMIMAJOR;
570 *SRS_WGS84_INVFLATTENING = *Geo::OSRc::SRS_WGS84_INVFLATTENING;
571 *OAO_Other = *Geo::OSRc::OAO_Other;
572 *OAO_North = *Geo::OSRc::OAO_North;
573 *OAO_South = *Geo::OSRc::OAO_South;
574 *OAO_East = *Geo::OSRc::OAO_East;
575 *OAO_West = *Geo::OSRc::OAO_West;
576 *OAO_Up = *Geo::OSRc::OAO_Up;
577 *OAO_Down = *Geo::OSRc::OAO_Down;
578 *OAMS_TRADITIONAL_GIS_ORDER = *Geo::OSRc::OAMS_TRADITIONAL_GIS_ORDER;
579 *OAMS_AUTHORITY_COMPLIANT = *Geo::OSRc::OAMS_AUTHORITY_COMPLIANT;
580 *OAMS_CUSTOM = *Geo::OSRc::OAMS_CUSTOM;
581 
582 
583 package Geo::OSR;
584 use strict;
585 use warnings;
586 
587 use vars qw /%PROJECTIONS %PARAMETERS %LINEAR_UNITS %ANGULAR_UNITS %DATUMS/;
588 
589 for (keys %Geo::OSR::) {
590  if (/^SRS_PT_(\w+)/) {
591  my $p = eval '$Geo::OSR::'.$_;
592  $PROJECTIONS{$p} = 1;
593  }
594  elsif (/^SRS_PP_(\w+)/) {
595  my $p = eval '$Geo::OSR::'.$_;
596  $PARAMETERS{$p} = 1;
597  }
598  elsif (/^SRS_UL_(\w+)/) {
599  my $p = eval '$Geo::OSR::'.$_;
600  $LINEAR_UNITS{$p} = 1;
601  }
602  elsif (/^SRS_UA_(\w+)/) {
603  my $p = eval '$Geo::OSR::'.$_;
604  $ANGULAR_UNITS{$p} = 1;
605  }
606  elsif (/^SRS_DN_(\w+)/) {
607  my $p = eval '$Geo::OSR::'.$_;
608  $DATUMS{$p} = 1;
609  }
610 }
611 
612 sub Projections {
613  return keys %PROJECTIONS;
614 }
615 
616 sub Parameters {
617  return keys %PARAMETERS;
618 }
619 
620 sub LinearUnits {
621  return keys %LINEAR_UNITS;
622 }
623 
624 sub AngularUnits {
625  return keys %ANGULAR_UNITS;
626 }
627 
628 sub Datums {
629  return keys %DATUMS;
630 }
631 
632 sub RELEASE_PARENT {
633 }
634 
635 
636 package Geo::OSR::SpatialReference;
637 use strict;
638 use warnings;
639 use Carp;
640 
641 Geo::GDAL->import(qw(:INTERNAL));
642 
643 sub Export {
644  my $self = shift;
645  my $format;
646  $format = pop if @_ == 1;
647  my %params = @_;
648  $format //= $params{to} //= $params{format} //= $params{as} //= '';
649  my $simplify = $params{simplify} // 0;
650  my $dialect = $params{dialect} // '';
651  my %converters = (
652  WKT => sub { return ExportToWkt($self) },
653  Text => sub { return ExportToWkt($self) },
654  PrettyWKT => sub { return ExportToPrettyWkt($self, $simplify) },
655  Proj4 => sub { return ExportToProj4($self) },
656  PCI => sub { return ExportToPCI($self) },
657  USGS => sub { return ExportToUSGS($self) },
658  GML => sub { return ExportToXML($self, $dialect) },
659  XML => sub { return ExportToXML($self, $dialect) },
660  MICoordSys => sub { return ExportToMICoordSys() },
661  MapInfoCS => sub { return ExportToMICoordSys() },
662  );
663  error(1, $format, \%converters) unless $converters{$format};
664  return $converters{$format}->();
665 }
666 *AsText = *ExportToWkt;
667 *As = *Export;
668 
669 sub Set {
670  my($self, %params) = @_;
671  if (exists $params{Authority} and exists $params{TargetKey} and exists $params{Node} and exists $params{Code}) {
672  SetAuthority($self, $params{TargetKey}, $params{Authority}, $params{Code});
673  } elsif (exists $params{Node} and exists $params{Value}) {
674  SetAttrValue($self, $params{Node}, $params{Value});
675  } elsif (exists $params{AngularUnits} and exists $params{Value}) {
676  SetAngularUnits($self, $params{AngularUnits}, $params{Value});
677  } elsif (exists $params{LinearUnits} and exists $params{Node} and exists $params{Value}) {
678  SetTargetLinearUnits($self, $params{Node}, $params{LinearUnits}, $params{Value});
679  } elsif (exists $params{LinearUnits} and exists $params{Value}) {
680  SetLinearUnitsAndUpdateParameters($self, $params{LinearUnits}, $params{Value});
681  } elsif ($params{Parameter} and exists $params{Value}) {
682  error(1, $params{Parameter}, \%Geo::OSR::PARAMETERS) unless exists $Geo::OSR::PARAMETERS{$params{Parameter}};
683  $params{Normalized} ?
684  SetNormProjParm($self, $params{Parameter}, $params{Value}) :
685  SetProjParm($self, $params{Parameter}, $params{Value});
686  } elsif (exists $params{Name}) {
687  SetWellKnownGeogCS($self, $params{Name});
688  } elsif (exists $params{GuessFrom}) {
689  SetFromUserInput($self, $params{GuessFrom});
690  } elsif (exists $params{LOCAL_CS}) {
691  SetLocalCS($self, $params{LOCAL_CS});
692  } elsif (exists $params{GeocentricCS}) {
693  SetGeocCS($self, $params{GeocentricCS});
694  } elsif (exists $params{VerticalCS} and $params{Datum}) {
695  my $type = $params{VertDatumType} || 2005;
696  SetVertCS($self, $params{VerticalCS}, $params{Datum}, $type);
697  } elsif (exists $params{CoordinateSystem}) {
698  my @parameters = ();
699  @parameters = @{$params{Parameters}} if ref($params{Parameters});
700  if ($params{CoordinateSystem} eq 'State Plane' and exists $params{Zone}) {
701  my $NAD83 = exists $params{NAD83} ? $params{NAD83} : 1;
702  my $name = exists $params{UnitName} ? $params{UnitName} : undef;
703  my $c = exists $params{UnitConversionFactor} ? $params{UnitConversionFactor} : 0.0;
704  SetStatePlane($self, $params{Zone}, $NAD83, $name, $c);
705  } elsif ($params{CoordinateSystem} eq 'UTM' and exists $params{Zone} and exists $params{North}) {
706  my $north = exists $params{North} ? $params{North} : 1;
707  SetUTM($self, $params{Zone}, $north);
708  } elsif ($params{CoordinateSystem} eq 'WGS') {
709  SetTOWGS84($self, @parameters);
710  } elsif ($params{CoordinateSystem} and $params{Datum} and $params{Spheroid}) {
711  SetGeogCS($self, $params{CoordinateSystem}, $params{Datum}, $params{Spheroid}, @parameters);
712  } elsif ($params{CoordinateSystem} and $params{HorizontalCS} and $params{VerticalCS}) {
713  SetCompoundCS($self, $params{CoordinateSystem}, $params{HorizontalCS}, $params{VerticalCS});
714  } else {
715  SetProjCS($self, $params{CoordinateSystem});
716  }
717  } elsif (exists $params{Projection}) {
718  error(1, $params{Projection}, \%Geo::OSR::PROJECTIONS) unless exists $Geo::OSR::PROJECTIONS{$params{Projection}};
719  my @parameters = ();
720  @parameters = @{$params{Parameters}} if ref($params{Parameters});
721  if ($params{Projection} eq 'Albers_Conic_Equal_Area') {
722  SetACEA($self, @parameters);
723  } elsif ($params{Projection} eq 'Azimuthal_Equidistant') {
724  SetAE($self, @parameters);
725  } elsif ($params{Projection} eq 'Bonne') {
726  SetBonne($self, @parameters);
727  } elsif ($params{Projection} eq 'Cylindrical_Equal_Area') {
728  SetCEA($self, @parameters);
729  } elsif ($params{Projection} eq 'Cassini_Soldner') {
730  SetCS($self, @parameters);
731  } elsif ($params{Projection} eq 'Equidistant_Conic') {
732  SetEC($self, @parameters);
733  # Eckert_I, Eckert_II, Eckert_III, Eckert_V ?
734  } elsif ($params{Projection} eq 'Eckert_IV') {
735  SetEckertIV($self, @parameters);
736  } elsif ($params{Projection} eq 'Eckert_VI') {
737  SetEckertVI($self, @parameters);
738  } elsif ($params{Projection} eq 'Equirectangular') {
739  @parameters == 4 ?
740  SetEquirectangular($self, @parameters) :
741  SetEquirectangular2($self, @parameters);
742  } elsif ($params{Projection} eq 'Gauss_Schreiber_Transverse_Mercator') {
743  SetGaussSchreiberTMercator($self, @parameters);
744  } elsif ($params{Projection} eq 'Gall_Stereographic') {
745  SetGS($self, @parameters);
746  } elsif ($params{Projection} eq 'Goode_Homolosine') {
747  SetGH($self, @parameters);
748  } elsif ($params{Projection} eq 'Interrupted_Goode_Homolosine') {
749  SetIGH($self);
750  } elsif ($params{Projection} eq 'Geostationary_Satellite') {
751  SetGEOS($self, @parameters);
752  } elsif ($params{Projection} eq 'Gnomonic') {
753  SetGnomonic($self, @parameters);
754  } elsif ($params{Projection} eq 'Hotine_Oblique_Mercator') {
755  # Hotine_Oblique_Mercator_Azimuth_Center ?
756  SetHOM($self, @parameters);
757  } elsif ($params{Projection} eq 'Hotine_Oblique_Mercator_Two_Point_Natural_Origin') {
758  SetHOM2PNO($self, @parameters);
759  } elsif ($params{Projection} eq 'Krovak') {
760  SetKrovak($self, @parameters);
761  } elsif ($params{Projection} eq 'Lambert_Azimuthal_Equal_Area') {
762  SetLAEA($self, @parameters);
763  } elsif ($params{Projection} eq 'Lambert_Conformal_Conic_2SP') {
764  SetLCC($self, @parameters);
765  } elsif ($params{Projection} eq 'Lambert_Conformal_Conic_1SP') {
766  SetLCC1SP($self, @parameters);
767  } elsif ($params{Projection} eq 'Lambert_Conformal_Conic_2SP_Belgium') {
768  SetLCCB($self, @parameters);
769  } elsif ($params{Projection} eq 'miller_cylindrical') {
770  SetMC($self, @parameters);
771  } elsif ($params{Projection} =~ /^Mercator/) {
772  # Mercator_1SP, Mercator_2SP, Mercator_Auxiliary_Sphere ?
773  # variant is in Variant (or Name)
774  SetMercator($self, @parameters);
775  } elsif ($params{Projection} eq 'Mollweide') {
776  SetMollweide($self, @parameters);
777  } elsif ($params{Projection} eq 'New_Zealand_Map_Grid') {
778  SetNZMG($self, @parameters);
779  } elsif ($params{Projection} eq 'Oblique_Stereographic') {
780  SetOS($self, @parameters);
781  } elsif ($params{Projection} eq 'Orthographic') {
782  SetOrthographic($self, @parameters);
783  } elsif ($params{Projection} eq 'Polyconic') {
784  SetPolyconic($self, @parameters);
785  } elsif ($params{Projection} eq 'Polar_Stereographic') {
786  SetPS($self, @parameters);
787  } elsif ($params{Projection} eq 'Robinson') {
788  SetRobinson($self, @parameters);
789  } elsif ($params{Projection} eq 'Sinusoidal') {
790  SetSinusoidal($self, @parameters);
791  } elsif ($params{Projection} eq 'Stereographic') {
792  SetStereographic($self, @parameters);
793  } elsif ($params{Projection} eq 'Swiss_Oblique_Cylindrical') {
794  SetSOC($self, @parameters);
795  } elsif ($params{Projection} eq 'Transverse_Mercator_South_Orientated') {
796  SetTMSO($self, @parameters);
797  } elsif ($params{Projection} =~ /^Transverse_Mercator/) {
798  my($variant) = $params{Projection} =~ /^Transverse_Mercator_(\w+)/;
799  $variant //= $params{Variant} //= $params{Name};
800  $variant ?
801  SetTMVariant($self, $variant, @parameters) :
802  SetTM($self, @parameters);
803  } elsif ($params{Projection} eq 'Tunisia_Mining_Grid') {
804  SetTMG($self, @parameters);
805  } elsif ($params{Projection} eq 'VanDerGrinten') {
806  SetVDG($self, @parameters);
807  } else {
808  # Aitoff, Craster_Parabolic, International_Map_of_the_World_Polyconic, Laborde_Oblique_Mercator
809  # Loximuthal, Miller_Cylindrical, Quadrilateralized_Spherical_Cube, Quartic_Authalic, Two_Point_Equidistant
810  # Wagner_I, Wagner_II, Wagner_III, Wagner_IV, Wagner_V, Wagner_VI, Wagner_VII
811  # Winkel_I, Winkel_II, Winkel_Tripel
812  # ?
813  SetProjection($self, $params{Projection});
814  }
815  } else {
816  error("Not enough information to create a spatial reference object.");
817  }
818 }
819 
820 sub GetUTMZone {
821  my $self = shift;
822  my $zone = _GetUTMZone($self);
823  if (wantarray) {
824  my $north = 1;
825  if ($zone < 0) {
826  $zone *= -1;
827  $north = 0;
828  }
829  return ($zone, $north);
830  } else {
831  return $zone;
832  }
833 }
834 
835 
836 package Geo::OSR::CoordinateTransformation;
837 use strict;
838 use warnings;
839 
840 Geo::GDAL->import(qw(:INTERNAL));
841 
842 sub TransformPoints {
843  my($self, $points) = @_;
844  _TransformPoints($self, $points), return unless ref($points->[0]->[0]);
845  for my $p (@$points) {
846  TransformPoints($self, $p);
847  }
848 }
849 1;
Geo::OSR::CoordinateTransformation::ACQUIRE
public method ACQUIRE()
Geo::OSR::AreaOfUse::ACQUIRE
public method ACQUIRE()
Geo::OSR::CoordinateTransformationOptions::DISOWN
public method DISOWN()
Geo::OSR::CoordinateTransformation::TransformPoints
public method TransformPoints()
Geo::OSR::AreaOfUse::DISOWN
public method DISOWN()
Geo::OSR
Base class for projection related classes.
Definition: all.pm:17519
Geo::OSR::AngularUnits
public list AngularUnits()
Geo::OSR::CoordinateTransformation::DESTROY
public method DESTROY()
DynaLoader
Geo::GDAL
GDAL utility functions and a root class for raster classes.
Definition: all.pm:15
Geo::OSR::CoordinateTransformationOptions::ACQUIRE
public method ACQUIRE()
Geo::OSR::SpatialReference::ACQUIRE
public method ACQUIRE()
Geo::OSR::Parameters
public list Parameters()
Geo::OSR::SpatialReference::GetUTMZone
public method GetUTMZone()
Geo::OSR::Datums
public list Datums()
Geo::OSR::SpatialReference::Export
public method Export()
Geo::OSR::CoordinateTransformationOptions::DESTROY
public method DESTROY()
Geo::OSR::SpatialReference::DESTROY
public method DESTROY()
Geo::OSRc
Definition: OSR.pm:267
Geo::OSR::SpatialReference::Set
public method Set()
Geo::OSR::Projections
public list Projections()
Geo::OSR::LinearUnits
public list LinearUnits()
Geo::OSR::SpatialReference::DISOWN
public method DISOWN()
Geo::OSR::AreaOfUse::DESTROY
public method DESTROY()
Geo::OSR::CoordinateTransformation::DISOWN
public method DISOWN()