CRS¶
CRS¶
-
class
pyproj.crs.
CRS
(projparams=None, **kwargs)[source]¶ A pythonic Coordinate Reference System manager.
New in version 2.0.0.
The functionality is based on other fantastic projects:
rasterio # noqa: E501
opendatacube # noqa: E501
-
srs
¶ The string form of the user input used to create the CRS.
- Type
str
-
name
¶ The name of the CRS (from proj_get_name).
- Type
str
-
type_name
¶ The name of the type of the CRS object.
- Type
str
-
__init__
(projparams=None, **kwargs)[source]¶ - Initialize a CRS class instance with:
PROJ string
Dictionary of PROJ parameters
PROJ keyword arguments for parameters
JSON string with PROJ parameters
CRS WKT string
An authority string [i.e. ‘epsg:4326’]
An EPSG integer code [i.e. 4326]
A tuple of (“auth_name”: “auth_code”) [i.e (‘epsg’, ‘4326’)]
An object with a to_wkt method.
A
pyproj.crs.CRS
class
Example usage:
>>> from pyproj import CRS >>> crs_utm = CRS.from_user_input(26915) >>> crs_utm <Projected CRS: EPSG:26915> Name: NAD83 / UTM zone 15N Axis Info [cartesian]: - E[east]: Easting (metre) - N[north]: Northing (metre) Area of Use: - name: North America - 96°W to 90°W and NAD83 by country - bounds: (-96.0, 25.61, -90.0, 84.0) Coordinate Operation: - name: UTM zone 15N - method: Transverse Mercator Datum: North American Datum 1983 - Ellipsoid: GRS 1980 - Prime Meridian: Greenwich >>> crs_utm.area_of_use.bounds (-96.0, 25.61, -90.0, 84.0) >>> crs_utm.ellipsoid ELLIPSOID["GRS 1980",6378137,298.257222101, LENGTHUNIT["metre",1], ID["EPSG",7019]] >>> crs_utm.ellipsoid.inverse_flattening 298.257222101 >>> crs_utm.ellipsoid.semi_major_metre 6378137.0 >>> crs_utm.ellipsoid.semi_minor_metre 6356752.314140356 >>> crs_utm.prime_meridian PRIMEM["Greenwich",0, ANGLEUNIT["degree",0.0174532925199433], ID["EPSG",8901]] >>> crs_utm.prime_meridian.unit_name 'degree' >>> crs_utm.prime_meridian.unit_conversion_factor 0.017453292519943295 >>> crs_utm.prime_meridian.longitude 0.0 >>> crs_utm.datum DATUM["North American Datum 1983", ELLIPSOID["GRS 1980",6378137,298.257222101, LENGTHUNIT["metre",1]], ID["EPSG",6269]] >>> crs_utm.coordinate_system CS[Cartesian,2], AXIS["(E)",east, ORDER[1], LENGTHUNIT["metre",1, ID["EPSG",9001]]], AXIS["(N)",north, ORDER[2], LENGTHUNIT["metre",1, ID["EPSG",9001]]] >>> print(crs_utm.coordinate_operation.to_wkt(pretty=True)) CONVERSION["UTM zone 15N", METHOD["Transverse Mercator", ID["EPSG",9807]], PARAMETER["Latitude of natural origin",0, ANGLEUNIT["degree",0.0174532925199433], ID["EPSG",8801]], PARAMETER["Longitude of natural origin",-93, ANGLEUNIT["degree",0.0174532925199433], ID["EPSG",8802]], PARAMETER["Scale factor at natural origin",0.9996, SCALEUNIT["unity",1], ID["EPSG",8805]], PARAMETER["False easting",500000, LENGTHUNIT["metre",1], ID["EPSG",8806]], PARAMETER["False northing",0, LENGTHUNIT["metre",1], ID["EPSG",8807]], ID["EPSG",16015]] >>> crs = CRS(proj='utm', zone=10, ellps='WGS84') >>> print(crs.to_wkt(pretty=True)) PROJCRS["unknown", BASEGEOGCRS["unknown", DATUM["Unknown based on WGS84 ellipsoid", ELLIPSOID["WGS 84",6378137,298.257223563, LENGTHUNIT["metre",1], ID["EPSG",7030]]], PRIMEM["Greenwich",0, ANGLEUNIT["degree",0.0174532925199433], ID["EPSG",8901]]], CONVERSION["UTM zone 10N", METHOD["Transverse Mercator", ID["EPSG",9807]], PARAMETER["Latitude of natural origin",0, ANGLEUNIT["degree",0.0174532925199433], ID["EPSG",8801]], PARAMETER["Longitude of natural origin",-123, ANGLEUNIT["degree",0.0174532925199433], ID["EPSG",8802]], PARAMETER["Scale factor at natural origin",0.9996, SCALEUNIT["unity",1], ID["EPSG",8805]], PARAMETER["False easting",500000, LENGTHUNIT["metre",1], ID["EPSG",8806]], PARAMETER["False northing",0, LENGTHUNIT["metre",1], ID["EPSG",8807]], ID["EPSG",16010]], CS[Cartesian,2], AXIS["(E)",east, ORDER[1], LENGTHUNIT["metre",1, ID["EPSG",9001]]], AXIS["(N)",north, ORDER[2], LENGTHUNIT["metre",1, ID["EPSG",9001]]]] >>> geod = crs.get_geod() >>> "+a={:.0f} +f={:.8f}".format(geod.a, geod.f) '+a=6378137 +f=0.00335281' >>> crs.is_projected True >>> crs.is_geographic False
-
area_of_use
¶ returns: AreaOfUse :rtype: The area of use object with associated attributes.
-
axis_info
¶ returns: list[Axis] :rtype: The list of axis information.
-
coordinate_operation
¶ New in version 2.2.0.
- Returns
CoordinateOperation
- Return type
The coordinate operation.
-
coordinate_system
¶ New in version 2.2.0.
- Returns
CoordinateSystem
- Return type
The coordinate system.
-
datum
¶ New in version 2.2.0.
- Returns
Datum
- Return type
The datum.
-
ellipsoid
¶ New in version 2.2.0.
- Returns
Ellipsoid
- Return type
The ellipsoid object with associated attributes.
-
equals
(other, ignore_axis_order=False)[source]¶ New in version 2.5.0.
Check if the CRS objects are equivalent.
- Parameters
other (Any) – Check if the other object is equivalent to this object. If the other object is not a CRS, it will try to create one. On Failure, it will return False.
ignore_axis_order (bool, optional) – If True, it will compare the CRS class and ignore the axis order. Default is False.
- Returns
- Return type
bool
New in version 2.2.0.
Make a CRS from an authority name and authority code
- Parameters
auth_name (str) – The name of the authority.
code (int or str) – The code used by the authority.
- Returns
- Return type
-
static
from_cf
(in_cf, errcheck=False)[source]¶ New in version 2.2.0.
This converts a Climate and Forecast (CF) Grid Mapping Version 1.8 dict to a
pyproj.crs.CRS
object.Warning
Parameters may be lost if a mapping from the CF parameter is not found. For best results store the WKT of the projection in the crs_wkt attribute.
- Parameters
in_cf (dict) – CF version of the projection.
errcheck (bool, optional) – This parameter is for backwards compatibility with the old version. It currently does nothing when True or False.
- Returns
- Return type
-
static
from_dict
(proj_dict)[source]¶ New in version 2.2.0.
Make a CRS from a dictionary of PROJ parameters.
- Parameters
proj_dict (str) – PROJ params in dict format.
- Returns
- Return type
-
static
from_epsg
(code)[source]¶ Make a CRS from an EPSG code
- Parameters
code (int or str) – An EPSG code.
- Returns
- Return type
-
static
from_json
(crs_json)[source]¶ New in version 2.4.0.
Create CRS from a CRS JSON string.
- Parameters
crs_json (str) – CRS JSON string.
- Returns
- Return type
-
static
from_json_dict
(crs_dict)[source]¶ New in version 2.4.0.
Create CRS from a JSON dictionary.
- Parameters
crs_dict (dict) – CRS dictionary.
- Returns
- Return type
-
static
from_proj4
(in_proj_string)[source]¶ New in version 2.2.0.
Make a CRS from a PROJ string
- Parameters
in_proj_string (str) – A PROJ string.
- Returns
- Return type
-
static
from_string
(in_crs_string)[source]¶ Make a CRS from:
- Initialize a CRS class instance with:
PROJ string
JSON string with PROJ parameters
CRS WKT string
An authority string [i.e. ‘epsg:4326’]
- Parameters
in_crs_string (str) – An EPSG, PROJ, or WKT string.
- Returns
- Return type
-
static
from_user_input
(value)[source]¶ - Initialize a CRS class instance with:
PROJ string
Dictionary of PROJ parameters
PROJ keyword arguments for parameters
JSON string with PROJ parameters
CRS WKT string
An authority string [i.e. ‘epsg:4326’]
An EPSG integer code [i.e. 4326]
A tuple of (“auth_name”: “auth_code”) [i.e (‘epsg’, ‘4326’)]
An object with a to_wkt method.
A
pyproj.crs.CRS
class
- Parameters
value (obj) – A Python int, dict, or str.
- Returns
- Return type
-
static
from_wkt
(in_wkt_string)[source]¶ New in version 2.2.0.
Make a CRS from a WKT string
- Parameters
in_wkt_string (str) – A WKT string.
- Returns
- Return type
-
property
geodetic_crs
¶ New in version 2.2.0.
- Returns
CRS
- Return type
The the geodeticCRS / geographicCRS from the CRS.
-
is_bound
¶ returns: bool :rtype: True if CRS is bound.
-
is_engineering
¶ New in version 2.2.0.
- Returns
bool
- Return type
True if CRS is local/engineering.
-
is_exact_same
(other, ignore_axis_order=False)[source]¶ Check if the CRS objects are the exact same.
- Parameters
other (Any) – Check if the other CRS is the exact same to this object. If the other object is not a CRS, it will try to create one. On Failure, it will return False.
- Returns
- Return type
bool
-
is_geocentric
¶ This checks if the CRS is geocentric and takes into account if the CRS is bound.
- Returns
bool
- Return type
True if CRS is in geocentric (x/y) coordinates.
-
is_geographic
¶ This checks if the CRS is geographic. It will check if it has a geographic CRS in the sub CRS if it is a compount CRS and will check if the source CRS is geographic if it is a bound CRS.
- Returns
bool
- Return type
True if the CRS is in geographic (lon/lat) coordinates.
-
is_projected
¶ This checks if the CRS is projected. It will check if it has a projected CRS in the sub CRS if it is a compount CRS and will check if the source CRS is projected if it is a bound CRS.
- Returns
bool
- Return type
True if CRS is projected.
-
is_vertical
¶ New in version 2.2.0.
This checks if the CRS is vertical. It will check if it has a vertical CRS in the sub CRS if it is a compount CRS and will check if the source CRS is vertical if it is a bound CRS.
- Returns
bool
- Return type
True if CRS is vertical.
-
prime_meridian
¶ New in version 2.2.0.
- Returns
PrimeMeridian
- Return type
The prime meridian object with associated attributes.
-
remarks
¶ New in version 2.4.0.
str: Remarks about object.
-
scope
¶ New in version 2.4.0.
str: Scope of object.
-
property
source_crs
¶ returns: CRS – or the source CRS of a CoordinateOperation. :rtype: The the base CRS of a BoundCRS or a DerivedCRS/ProjectedCRS,
-
property
sub_crs_list
¶ If the CRS is a compound CRS, it will return a list of sub CRS objects.
- Returns
- Return type
list[CRS]
-
property
target_crs
¶ New in version 2.2.0.
- Returns
CRS
- Return type
The hub CRS of a BoundCRS or the target CRS of a CoordinateOperation.
New in version 2.2.0.
Return the authority name and code best matching the CRS or None if it a match is not found.
Example:
>>> from pyproj import CRS >>> ccs = CRS("epsg:4328") >>> ccs.to_authority() ('EPSG', '4328')
If the CRS is bound, you can get an authority from the source CRS:
>>> from pyproj import CRS >>> ccs = CRS("+proj=geocent +datum=WGS84 +towgs84=0,0,0") >>> ccs.to_authority() >>> ccs.source_crs.to_authority() ('EPSG', '4978') >>> ccs == CRS.from_authorty('EPSG', '4978') False
- Parameters
auth_name (str, optional) – The name of the authority to filter by.
min_confidence (int, optional) – A value between 0-100 where 100 is the most confident. Default is 70. Why does the EPSG code return when using EPSG:xxxx and not with +init=EPSG:xxxx?
- Returns
tuple(str, str) or None – matching the confidence level.
- Return type
The best matching (<auth_name>, <code>)
-
to_cf
(wkt_version=<WktVersion.WKT2_2019: 'WKT2_2019'>, errcheck=False)[source]¶ New in version 2.2.0.
This converts a
pyproj.crs.CRS
object to a Climate and Forecast (CF) Grid Mapping Version 1.8 dict.Warning
The full projection will be stored in the crs_wkt attribute. However, other parameters may be lost if a mapping to the CF parameter is not found.
- Parameters
wkt_version (str or pyproj.enums.WktVersion) – Version of WKT supported by CRS.to_wkt. Default is
pyproj.enums.WktVersion.WKT2_2019
.errcheck (bool, optional) – If True, will warn when parameters are ignored. Defaults to False.
- Returns
dict
- Return type
CF-1.8 version of the projection.
-
to_dict
()[source]¶ New in version 2.2.0.
Converts the CRS to dictionary of PROJ parameters.
Warning
You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems # noqa: E501
- Returns
dict
- Return type
PROJ params in dict format.
-
to_epsg
(self, min_confidence=70)¶ Return the EPSG code best matching the CRS or None if it a match is not found.
Example:
>>> from pyproj import CRS >>> ccs = CRS("epsg:4328") >>> ccs.to_epsg() 4328
If the CRS is bound, you can attempt to get an epsg code from the source CRS:
>>> from pyproj import CRS >>> ccs = CRS("+proj=geocent +datum=WGS84 +towgs84=0,0,0") >>> ccs.to_epsg() >>> ccs.source_crs.to_epsg() 4978 >>> ccs == CRS.from_epsg(4978) False
- Parameters
min_confidence (int, optional) – A value between 0-100 where 100 is the most confident. Default is 70. Why does the EPSG code return when using EPSG:xxxx and not with +init=EPSG:xxxx?
- Returns
int or None
- Return type
The best matching EPSG code matching the confidence level.
-
to_json
(self, pretty=False, indentation=2)¶ New in version 2.4.0.
Convert the object to a JSON string.
- Parameters
pretty (bool) – If True, it will set the output to be a multiline string. Defaults to False.
indentation (int) – If pretty is True, it will set the width of the indentation. Default is 2.
- Returns
str
- Return type
The JSON string.
-
to_json_dict
(self)¶ New in version 2.4.0.
Convert the object to a JSON dictionary.
- Returns
dict
- Return type
The JSON dictionary.
-
to_proj4
(self, version=ProjVersion.PROJ_4)¶ Convert the projection to a PROJ string.
Warning
You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
- Parameters
version (pyproj.enums.ProjVersion) – The version of the PROJ string output. Default is
pyproj.enums.ProjVersion.PROJ_4
.- Returns
str
- Return type
The PROJ string.
-
to_string
()[source]¶ New in version 2.2.0.
Convert the CRS to a string.
It attempts to convert it to the authority string. Otherwise, it uses the string format of the user input to create the CRS.
- Returns
str
- Return type
String representation of the CRS.
-
to_wkt
(self, version=WktVersion.WKT2_2019, pretty=False)¶ Convert the projection to a WKT string.
- Version options:
WKT2_2015
WKT2_2015_SIMPLIFIED
WKT2_2019
WKT2_2019_SIMPLIFIED
WKT1_GDAL
WKT1_ESRI
- Parameters
version (pyproj.enums.WktVersion) – The version of the WKT output. Default is
pyproj.enums.WktVersion.WKT2_2019
.pretty (bool) – If True, it will set the output to be a multiline string. Defaults to False.
- Returns
str
- Return type
The WKT string.
GeographicCRS¶
-
class
pyproj.crs.
GeographicCRS
(name='undefined', datum='urn:ogc:def:datum:EPSG::6326', ellipsoidal_cs=CS[ellipsoidal,2], AXIS["longitude",east, ORDER[1], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]], AXIS["latitude",north, ORDER[2], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]])[source]¶ Bases:
pyproj.crs.crs.CRS
New in version 2.5.0.
This class is for building a Geographic CRS
-
__init__
(name='undefined', datum='urn:ogc:def:datum:EPSG::6326', ellipsoidal_cs=CS[ellipsoidal,2], AXIS["longitude",east, ORDER[1], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]], AXIS["latitude",north, ORDER[2], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]])[source]¶ - Parameters
name (str, optional) – Name of the CRS. Default is undefined.
datum (Any, optional) – Anything accepted by
pyproj.crs.Datum.from_user_input()
or apyproj.crs.datum.CustomDatum
.ellipsoidal_cs (Any, optional) – Input to create an Ellipsoidal Coordinate System. Anything accepted by
pyproj.crs.CoordinateSystem.from_user_input()
or an Ellipsoidal Coordinate System created from Coordinate Systems.
-
DerivedGeographicCRS¶
-
class
pyproj.crs.
DerivedGeographicCRS
(base_crs, conversion, ellipsoidal_cs=CS[ellipsoidal,2], AXIS["longitude",east, ORDER[1], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]], AXIS["latitude",north, ORDER[2], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]], name='undefined')[source]¶ Bases:
pyproj.crs.crs.CRS
New in version 2.5.0.
This class is for building a Derived Geographic CRS
-
__init__
(base_crs, conversion, ellipsoidal_cs=CS[ellipsoidal,2], AXIS["longitude",east, ORDER[1], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]], AXIS["latitude",north, ORDER[2], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]], name='undefined')[source]¶ - Parameters
base_crs (Any) – Input to create the Geodetic CRS, a
GeographicCRS
or anything accepted bypyproj.crs.CRS.from_user_input()
.conversion (Any) – Anything accepted by
pyproj.crs.CoordinateSystem.from_user_input()
or a conversion from Coordinate Operations.ellipsoidal_cs (Any, optional) – Input to create an Ellipsoidal Coordinate System. Anything accepted by
pyproj.crs.CoordinateSystem.from_user_input()
or an Ellipsoidal Coordinate System created from Coordinate Systems.name (str, optional) – Name of the CRS. Default is undefined.
-
ProjectedCRS¶
-
class
pyproj.crs.
ProjectedCRS
(conversion, name='undefined', cartesian_cs=CS[Cartesian,2], AXIS["(E)",east, ORDER[1], LENGTHUNIT["metre",1, ID["EPSG",9001]]], AXIS["(N)",north, ORDER[2], LENGTHUNIT["metre",1, ID["EPSG",9001]]], geodetic_crs=<Geographic 2D CRS: {"$schema": "https://proj.org/schemas/v0.2/projjso ...> Name: undefined Axis Info [ellipsoidal]: - lon[east]: Longitude (degree) - lat[north]: Latitude (degree) Area of Use: - undefined Datum: World Geodetic System 1984 - Ellipsoid: WGS 84 - Prime Meridian: Greenwich )[source]¶ Bases:
pyproj.crs.crs.CRS
New in version 2.5.0.
This class is for building a Projected CRS.
-
__init__
(conversion, name='undefined', cartesian_cs=CS[Cartesian,2], AXIS["(E)",east, ORDER[1], LENGTHUNIT["metre",1, ID["EPSG",9001]]], AXIS["(N)",north, ORDER[2], LENGTHUNIT["metre",1, ID["EPSG",9001]]], geodetic_crs=<Geographic 2D CRS: {"$schema": "https://proj.org/schemas/v0.2/projjso ...> Name: undefined Axis Info [ellipsoidal]: - lon[east]: Longitude (degree) - lat[north]: Latitude (degree) Area of Use: - undefined Datum: World Geodetic System 1984 - Ellipsoid: WGS 84 - Prime Meridian: Greenwich )[source]¶ - Parameters
conversion (Any) – Anything accepted by
pyproj.crs.CoordinateSystem.from_user_input()
or a conversion from Coordinate Operations.name (str, optional) – The name of the Projected CRS. Default is undefined.
cartesian_cs (Any, optional) – Input to create a Cartesian Coordinate System. Anything accepted by
pyproj.crs.CoordinateSystem.from_user_input()
orpyproj.crs.coordinate_system.Cartesian2DCS
.geodetic_crs (Any, optional) – Input to create the Geodetic CRS, a
GeographicCRS
or anything accepted bypyproj.crs.CRS.from_user_input()
.
-
VerticalCRS¶
-
class
pyproj.crs.
VerticalCRS
(name, datum, vertical_cs=CS[vertical,1], AXIS["gravity-related height (H)",up, LENGTHUNIT["metre",1, ID["EPSG",9001]]], geoid_model=None)[source]¶ Bases:
pyproj.crs.crs.CRS
New in version 2.5.0.
This class is for building a Vetical CRS.
Warning
geoid_model support only exists in PROJ >= 6.3.0
-
__init__
(name, datum, vertical_cs=CS[vertical,1], AXIS["gravity-related height (H)",up, LENGTHUNIT["metre",1, ID["EPSG",9001]]], geoid_model=None)[source]¶ - Parameters
name (str) – The name of the Vertical CRS (e.g. NAVD88 height).
datum (Any) – Anything accepted by
pyproj.crs.Datum.from_user_input()
vertical_cs (Any, optional) – Input to create a Vertical Coordinate System accepted by
pyproj.crs.CoordinateSystem.from_user_input()
orpyproj.crs.coordinate_system.VerticalCS
geoid_model (str, optional) – The name of the GEOID Model (e.g. GEOID12B).
-
BoundCRS¶
CompoundCRS¶
-
class
pyproj.crs.
CompoundCRS
(name, components)[source]¶ Bases:
pyproj.crs.crs.CRS
New in version 2.5.0.
This class is for building a Compound CRS.
-
__init__
(name, components)[source]¶ - Parameters
name (str) – The name of the Compound CRS.
components (List[Any], optional) – List of CRS to create a Compound Coordinate System. List of anything accepted by
pyproj.crs.CRS.from_user_input()
-
is_wkt¶
-
pyproj.crs.
is_wkt
(proj_string)¶ New in version 2.0.0.
Check if the input projection string is in the Well-Known Text format.
- Parameters
proj_string (str) – The projection string.
- Returns
bool
- Return type
True if the string is in the Well-Known Text format