PROJ

pyproj.Proj 在功能上等同于 proj 项目中的命令行工具。

项目文件上说:

The `proj` program is limited to converting between geographic and
projection coordinates within one datum.

pyproj.Proj

class pyproj.proj.Proj(projparams=None, preserve_units=True, **kwargs)[源代码]

基类:pyproj._proj.Proj

使用proj(https://github.com/osgeo/proj.4/wiki)执行地图转换(从经度、纬度转换为本地地图投影X、Y坐标,反之亦然)。

用proj映射投影控制参数键/值对初始化proj类实例。键/值对可以在字典中传递,也可以作为关键字参数传递,或者作为proj4字符串传递(与proj命令兼容)。有关定义不同地图投影的键/值对的示例,请参阅http://www.remotesensing.org/geotiff/proj-list。

使用参数lon调用proj类实例,lat将lon/lat(以度为单位)转换为x/y本地地图投影坐标(以米为单位)。如果可选关键字“inverse”为true(默认值为false),则执行从x/y到lon/lat的反向转换。如果可选关键字“errcheck”为true(默认值为false),则在转换无效时引发异常。如果errcheck=false且转换无效,则不会引发异常并返回1.e30。如果可选关键字“preserve_units”为真,则地图投影坐标中的单位不强制为米。

使用numpy和常规的python数组对象、python序列和scalar。

__call__(*args, **kw)[源代码]

使用参数lon调用proj类实例,lat将lon/lat(以度为单位)转换为x/y本地地图投影坐标(以米为单位)。如果可选关键字“inverse”为true(默认值为false),则执行从x/y到lon/lat的反向转换。如果可选关键字“errcheck”为true(默认值为false),则在转换无效时引发异常。如果errcheck=false且转换无效,则不会引发异常并返回1.e30。

输入应该是双精度的(如果不是双精度的话,它们将被强制转换为双精度,从而造成轻微的性能损失)。

可以处理numpy和常规的python数组对象、python序列和scalar,但对于数组对象来说速度最快。

__init__(projparams=None, preserve_units=True, **kwargs)[源代码]

初始化proj类实例。

有关投影参数的详细信息,请参阅项目文档(https://github.com/osgeo/proj.4/wiki)。

参数:
  • projparams (int, str, dict, pyproj.CRS) -- proj.4或wkt字符串、proj.4 dict、epsg integer或pyproj.crs instnace。
  • preserve_units (bool) -- 如果为假,将确保+单位=m。
  • **kwargs -- 项目4投影参数。

示例用法:

>>> from pyproj import Proj
>>> p = Proj(proj='utm',zone=10,ellps='WGS84', preserve_units=False) # use kwargs
>>> x,y = p(-120.108, 34.36116666)
>>> 'x=%9.3f y=%11.3f' % (x,y)
'x=765975.641 y=3805993.134'
>>> 'lon=%8.3f lat=%5.3f' % p(x,y,inverse=True)
'lon=-120.108 lat=34.361'
>>> # do 3 cities at a time in a tuple (Fresno, LA, SF)
>>> lons = (-119.72,-118.40,-122.38)
>>> lats = (36.77, 33.93, 37.62 )
>>> x,y = p(lons, lats)
>>> 'x: %9.3f %9.3f %9.3f' % x
'x: 792763.863 925321.537 554714.301'
>>> 'y: %9.3f %9.3f %9.3f' % y
'y: 4074377.617 3763936.941 4163835.303'
>>> lons, lats = p(x, y, inverse=True) # inverse transform
>>> 'lons: %8.3f %8.3f %8.3f' % lons
'lons: -119.720 -118.400 -122.380'
>>> 'lats: %8.3f %8.3f %8.3f' % lats
'lats:   36.770   33.930   37.620'
>>> p2 = Proj('+proj=utm +zone=10 +ellps=WGS84', preserve_units=False) # use proj4 string
>>> x,y = p2(-120.108, 34.36116666)
>>> 'x=%9.3f y=%11.3f' % (x,y)
'x=765975.641 y=3805993.134'
>>> p = Proj(init="epsg:32667", preserve_units=False)
>>> 'x=%12.3f y=%12.3f (meters)' % p(-114.057222, 51.045)
'x=-1783506.250 y= 6193827.033 (meters)'
>>> p = Proj("+init=epsg:32667")
>>> 'x=%12.3f y=%12.3f (feet)' % p(-114.057222, 51.045)
'x=-5851386.754 y=20320914.191 (feet)'
>>> # test data with radian inputs
>>> p1 = Proj(init="epsg:4214")
>>> x1, y1 = p1(116.366, 39.867)
>>> '{:.3f} {:.3f}'.format(x1, y1)
'2.031 0.696'
>>> x2, y2 = p1(x1, y1, inverse=True)
>>> '{:.3f} {:.3f}'.format(x2, y2)
'116.366 39.867'
definition_string()[源代码]

返回投影的形式定义字符串

>>> Proj('+init=epsg:4326').definition_string()
'proj=longlat datum=WGS84 no_defs ellps=WGS84 towgs84=0,0,0'
>>>
has_inverse

如果此投影具有逆投影,则返回true

is_geocent()[源代码]
返回:bool
返回类型:True if projection in geocentric (x/y) coordinates
is_latlong()[源代码]
返回:bool
返回类型:True if projection in geographic (lon/lat) coordinates.
to_latlong()[源代码]

返回一个新的proj实例,它是当前投影的地理(lat/lon)坐标版本

to_latlong_def()[源代码]

返回当前投影的地理(lat/lon)坐标版本的定义字符串