MCPcopy
hub / github.com/django/django / __init__

Method __init__

django/contrib/gis/gdal/srs.py:54–111  ·  view source on GitHub ↗

Create a GDAL OSR Spatial Reference object from the given input. The input may be string of OGC Well Known Text (WKT), an integer EPSG code, a PROJ string, and/or a projection "well known" shorthand string (one of 'WGS84', 'WGS72', 'NAD27', 'NAD83').

(self, srs_input="", srs_type="user", axis_order=None)

Source from the content-addressed store, hash-verified

52 destructor = capi.release_srs
53
54 def __init__(self, srs_input="", srs_type="user", axis_order=None):
55 """
56 Create a GDAL OSR Spatial Reference object from the given input.
57 The input may be string of OGC Well Known Text (WKT), an integer
58 EPSG code, a PROJ string, and/or a projection "well known" shorthand
59 string (one of 'WGS84', 'WGS72', 'NAD27', 'NAD83').
60 """
61 if not isinstance(axis_order, (NoneType, AxisOrder)):
62 raise ValueError(
63 "SpatialReference.axis_order must be an AxisOrder instance."
64 )
65 self.axis_order = axis_order or AxisOrder.TRADITIONAL
66 if srs_type == "wkt":
67 self.ptr = capi.new_srs(c_char_p(b""))
68 self.import_wkt(srs_input)
69 if self.axis_order == AxisOrder.TRADITIONAL:
70 capi.set_axis_strategy(self.ptr, self.axis_order)
71 return
72 elif isinstance(srs_input, str):
73 try:
74 # If SRID is a string, e.g., '4326', then make acceptable
75 # as user input.
76 srid = int(srs_input)
77 srs_input = "EPSG:%d" % srid
78 except ValueError:
79 pass
80 elif isinstance(srs_input, int):
81 # EPSG integer code was input.
82 srs_type = "epsg"
83 elif isinstance(srs_input, self.ptr_type):
84 srs = srs_input
85 srs_type = "ogr"
86 else:
87 raise TypeError('Invalid SRS type "%s"' % srs_type)
88
89 if srs_type == "ogr":
90 # Input is already an SRS pointer.
91 srs = srs_input
92 else:
93 # Creating a new SRS pointer, using the string buffer.
94 buf = c_char_p(b"")
95 srs = capi.new_srs(buf)
96
97 # If the pointer is NULL, throw an exception.
98 if not srs:
99 raise SRSException(
100 "Could not create spatial reference from: %s" % srs_input
101 )
102 else:
103 self.ptr = srs
104
105 if self.axis_order == AxisOrder.TRADITIONAL:
106 capi.set_axis_strategy(self.ptr, self.axis_order)
107 # Importing from either the user input string or an integer SRID.
108 if srs_type == "user":
109 self.import_user_input(srs_input)
110 elif srs_type == "epsg":
111 self.import_epsg(srs_input)

Callers

nothing calls this directly

Calls 4

import_wktMethod · 0.95
import_user_inputMethod · 0.95
import_epsgMethod · 0.95
SRSExceptionClass · 0.90

Tested by

no test coverage detected