Python interface to PROJ (cartographic projections and coordinate transformations library)

Overview

pyproj

Python interface to PROJ (cartographic projections and coordinate transformations library).

Join the chat at https://gitter.im/pyproj4-pyproj/community All Contributors Appveyor Build Status GitHub Actions Build Status Codecov Status PyPI Downloads Anaconda-Server Badge Code style: black pre-commit DOI

Documentation

Bugs/Questions

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Jeff Whitaker

πŸ“– ⚠️ πŸ’» πŸ’‘ πŸ€” πŸ‘€ πŸ’¬ 🚧 πŸš‡ πŸ›

Alan D. Snow

πŸ“– ⚠️ πŸ’» πŸ’‘ 🚧 πŸš‡ πŸ€” πŸ‘€ πŸ’¬ πŸ›

Micah Cochran

πŸ“– ⚠️ πŸ’» 🚧 πŸš‡ πŸ‘€ πŸ’¬ πŸ›

Joris Van den Bossche

πŸ“– πŸ’» πŸ€” πŸ‘€ πŸ’¬ πŸ› ⚠️

Chris Mayo

⚠️

Charles Karney

πŸ’» ⚠️

Justin Dearing

πŸš‡

Jos de Kloe

πŸ’» ⚠️ πŸ›

George Ouzounoudis

πŸ’» πŸ€”

David Hoese

πŸ‘€ πŸ€” πŸ“¦

Mikhail Itkin

πŸ’»

Ryan May

πŸ’»

artttt

πŸ€”

Filipe

πŸš‡ πŸ’» πŸ“¦

Heitor

πŸ“–

Bas Couwenberg

πŸ’» πŸ“¦ ⚠️

Nick Eubank

πŸ’»

Michael Dunphy

πŸ“–

Matthew Brett

πŸš‡ πŸ“¦

Jakob de Maeyer

πŸ’»

The Gitter Badger

πŸ“–

Bernhard M. Wiedemann

πŸ’»

Marco AurΓ©lio da Costa

πŸ’»

Christopher H. Barker

πŸ’»

Kristian Evers

πŸ’¬ πŸ€” πŸ“–

Even Rouault

πŸ’¬

Christoph Gohlke

πŸ“¦ πŸ’¬ πŸ› ⚠️

Chris Willoughby

πŸ’»

Guillaume Lostis

πŸ“–

Eduard Popov

πŸ“–

Joe Ranalli

πŸ› πŸ’» ⚠️

Greg Berardinelli

πŸ› πŸ’» πŸ€” ⚠️

Martin Raspaud

πŸ› πŸ’» ⚠️ πŸ€”

Mike Taves

⚠️

David HaberthΓΌr

πŸ“–

mmodenesi

πŸ› πŸ’» ⚠️

jacob-indigo

πŸ› πŸ’»

Poruri Sai Rahul

⚠️

Yann-Sebastien Tremblay-Johnston

πŸ“–

odidev

πŸ“¦

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
  • "no arguments in initialization list" runtime error

    Hi, I'm running into a cryptic error. My CRS in the geopandas dataframe seems to be properly set, however I cannot convert it to any other CRS.

    >>> print(gdf_PLU.crs)
    epsg:2193
    >>>gdf_PLU.to_crs(epsg=4326)
    ---------------------------------------------------------------------------
    RuntimeError                              Traceback (most recent call last)
    <ipython-input-92-46b32e6c8012> in <module>()
          1 print(gdf_PLU.crs)
    ----> 2 gdf_PLU.to_crs(epsg=4326)
    
    ~/anaconda3/envs/hthf/lib/python3.6/site-packages/geopandas/geodataframe.py in to_crs(self, crs, epsg, inplace)
        384         else:
        385             df = self.copy()
    --> 386         geom = df.geometry.to_crs(crs=crs, epsg=epsg)
        387         df.geometry = geom
        388         df.crs = geom.crs
    
    ~/anaconda3/envs/hthf/lib/python3.6/site-packages/geopandas/geoseries.py in to_crs(self, crs, epsg)
        283             except TypeError:
        284                 raise TypeError('Must set either crs or epsg for output.')
    --> 285         proj_in = pyproj.Proj(self.crs, preserve_units=True)
        286         proj_out = pyproj.Proj(crs, preserve_units=True)
        287         project = partial(pyproj.transform, proj_in, proj_out)
    
    ~/anaconda3/envs/hthf/lib/python3.6/site-packages/pyproj/__init__.py in __new__(self, projparams, preserve_units, **kwargs)
        356         # on case-insensitive filesystems).
        357         projstring = projstring.replace('EPSG','epsg')
    --> 358         return _proj.Proj.__new__(self, projstring)
        359 
        360     def __call__(self, *args, **kw):
    
    _proj.pyx in _proj.Proj.__cinit__ (_proj.c:1170)()
    
    RuntimeError: b'no arguments in initialization list'
    

    I can't find this error message in any other issue. From similar issues it seems some data files could be missing (if so, how can I install them; I'm using the binary that is dragged in by conda-forge geopandas). Or is it something else?

    opened by rgommers 69
  • update to proj.4 6.0.0

    update to proj.4 6.0.0

    Connected to issue #152

    This depends on: https://github.com/OSGeo/proj.4/pull/1208 Also, one of the tests fails, but should be fixed with: https://github.com/OSGeo/proj.4/pull/1205

    There are a ton of changes - mostly to work with the new API. Feel free to make comments, ask questions, and be thorough in the review.

    opened by snowman2 42
  • Problem with installing Pyproj / proj

    Problem with installing Pyproj / proj

    Dear sir or madam, My name is Ger Smit from the Netherlands. I have problem with pyproj / proj. I use Raspberry Pi, Python, for making screne from data with satpy. No problems til now. I install satpy, try to run python script and get error. I I was in contact with @djhoese about this and he referred me to you ERROR: Minimum supported proj version is 6.2.0, installed version is 4.9.3. For more information see: https://pyproj4.github.io/pyproj/stable/installation.htm

    Then when i run the script i get error :

    Traceback (most recent call last): File "/home/pi/a-satpy-testen/cursus_seviri.py", line 83, in scn.load(scn.all_dataset_names()[1:]) #HEEL belangrijk File "/home/pi/.local/lib/python3.7/site-packages/satpy/scene.py", line 1163, in load self._read_datasets_from_storage(**kwargs) File "/home/pi/.local/lib/python3.7/site-packages/satpy/scene.py", line 1183, in _read_datasets_from_storage return self._read_dataset_nodes_from_storage(nodes, **kwargs) File "/home/pi/.local/lib/python3.7/site-packages/satpy/scene.py", line 1189, in _read_dataset_nodes_from_storage loaded_datasets = self._load_datasets_by_readers(reader_datasets, **kwargs) File "/home/pi/.local/lib/python3.7/site-packages/satpy/scene.py", line 1214, in _load_datasets_by_readers new_datasets = reader_instance.load(ds_ids, **kwargs) File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/yaml_reader.py", line 945, in load ds = self._load_dataset_with_area(dsid, coords, **kwargs) File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/yaml_reader.py", line 1109, in _load_dataset_with_area ds = super(GEOFlippableFileYAMLReader, self)._load_dataset_with_area(dsid, coords, **kwargs) File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/yaml_reader.py", line 841, in _load_dataset_with_area ds = self._load_dataset_data(file_handlers, dsid, **kwargs) File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/yaml_reader.py", line 713, in _load_dataset_data proj = self._load_dataset(dsid, ds_info, file_handlers, **kwargs) File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/yaml_reader.py", line 689, in _load_dataset projectable = fh.get_dataset(dsid, ds_info) File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/seviri_l1b_native.py", line 458, in get_dataset self._update_attrs(dataset, dataset_info) File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/seviri_l1b_native.py", line 582, in _update_attrs actual_lon, actual_lat, actual_alt = self.satpos File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/seviri_l1b_native.py", line 610, in satpos semi_minor_axis=self.mda['projection_parameters']['b'] File "/home/pi/.local/lib/python3.7/site-packages/satpy/readers/seviri_base.py", line 703, in get_satpos proj='geocent', a=semi_major_axis, b=semi_minor_axis, units='m' File "/home/pi/.local/lib/python3.7/site-packages/pyproj/crs.py", line 436, in init super(CRS, self).init(projstring) File "pyproj/_crs.pyx", line 1738, in pyproj._crs._CRS.init pyproj.exceptions.CRSError: Invalid projection: +proj=geocent +a=6378169.0 +b=6356583.800000001 +units=m +type=crs: (Internal Proj Error: proj_create: Invalid b value)

    Please can you explaine to me how to install or solved pyproj / proj in combination with satpy. I try a lot withoud result.

    Thanks in advange @gersmit

    installation-issues 
    opened by gersmit 40
  • PROJ 6.2+ required; remove global context; autoclose database

    PROJ 6.2+ required; remove global context; autoclose database

    • [x] Closes #411
    • [x] Closes #408
    • [x] Closes #403
    • [x] Closes #426
    • [x] Fully documented, including history.rst for all changes and api/*.rst for new API
    opened by snowman2 35
  • 2.3.0 seg faults under Ubuntu

    2.3.0 seg faults under Ubuntu

    Code Sample, a copy-pastable example if possible

    A "Minimal, Complete and Verifiable Example" will make it much easier for maintainers to help you: http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports

    Now that's tricky because I cannot do it. The seg fault very much depends on the input data, and it's part of a complex app. But with some input files 2.3.0 seg fault.

    Problem description

    Under 2.3.0 I can get the following using python -X faulthandler

    Fatal Python error: Segmentation fault
    
    Current thread 0x00007fa0f79c4700 (most recent call first):
      File "/opt/conda/lib/python3.7/site-packages/pyproj/crs.py", line 303 in __init__
      File "/opt/conda/lib/python3.7/site-packages/pyproj/crs.py", line 434 in from_user_input
      File "/opt/conda/lib/python3.7/site-packages/pyproj/proj.py", line 145 in __init__
      File "/opt/conda/lib/python3.7/site-packages/geopandas/geoseries.py", line 304 in to_crs
      File "/opt/conda/lib/python3.7/site-packages/geopandas/geodataframe.py", line 459 in to_crs
      ...
      File "<stdin>", line 1 in <module>
    Segmentation fault (core dumped)
    

    I've downgraded to 2.2.2 and I get a Python exception of the same lines, so it might be the same thing

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ...
      File "/opt/conda/lib/python3.7/site-packages/geopandas/geodataframe.py", line 459, in to_crs
        geom = df.geometry.to_crs(crs=crs, epsg=epsg)
      File "/opt/conda/lib/python3.7/site-packages/geopandas/geoseries.py", line 304, in to_crs
        proj_in = pyproj.Proj(self.crs, preserve_units=True)
      File "/opt/conda/lib/python3.7/site-packages/pyproj/proj.py", line 147, in __init__
        self.crs = CRS.from_user_input(projparams if projparams is not None else kwargs)
      File "/opt/conda/lib/python3.7/site-packages/pyproj/crs.py", line 435, in from_user_input
        return cls(value)
      File "/opt/conda/lib/python3.7/site-packages/pyproj/crs.py", line 304, in __init__
        super(CRS, self).__init__(projstring)
      File "pyproj/_crs.pyx", line 1308, in pyproj._crs._CRS.__init__
      File "pyproj/_datadir.pyx", line 18, in pyproj._datadir.get_pyproj_context
      File "/opt/conda/lib/python3.7/site-packages/pyproj/datadir.py", line 99, in get_data_dir
        "Valid PROJ data directory not found. "
    pyproj.exceptions.DataDirError: Valid PROJ data directory not found. Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
    

    This is the same environment as I've detailed here: https://github.com/conda-forge/pyproj-feedstock/issues/47

    Environment Information

    after downgrade to 2.2.2

    
    System:
        python: 3.7.3 | packaged by conda-forge | (default, Jul  1 2019, 21:52:21)  [GCC 7.3.0]
    executable: /usr/bin/condapy
       machine: Linux-4.15.0-1037-gcp-x86_64-with-debian-stretch-sid
    
    PROJ:
          PROJ: 6.1.1
      data dir: None
    
    Python deps:
        pyproj: 2.2.2
           pip: 19.2.3
    setuptools: 41.2.0
        Cython: None
         aenum: None
    

    at 2.3.0

    
    System:
        python: 3.7.3 | packaged by conda-forge | (default, Jul  1 2019, 21:52:21)  [GCC 7.3.0]
    executable: /usr/bin/condapy
       machine: Linux-4.15.0-1037-gcp-x86_64-with-debian-stretch-sid
    
    PROJ:
          PROJ: 6.1.1
      data dir: /opt/conda/share/proj
    
    Python deps:
        pyproj: 2.3.0
           pip: 19.2.3
    setuptools: 41.2.0
        Cython: None
    

    Installation method

    Conda in a Ubuntu 16.04 Docker image.

    wget --quiet https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
        /bin/bash ~/miniconda.sh -b -p /opt/conda && \
        conda update conda -y && \
        conda config --add channels conda-forge && \
        conda config --set channel_priority strict && \
        conda install \
            geopandas numexpr bottleneck
    

    Conda environment information (if you installed with conda):


    Environment (conda list):
    proj4                     6.1.1                hc80f0dc_1    conda-forge
    pyproj                    2.3.0            py37h2fd02e8_0    conda-forge
    

    Details about conda and system ( conda info ):
    
         active environment : None
           user config file : /root/.condarc
     populated config files : /root/.condarc
              conda version : 4.7.11
        conda-build version : not installed
             python version : 3.7.3.final.0
           virtual packages :
           base environment : /opt/conda  (writable)
               channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                              https://conda.anaconda.org/conda-forge/noarch
                              https://repo.anaconda.com/pkgs/main/linux-64
                              https://repo.anaconda.com/pkgs/main/noarch
                              https://repo.anaconda.com/pkgs/r/linux-64
                              https://repo.anaconda.com/pkgs/r/noarch
              package cache : /opt/conda/pkgs
                              /root/.conda/pkgs
           envs directories : /opt/conda/envs
                              /root/.conda/envs
                   platform : linux-64
                 user-agent : conda/4.7.11 requests/2.22.0 CPython/3.7.3 Linux/4.15.0-1037-gcp ubuntu/16.04.6 glibc/2.23
                    UID:GID : 0:0
                 netrc file : None
               offline mode : False
    
    bug 
    opened by hyperknot 33
  • add `[inv|fwd]_intermediate()` - to calculate intermediate points (like improved `Geod.npts()`)

    add `[inv|fwd]_intermediate()` - to calculate intermediate points (like improved `Geod.npts()`)

    pyproj/geod.py - add a parameter return_points to Geod.npts() to determinate the return type; improve return type hint pyproj/geod.py - add a parameters initial_idx, terminus_idx to Geod.npts() pyproj/[geod.py, _geod.pyi, _geod.pyx] - add inv_intermediate_by_npts functions that uses given buffers out_lons, out_lats (and out_azis) buffers instead of creating new buffers pyproj/_geod.pxd - add interface for geod_lineinit pyproj/[geod.py, _geod.pyi, _geod.pyx] - add inv_intermediate_by_del, fwd_intermediate_by_npts, fwd_intermediate_by_del functions, similar to inv_npts but using forward calculation test/test_geod.py - add tests for new functions

    Related PR

    https://github.com/pyproj4/pyproj/pull/825/

    opened by idanmiara 32
  • Kernel dies while converting geometry to EPSG3857, OS X 11.6

    Kernel dies while converting geometry to EPSG3857, OS X 11.6

    I am attempting to install the latest version of pyproj in order resolve the same issue as described in this closed issue 1113

    Installation method/steps

    • installed pyproj through conda in terminal, see below.
    (base) Richard-Pelgrims-MacBook-Pro:site-packages data_science$ conda install pyproj
    Collecting package metadata (current_repodata.json): done
    Solving environment: failed with initial frozen solve. Retrying with flexible solve.
    Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
    Collecting package metadata (repodata.json): done
    Solving environment: done
    
    ## Package Plan ##
    
      environment location: /opt/anaconda3
    
      added / updated specs:
        - pyproj
    
    
    The following NEW packages will be INSTALLED:
    
      pyproj             pkgs/main/osx-64::pyproj-1.9.6-py37h9c430a6_0
    

    Environment Information

    • pyproj version you are attempting to install: 2.6 to resolve issues mentioned in this issue
    • PROJ version : Rel. 5.2.0, September 15th, 2018
    • Python version: 3.7.4
    • Operation System Information: Darwin-15.6.0-x86_64-i386-64bit
    installation-issues macos 
    opened by rrpelgrim 29
  • added CRS mapping to/from CF 1.8; added to_proj4_dict

    added CRS mapping to/from CF 1.8; added to_proj4_dict

    Addresses #226

    This will need a good review.

    I am unsure about what the CF unit mapped to. It is either units or vunits. I am guessing vunits at the moment, but it is only a guess.

    Others I think are just another maping to datum, but not sure. Maybe there is a vdatum in PROJ I am missing.

    • geoid_name (OGC WKT VERT_DATUM - ex GEOID12B)
    • geopotential_datum_name (OGC WKT VERT_DATUM - ex NAVD88)
    opened by snowman2 26
  • pypi installation errors

    pypi installation errors

    cc @justb4

    Via https://github.com/geopython/GeoHealthCheck/issues/240, looks like with the latest pyproj release on pypi there are install issues:

    Downloading/unpacking OWSLib==0.17.0
      Downloading OWSLib-0.17.0.tar.gz (149kB): 149kB downloaded
      Running setup.py (path:/tmp/pip_build_kralidist/OWSLib/setup.py) egg_info for package OWSLib
    
        warning: manifest_maker: MANIFEST.in, line 3: 'recursive-include' expects <dir> <pattern1> <pattern2> ...
    
    Downloading/unpacking python-dateutil>=1.5 (from OWSLib==0.17.0)
      Downloading python_dateutil-2.8.0-py2.py3-none-any.whl (226kB): 226kB downloaded
    Downloading/unpacking pytz (from OWSLib==0.17.0)
      Downloading pytz-2018.9-py2.py3-none-any.whl (510kB): 510kB downloaded
    Requirement already satisfied (use --upgrade to upgrade): requests>=1.0 in /usr/lib/python2.7/dist-packages (from OWSLib==0.17.0)
    Downloading/unpacking pyproj (from OWSLib==0.17.0)
      Downloading pyproj-2.0.0.tar.gz (408kB): 408kB downloaded
      Running setup.py (path:/tmp/pip_build_kralidist/pyproj/setup.py) egg_info for package pyproj
        ERROR: Cython.Build.cythonize not found. Cython is required to build from a repo.
        Complete output from command python setup.py egg_info:
        ERROR: Cython.Build.cythonize not found. Cython is required to build from a repo.
    
    ----------------------------------------
    Cleaning up...
    Command python setup.py egg_info failed with error code 1 in /.....
    
    opened by tomkralidis 26
  • WHL: MacOS arm64 Wheels

    WHL: MacOS arm64 Wheels

    Currently don't have CI runners to build/test them. There are options to potentially cross compile, but the wheels wouldn't be able to be tested. Not sure what the best way to handle this is.

    Related:

    • https://github.com/rasterio/rasterio-wheels/issues/75
    • https://github.com/geopandas/pyogrio/pull/64
    help wanted installation-issues macos 
    opened by snowman2 25
  • Update docstrings

    Update docstrings

    Hi,

    Could you please update the docstring documentation for the Transformer class? One minor typo is proj_from in the from_proj method, but the most important ones are the itransform and transform methods.

    They both state that the input should be in the order of x, y when they actually are in the order of y, x. And the output is in the order of y, x. That got me quite confused for a while.

    Thanks

    documentation axis-order 
    opened by mullenkamp 24
  • DEP: PROJ 8.2 Suppot

    DEP: PROJ 8.2 Suppot

    Related to #1011

    With PROJ 9.2 coming in March 01, 2023 ref that means that 3 minor versions is 9.2, 9.1, 9.0. Currently thinking that pyproj 3.4 will be the last minor version to support PROJ 8.2.

    proj 
    opened by snowman2 0
  • Incorrect `LICENSE_proj` filename in setup.cfg

    Incorrect `LICENSE_proj` filename in setup.cfg

    I copied this line from setup.cfg when updating the conda-forge recipe: https://github.com/pyproj4/pyproj/blob/main/setup.cfg#L12 But the actual filename is LICENSE_proj4. These should be made consistent.

    bug good-first-issue 
    opened by xylar 2
  • PROJ 9.1.1 doesn't work with Global Context

    PROJ 9.1.1 doesn't work with Global Context

    https://github.com/pyproj4/pyproj/actions/runs/3596938993/jobs/6058180954

    =================================== FAILURES ===================================
    ___________________ test_transformer_group__network_disabled ___________________
    
        @pytest.mark.grid
        @patch.dict("os.environ", {"PROJ_NETWORK": "ON"}, clear=True)
        def test_transformer_group__network_disabled():
            with proj_network_env():
                pyproj.network.set_network_enabled(active=False)
    >           trans_group = TransformerGroup(4326, 2964)
    
    test/test_transformer.py:869: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    pyproj/transformer.py:197: in __init__
        super().__init__(
    pyproj/_transformer.pyx:215: in pyproj._transformer._TransformerGroup.__init__
        _Transformer._from_pj(
    pyproj/_transformer.pyx:563: in pyproj._transformer._Transformer._from_pj
        transformer._init_from_crs(always_xy)
    pyproj/_transformer.pyx:614: in pyproj._transformer._Transformer._init_from_crs
        self._initialize_from_projobj()
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    >   raise ProjError("Input is not a transformation.")
    E   pyproj.exceptions.ProjError: Input is not a transformation.: (Internal Proj Error: pipeline: Pipeline: Bad step definition: inv (File not found or invalid))
    
    pyproj/_transformer.pyx:324: ProjError
    ------------------------------ Captured log call -------------------------------
    DEBUG    pyproj:transformer.py:197 PROJ_ERROR: hgridshift: could not find required grid(s).
    DEBUG    pyproj:transformer.py:197 PROJ_ERROR: pipeline: Pipeline: Bad step definition: inv (File not found or invalid)
    ____________________ test_transformer_group__download_grids ____________________
    
    get_user_data_dir_mock = <MagicMock name='get_user_data_dir' id='140700317128784'>
    tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-2/test_transformer_group__downlo0')
    capsys = <_pytest.capture.CaptureFixture object at 0x7ff7586c11f0>
    
        @pytest.mark.grid
        @pytest.mark.network
        @patch("pyproj.transformer.get_user_data_dir")
        def test_transformer_group__download_grids(get_user_data_dir_mock, tmp_path, capsys):
            get_user_data_dir_mock.return_value = str(tmp_path)
            with proj_network_env():
                pyproj.network.set_network_enabled(active=False)
    >           trans_group = TransformerGroup(4326, 2964)
    E   pyproj.exceptions.ProjError: Input is not a transformation.: (Internal Proj Error: pipeline: Pipeline: Bad step definition: inv (File not found or invalid))
    
    pyproj/_transformer.pyx:324: ProjError
    ------------------------------ Captured log call -------------------------------
    DEBUG    pyproj:transformer.py:197 PROJ_ERROR: hgridshift: could not find required grid(s).
    DEBUG    pyproj:transformer.py:197 PROJ_ERROR: pipeline: Pipeline: Bad step definition: inv (File not found or invalid)
    ____________ test_coordinate_operation_grids__alternative_grid_name ____________
    
        @pytest.mark.grid
        def test_coordinate_operation_grids__alternative_grid_name():
            cc = CoordinateOperation.from_epsg(1312, True)
            assert len(cc.grids) == 1
            grid = cc.grids[0]
            assert grid.direct_download is True
            assert grid.open_license is True
            assert grid.short_name == "ca_nrc_ntv1_can.tif"
            assert grid.package_name == ""
            assert grid.url == "https://cdn.proj.org/ca_nrc_ntv1_can.tif"
            if (PROJ_GTE_91 and grids_available(grid.short_name, check_network=False)) or (
                not PROJ_GTE_91 and grids_available(grid.short_name)
            ):
                assert grid.available is True
                assert grid.full_name.endswith(grid.short_name)
            elif PROJ_GTE_911 and pyproj.network.is_network_enabled():
                assert grid.available is True
    >           assert grid.full_name == grid.url
    E           AssertionError: assert '' == 'https://cdn...._ntv1_can.tif/'
    E             - https://cdn.proj.org/ca_nrc_ntv1_can.tif
    
    test/crs/test_crs.py:622: AssertionError
    =============================== warnings summary ===============================
    test/test_datadir.py::test_get_data_dir__from_user[str]
    test/test_datadir.py::test_get_data_dir__from_user[Path]
    test/test_datadir.py::test_append_data_dir__internal[str]
    test/test_datadir.py::test_append_data_dir__internal[Path]
      /home/runner/work/pyproj/pyproj/pyproj/datadir.py:38: UserWarning: pyproj unable to set database path.
        _global_context_set_data_dir()
    
    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    =========================== short test summary info ============================
    FAILED test/test_transformer.py::test_transformer_group__network_disabled - pyproj.exceptions.ProjError: Input is not a transformation.: (Internal Proj Error: pipeline: Pipeline: Bad step definition: inv (File not found or invalid))
    FAILED test/test_transformer.py::test_transformer_group__download_grids - pyproj.exceptions.ProjError: Input is not a transformation.: (Internal Proj Error: pipeline: Pipeline: Bad step definition: inv (File not found or invalid))
    FAILED test/test_transformer.py::test_transformer_group__download_grids__directory - pyproj.exceptions.ProjError: Input is not a transformation.: (Internal Proj Error: pipeline: Pipeline: Bad step definition: inv (File not found or invalid))
    FAILED test/crs/test_crs.py::test_coordinate_operation_grids__alternative_grid_name - AssertionError: assert '' == 'https://cdn...._ntv1_can.tif/'
      - https://cdn.proj.org/ca_nrc_ntv1_can.tif
    ============ 4 failed, 832 passed, 5 skipped, 4 warnings in 22.53s =============
    

    Going to need to do a git bisect with PROJ.

    bug proj 
    opened by snowman2 25
  • ENH: add Geod.from_ellipsoid classmethod

    ENH: add Geod.from_ellipsoid classmethod

    It would be handy to create a Geod object from an Ellipsoid object. E.g., this is how I would expect:

    from pyproj import CRS, Geod
    
    crs = CRS.from_epsg(4326)
    geod = Geod.from_ellipsoid(crs.ellipsoid)
    

    or is that too convoluted? Is there a simpler way? A few current working methods:

    Geod(ellps='WGS84')
    # Geod(ellps='WGS84')
    Geod(a=crs.ellipsoid.semi_major_metre, b=crs.ellipsoid.semi_minor_metre)
    # Geod('+a=6378137 +f=0.0033528106647475126')
    geod = Geod(a=crs.ellipsoid.semi_major_metre, f=1/crs.ellipsoid.inverse_flattening)
    # Geod(ellps='WGS84')
    

    and a bonus curiosity, probably a floating-point precision error

    assert Geod(ellps='WGS84') == Geod(a=crs.ellipsoid.semi_major_metre, f=1/crs.ellipsoid.inverse_flattening)
    assert Geod(ellps='WGS84') != Geod(a=crs.ellipsoid.semi_major_metre, b=crs.ellipsoid.semi_minor_metre)
    
    documentation good-first-issue 
    opened by mwtoews 4
  • MNT: Deprecate Transformer.from_proj?

    MNT: Deprecate Transformer.from_proj?

    from_proj was added based on pyproj 1 patterns of using the Proj objects with the transformer. However, with PROJ 6+ and pyproj 2+, the CRS object should be the object used when creating transformers.

    from_proj does not have all of the kwargs that from_crs has and that was mainly because from_crs should be the method used and there isn't much point in supporting both. Additionally, the Proj object has some additional overhead as it creates a Transformer and a CRS when initialized.

    I am thinking that removing from_proj will remove confusion.

    Compatibility: from_proj was added in the initial version of the transformer in pyproj 2.1.0. from_crs was added at the same time, so if users modify their code to use from_crs instead it will also be backwards compatible.

    Does anyone have good reasons why from_proj should stay?

    opened by snowman2 0
  • +R_A appears to have no effect in Geod() and CRS()

    +R_A appears to have no effect in Geod() and CRS()

    Problem description

    The +R_A option is not being honored in Pyproj, whereas it seems to work fine using the geod CLI tool.

    This problem happens if I use pyproj.Geod() or pyproj.CRS().get_geod().

    Code sample

    My Python code:

    import logging
    import os
    
    os.environ['PROJ_DEBUG'] = '3'
    logging.basicConfig(level=logging.DEBUG)
    
    import pyproj
    # DEBUG:pyproj:PROJ_DEBUG: pj_open_lib(proj.ini): call fopen(/.../lib/python3.10/site-packages/pyproj/proj_dir/share/proj/proj.ini) - succeeded
    
    geod1 = pyproj.Geod('+proj=lonlat +ellps=WGS84')
    print(geod1.f)
    # 0.0033528106647474805
    geod1.fwd(-70, 40, 60, 10_000)
    # (-69.89851793919364, 40.04498640681145, -119.93473805953444)
    
    geod2 = pyproj.Geod('+proj=lonlat +ellps=WGS84 +R_A')
    print(geod2.f)
    # 0.0033528106647474805
    geod2.fwd(-70, 40, 60, 10_000)
    # (-69.89851793919364, 40.04498640681145, -119.93473805953444)
    

    Equivalent CLI invocation using geod:

    export PROJ_DEBUG=3
    
    geod -f '%0.4f' +proj=lonlat +ellps=WGS84 <<< '-70E 40N 60d 10000m'
    # pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
    # pj_ellipsoid - final:    ellps=WGS84
    # 70.0447	40.2273	-119.7864m
    
    geod -f '%0.4f' +proj=lonlat +ellps=WGS84 +R_A <<< '-70E 40N 60d 10000m'
    # pj_ellipsoid - final: a=6371007.181 f=1/  0.000, errno=0
    # pj_ellipsoid - final:   R_A ellps=WGS84
    # 70.0448	40.2282	-119.7855m
    

    Expected Output

    I expected the output from geod1 to be different from geod2, and that geod2.f should be 0.

    I was also surprised to see that the output from the geod command line tool was different from the output from pyproj.Geod.fwd. Presumably the difference can be ascribed to different options when compiling the CLI tool (installed via MacPorts) and the Python package (installed via the wheels on PyPI).

    I further expected to see "trace" logging output comparable to what the geod CLI tool emitted, but I suppose that's a separate issue.

    Environment Information

    MacOS 12.4 on ARM64.

    Versions

    pyproj info:
        pyproj: 3.4.0
          PROJ: 9.1.0
      data dir: /.../lib/python3.10/site-packages/pyproj/proj_dir/share/proj
    user_data_dir: /.../.local/share/proj
    PROJ DATA (recommended version): 1.11
    PROJ Database: 1.2
    EPSG Database: v10.074 [2022-08-01]
    ESRI Database: ArcGIS Pro 3.0 [2022-07-09]
    IGNF Database: 3.1.0 [2019-05-24]
    
    System:
        python: 3.10.6 (main, Sep 19 2022, 14:40:49) [Clang 13.1.6 (clang-1316.0.21.2.5)]
    executable: /.../bin/python
       machine: macOS-12.4-arm64-arm-64bit
    
    Python deps:
       certifi: 2022.9.14
        Cython: None
    setuptools: 65.4.1
           pip: 22.2.2
    

    Installation method

    Installed using Pip in a Venv:

    python -m venv venv
    ./venv/bin/pip install -U pyproj
    
    enhancement 
    opened by gwerbin-tive 8
Releases(3.4.1)
  • 3.4.1(Dec 13, 2022)

    What's Changed

    • WHL: Add win32 to build_wheels matrix by @molinav in https://github.com/pyproj4/pyproj/pull/1169
    • BUG: Changed so that the setup.cfg depends on the version code in the init.py by @Scoppio in https://github.com/pyproj4/pyproj/pull/1156
    • REF: Use upper case EPSG code when creating CRS by @snowman2 in https://github.com/pyproj4/pyproj/pull/1162
    • BUG: Fix CRS.to_cf for Pole rotation GRIB convention by @snowman2 in https://github.com/pyproj4/pyproj/pull/1167
    • BUG: Fix memory leak in CRS.list_authority by @skogler in https://github.com/pyproj4/pyproj/pull/1178
    • BUG: Fix Transform options array length by @shadchin in https://github.com/pyproj4/pyproj/pull/1187
    • DOC: fix a few typos by @ocefpaf in https://github.com/pyproj4/pyproj/pull/1153

    New Contributors

    • @Scoppio made their first contribution in https://github.com/pyproj4/pyproj/pull/1156
    • @molinav made their first contribution in https://github.com/pyproj4/pyproj/pull/1169
    • @skogler made their first contribution in https://github.com/pyproj4/pyproj/pull/1178
    • @dependabot made their first contribution in https://github.com/pyproj4/pyproj/pull/1185
    • @shadchin made their first contribution in https://github.com/pyproj4/pyproj/pull/1187

    Other contributions:

    • @sebastic - testing Debian builds
    • @jdkloe - testing Fedora builds

    Full Changelog: https://github.com/pyproj4/pyproj/compare/3.4.0...3.4.1

    Source code(tar.gz)
    Source code(zip)
  • 3.4.1rc0(Dec 10, 2022)

  • 3.4.0(Sep 10, 2022)

    What's Changed

    • DEP: Add python 3.11 support by @snowman2 in https://github.com/pyproj4/pyproj/pull/1121
    • DEP: Minimum PROJ version 8.2 by @snowman2 in https://github.com/pyproj4/pyproj/pull/1122
    • DEP: Update wheels with PROJ 9.1.0 by @snowman2 in https://github.com/pyproj4/pyproj/pull/1132
    • ENH: Added authority, accuracy, and allow_ballpark kwargs to TransformerGroup by @snowman2 in https://github.com/pyproj4/pyproj/pull/1076
    • ENH: Added force_over kwarg to Transformer.from_crs by @snowman2 in https://github.com/pyproj4/pyproj/pull/1123
    • ENH: Added Transformer.get_last_used_operation by @snowman2 in https://github.com/pyproj4/pyproj/pull/1124
    • BUG: Fix transformer list for 3D transformations in TransformerGroup by @snowman2 in https://github.com/pyproj4/pyproj/pull/1075
    • BUG: Mercator A defined only for lat_0 = 0 by @kdpenner in https://github.com/pyproj4/pyproj/pull/1095
    • BUG: Add support for PROJ_DATA environment variable by @snowman2 in https://github.com/pyproj4/pyproj/pull/1099
    • BUG: Ensure numpy masked arrays stay masked after projection by @paultcochrane in https://github.com/pyproj4/pyproj/pull/1103
    • BLD: Don't specify runtime_library_dirs on Cygwin by @DWesl in https://github.com/pyproj4/pyproj/pull/1120
    • BUG: Fix finding PROJ version with PROJ_LIB and PROJ 9.1+ by @snowman2 in https://github.com/pyproj4/pyproj/pull/1128
    • CLN: Remove deprecated 'skip_equivalent' kwarg from transformers and 'errcheck' kwarg from CRS.from_cf by @snowman2 in https://github.com/pyproj4/pyproj/pull/1077
    • REF: use regex to process PROJ strings in CRS.to_dict() by @snowman2 in https://github.com/pyproj4/pyproj/pull/1086
    • DOC: Fix typo in installation docs by @paultcochrane in https://github.com/pyproj4/pyproj/pull/1101
    • DOC: Fix issues in transformation grids docs by @paultcochrane in https://github.com/pyproj4/pyproj/pull/1104

    New Contributors

    • @kdpenner made their first contribution in https://github.com/pyproj4/pyproj/pull/1095
    • @paultcochrane made their first contribution in https://github.com/pyproj4/pyproj/pull/1101
    • @DWesl made their first contribution in https://github.com/pyproj4/pyproj/pull/1120

    Other contributions:

    • @sebastic - testing Debian builds
    • @jdkloe - testing Fedora builds
    • @vot4anto - MacOS ARM 64 wheels (https://github.com/pyproj4/pyproj/issues/1064)

    Full Changelog: https://github.com/pyproj4/pyproj/compare/3.3.1...3.4.0

    Source code(tar.gz)
    Source code(zip)
  • 3.4.0rc2(Sep 9, 2022)

  • 3.4.0rc1(Sep 8, 2022)

  • 3.4.0rc0(Sep 7, 2022)

  • 3.3.1(Apr 22, 2022)

    What's Changed

    • DOC: minor fix to crs doc-strings by @bjlittle in https://github.com/pyproj4/pyproj/pull/1004
    • BUG: Correct type annotation for AreaofUse.bounds by @Kirill888 in https://github.com/pyproj4/pyproj/pull/1013
    • BUG: crs.py: remove @abstractmethod decorator by @hemberger in https://github.com/pyproj4/pyproj/pull/1018
    • BUG: Reorder deps in show_versions for setuptools issue by @snowman2 in https://github.com/pyproj4/pyproj/pull/1019
    • BUG: get_data_dir support for conda Windows enviroments by @snowman2 in https://github.com/pyproj4/pyproj/pull/1030
    • ENH: warn when export of CRS returns None by @martinfleis in https://github.com/pyproj4/pyproj/pull/1037
    • BUG: Complete database stub file with query_utm_crs_info() signature by @orontee in https://github.com/pyproj4/pyproj/pull/1047
    • ENH: Added support for int-like strings and numpy dtypes by @iboates in https://github.com/pyproj4/pyproj/pull/1049
    • BUG: Warn when CRS cannot be converted to PROJ or PROJ JSON by @snowman2 in https://github.com/pyproj4/pyproj/pull/1054
    • ENH: Added support to pickle Transformer by @snowman2 in https://github.com/pyproj4/pyproj/pull/1060

    New Contributors

    • @Kirill888 made their first contribution in https://github.com/pyproj4/pyproj/pull/1013
    • @hemberger made their first contribution in https://github.com/pyproj4/pyproj/pull/1018
    • @martinfleis made their first contribution in https://github.com/pyproj4/pyproj/pull/1037
    • @orontee made their first contribution in https://github.com/pyproj4/pyproj/pull/1047
    • @iboates made their first contribution in https://github.com/pyproj4/pyproj/pull/1049

    Other contributions:

    • @sebastic - testing Debian builds
    • @cgohlke - providing Windows wheels

    Full Changelog: https://github.com/pyproj4/pyproj/compare/3.3.0...3.3.1

    Source code(tar.gz)
    Source code(zip)
  • 3.3.0(Nov 18, 2021)

    Changes

    • WHL: Wheels contain PROJ 8.2.0
    • DEP: Minimum supported Python version 3.8 (issue #930)
    • DEP: Minimum PROJ version 8.0 (issue #940)
    • BUG: Prepend "Derived" to CRS type name if CRS is derived (issue #932)
    • BUG: Improved handling of inf values in pyproj.transformer.Transformer.transform_bounds (pull #961)
    • BUG: CRS CF conversions mismatch of PROJ parameters in rotated pole (issue #948)
    • ENH: Add support for transforming bounds at the poles in pyproj.transformer.Transformer.transform_bounds (pull #962)
    • ENH: Added pyproj.transformer.Transformer.source_crs & pyproj.transformer.Transformer.target_crs (pull #976)
    • ENH: Added pyproj.crs.coordinate_operation.PoleRotationNetCDFCFConversion (issue #948)
    • ENH: Added pyproj.database.get_database_metadata (issue #990)
    • ENH: Added PROJ database metadata to pyproj.show_versions (issue #990)

    Contributors

    A total of 3 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.

    • Bill Little +
    • Gerrit Holl +
    • Alan D. Snow

    Other contributions:

    • Bas Couwenberg - testing the builds with Debian.
    • Jos de Kloe - testing the builds with Fedora.
    • Christoph Gohlke - providing Window's wheels.
    • Joris Van den Bossche - PR review.
    Source code(tar.gz)
    Source code(zip)
  • 3.2.1(Sep 18, 2021)

    Changes

    • REF: declare specific python types in cython (pull #928)
    • REF: Use cython string decoding (pull #929)
    • BUG: Return multiple authorities with pyproj.crs.CRS.list_authority (pull #943)
    • BUG: CRS CF conversions ensure lon_0 = north_pole_grid_longitude + 180 (issue #927)
    • BUG: CRS CF conversions ensure Pole rotation (netCDF CF convention) conversion works (issue #927)

    Acknowledgements

    Thanks to everyone who contributed to this release as well as to those who help with the distribution!

    • Bas Couwenberg - testing the builds with Debian.
    • Jos de Kloe - testing the builds with Fedora.
    Source code(tar.gz)
    Source code(zip)
  • 3.2.1rc0(Sep 15, 2021)

  • 3.2.0(Sep 4, 2021)

    Changes

    • WHL: Wheels contain PROJ 8.1.1
    • DOC: Add new pyproj logo (issue #700)
    • REF: Handle deprecation of proj_context_set_autoclose_database (issue #866)
    • REF: Make CRS methods inheritable (issue #847)
    • ENH: Added pyproj.crs.CRS.is_derived (pull #902)
    • ENH: Added pyproj.crs.GeocentricCRS (pull #903)
    • ENH: Added pyproj.crs.CRS.list_authority (issue #918)
    • ENH: Added inplace kwarg to :meth:pyproj.transformer.Transformer.transform (issue #906)
    • PERF: Disable unnecessary copy in dtype conversion for buffer (pull #904)
    • DOC: Improve FAQ text about CRS formats (issue #789)
    • BUG: Add PyPy cython array implementation (issue #854)
    • BUG: Fix spelling for pyproj.crs.coordinate_operation.AzimuthalEquidistantConversion and pyproj.crs.coordinate_operation.LambertAzimuthalEqualAreaConversion (issue #882)
    • BUG: Make datum name match exact in pyproj.database.query_utm_crs_info (pull #887)
    • BUG: Update pyproj.enums.GeodIntermediateFlag for future Python compatibility (issue #855)
    • BUG: Hide unnecessary PROJ ERROR from proj_crs_get_coordoperation (issue #873)
    • BUG: Fix pickling for CRS builder classes (issue #897)
    • CLN: Remove ignore_axis_order kwarg from pyproj.crs.CRS.is_exact_same as it was added by accident (pull #904)
    • CLN: remove numeric/numarrays support (pull #908)
    • LNT: Add pylint & address issues (pull #909)
    • DEP: Remove distutils dependency (pull #917)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    Contributors

    A total of 2 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.

    • Brendan Jurd + (Made the new logo!)
    • Alan D. Snow

    Other contributions:

    • Bas Couwenberg - testing the builds with Debian.
    • Jos de Kloe - testing the builds with Fedora.
    • Christoph Gohlke - testing the builds on Windows & providing Window's wheels.
    • Joris Van den Bossche - PR reviews.
    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(May 24, 2021)

    Changes

    • DEP: Minimum supported Python version 3.7 (issue #790)
    • REF: Multithread safe CRS, Proj, & Transformer (issue #782)
    • BUG: Disallow NaN values with AreaOfInterest & BBox (issue #788)
    • ENH: Pretty format PROJ string support (issue #764)
    • ENH: Added pyproj.transformer.Transformer.to_proj4 (pull #798)
    • ENH: Added authority, accuracy, and allow_ballpark kwargs to :meth:pyproj.transformer.Transformer.from_crs (issue #754)
    • ENH: Added support for "AUTH:CODE" input to :meth:pyproj.transformer.Transformer.from_pipeline (issue #755)
    • ENH: Added pyproj.crs.CRS.to_3d (pull #808)
    • ENH: Added pyproj.transformer.Transformer.transform_bounds (issue #809)
    • ENH: Added pyproj.crs.CRS.is_compound (pull #823)
    • ENH: Added initial_idx and terminal_index kwargs to pyproj.Geod.npts (pull #841)
    • ENH: Added pyproj.Geod.inv_intermediate & pyproj.Geod.fwd_intermediate (pull #841)
    • REF: Skip transformations if noop & deprecate skip_equivalent (pull #824)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    Contributors

    A total of 3 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.

    • David Hoese +
    • Idan Miara +
    • Alan D. Snow

    Other contributions:

    Joris Van den Bossche - PR review & idea to make pyproj threadsafe, Bas Couwenberg - testing the builds with Debian.

    Source code(tar.gz)
    Source code(zip)
  • 3.0.1(Mar 5, 2021)

    Changes

    • WHL: Wheels contain PROJ 7.2.1
    • Use proj_context_errno_string in PROJ 8+ due to deprecation (issue #760)
    • BUG: Allow transformations with empty arrays (issue #766)
    • BUG: support numpy objects in CRS.from_cf (issue #773)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    A total of 2 people contributed patches to this release.

    Micah Cochran Alan D. Snow

    Other contributions:

    Joris Van den Bossche - PR review, Bas Couwenberg - testing the builds with Debian.

    Source code(tar.gz)
    Source code(zip)
  • 3.0.1rc0(Mar 2, 2021)

  • 3.0.0.post1(Nov 5, 2020)

    Changes

    • DST: Do not include test package in wheels (#744)
    • DOC: Specify units of measuring methods (#742)

    Acknowledgements

    Thanks to everyone who contributed to this release and to those who help with the distribution!

    A total of 2 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.

    • Christoph Gohlke
    • Sebastien Tremblay-Johnston +
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Nov 5, 2020)

    Changes

    • Minimum supported Python version 3.6 (issue #499)
    • Minimum PROJ version 7.2 (issues #599 & #689)
    • WHL: Removed datumgrids from wheels because not needed with RFC 4 (pull #628)
    • ENH: Added PROJ Network Settings (#675, #691, #695)
    • ENH: Added ability to use global context (issue #661)
    • ENH: Added transformation grid sync API/CLI (issue #572)
    • ENH: Support obects with __array__ method (pandas.Series, xarray.DataArray, dask.array.Array) (issue #573)
    • ENH: Added pyproj.datadir.get_user_data_dir() (pull #636)
    • ENH: Added pyproj.transformer.Transformer.is_network_enabled (issue #629)
    • ENH: Added pyproj.transformer.TransformerGroup.download_grids() (pull #643)
    • ENH: Use β€˜proj_get_units_from_database’ in pyproj.database.get_units_map() & cleanup pyproj.database.get_codes() (issue #619)
    • ENH: Added support for radians for Proj & Transformer.from_pipeline & use less gil (issue #612)
    • ENH: Datum.from_name default to check all datum types (issue #606)
    • ENH: Use from_user_input in __eq__ when comparing CRS sub-classes (i.e. PrimeMeridian, Datum, Ellipsoid, etc.) (issue #606)
    • ENH: Add support for coordinate systems with CRS using CF conventions (issue #536)
    • ENH: Use proj_is_equivalent_to_with_ctx in the place of proj_is_equivalent_to internally (issue #666)
    • BUG: Add support for identifying engineering/parametric/temporal datums (issue #670)
    • ENH: Add support for temporal CRS CF coordinate system (issue #672)
    • ENH: Added support for debugging internal PROJ (pull #696)
    • ENH: Added pathlib support for data directory methods (pull #702)
    • ENH: Added pyproj.database.query_crs_info() (pull #703)
    • ENH: Added pyproj.database.query_utm_crs_info() (pull #712)
    • REF: Refactor Proj to inherit from Transformer (issue #624)
    • REF: Added pyproj.database, pyproj.aoi, and pyproj.list modules (pull #703)
    • BUG: Fix handling of polygon holes when calculating area in Geod (pull #686)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    A total of 8 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.

    • Bas Couwenberg
    • David HaberthΓΌr +
    • Filipe Fernandes +
    • Marcos Modenesi +
    • Mike Taves +
    • Poruri Sai Rahul +
    • jacob-indigo +
    • Alan D. Snow

    Other contributions:

    • Bas Couwenberg - testing the builds with Debian
    • Christoph Gohlke - testing the Windows wheel builds
    • Joris Van den Bossche - testing with geopandas and PR reviews
    • Libor PechÑček - for preventing another post1 release with a MANIFEST.in catch
    Source code(tar.gz)
    Source code(zip)
  • v2.6.1rel(May 4, 2020)

    Changes

    • WHL: Wheels contain PROJ version is 7.0.1
    • BUG: Allow *_name to be added in pyproj.crs.CRS.to_cf() (issue #585)
    • BUG: Fix building prime meridian in pyproj.crs.CRS.from_cf() (pull #588)
    • BUG: Fix check for numpy bool True kwarg (pull #590)
    • DOC: Update pyproj.Proj docstrings for clarity (issue #584)
    • Added pyproj.__proj_version__
    • BUG: Fix pyproj.proj.Proj.get_factors() (issue #600)
    • BUG: fix unequal (!=) with non-CRS type (pull #596)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    A total of 3 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.

    Joris Van den Bossche Martin Raspaud + Alan D. Snow

    Other contributions:

    Christoph Gohlke - testing the Windows wheel builds. Bas Couwenberg - testing the builds with Debian.

    Source code(tar.gz)
    Source code(zip)
  • 2.6.1rc1(May 3, 2020)

  • 2.6.1rc0(May 2, 2020)

  • v2.6.0rel(Mar 18, 2020)

    Changes

    • ENH: Added pyproj.proj.Proj.get_factors (issue #503)
    • ENH: Added type hints (issue #369)
    • BUG: Don't use CRS classes for defaults in CRS child class init signatures (issue #554)
    • ENH: Updated :pyproj.crs.CRS.axis_info to pull all relevant axis information from CRS (issue #557)
    • ENH: Added pyproj.transformer.Transform.__eq__ (issue #559)
    • ENH: Added pyproj.crs.CRS.utm_zone (issue #561)
    • BUG: Modify CRS dict test to accomodate numpy bool types. (issue #564)
    • BUG: Fix pipeline transformations to match cct (issue #565)
    • BUG: Don't silently ignore kwargs when projparams are specified (Proj & CRS) (issue #565)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    A total of 4 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.

    • Guillaume Lostis
    • Joe Ranalli +
    • Greg Berardinelli +
    • Alan D. Snow

    Other contributions:

    Bas Couwenberg - testing the builds with Debian. Joris Van den Bossche - PR review.

    Source code(tar.gz)
    Source code(zip)
  • 2.6.0rc0(Mar 13, 2020)

  • v2.5.0rel(Feb 21, 2020)

    Changes

    • Wheels contain PROJ version is 6.3.1
    • Remove deprecated PyObject_AsWriteBuffer (issue #495)
    • ENH: Added pyproj.crs.CRS.equals with ignore_axis_order kwarg (issue #493)
    • ENH: Added pyproj.crs.CoordinateSystem.from_json, pyproj.crs.CoordinateSystem.from_json_dict, and pyproj.crs.CoordinateSystem.from_string (pull #501)
    • ENH: Added pyproj.crs.CoordinateSystem to pyproj.crs namespace (pull #501)
    • ENH: Added pyproj.crs.CoordinateSystem.from_user_input, pyproj.crs.CoordinateOperation.from_user_input, pyproj.crs.Datum.from_user_input, pyproj.crs.PrimeMeridian.from_user_input, pyproj.crs.Ellipsoid.from_user_input (pull #502)
    • ENH: Added pyproj.crs.CoordinateSystem.from_name, pyproj.crs.CoordinateOperation.from_name, pyproj.crs.Datum.from_name, :meth:pyproj.crs.PrimeMeridian.from_name, pyproj.crs.Ellipsoid.from_name (pull #505)
    • BUG: Fix getting :attr:pyproj.crs.Ellipsoid.semi_minor_metre when not computed (issue #457)
    • ENH: Added support for custom CRS (issue #389)
    • ENH: Added enumeration for WKT2_2019 (issue #526)
    • ENH: Update from_cf/to_cf to use WKT instead of PROJ strings for internal management (issue #515)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    A total of 3 people contributed to the codebase in this release. People with a "+" by their names contributed a patch for the first time:

    Bas Couwenberg Eduard Popov + Alan D. Snow

    Other contributions:

    Christoph Gohlke - testing the Windows wheel builds. Bas Couwenberg - testing the builds with Debian. David Hoese - testing of new CRS.to_cf/from_cf methods

    Source code(tar.gz)
    Source code(zip)
  • 2.5.rc0(Feb 20, 2020)

  • v2.4.2rel(Dec 1, 2019)

    Changes

    • Elevate +init= warning to FutureWarning (pull #486)
    • Add UserWarning to to_proj4() (pull #486)
    • BUG: Fix for 32-bit i686 plaforms (issue #481)
    • Return β€˜inf’ in Proj instead of 1.e30 (pull #491)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    A total of 3 people contributed to the codebase in this release. People with a "+" by their names contributed a patch for the first time:

    Guillaume Lostis + Jos de Kloe Alan D. Snow

    Other contributions:

    Bas Couwenberg - testing the builds with Debian. David Hoese - PR review.

    Source code(tar.gz)
    Source code(zip)
  • 2.4.2.rc0(Nov 26, 2019)

  • v2.4.1rel(Nov 6, 2019)

    Changes

    • Wheels contain PROJ version is 6.2.1 (issue #456)
    • Wheels for Linux x86_64 use manylinux2010 (pyproj4/pyproj-wheels/pull/18)
    • BUG: Fix setting lat_ts for mercator projection in CRS.from_cf() and CRS.to_cf() (issue #461)
    • BUG: latlon -> longlat in CRS.from_cf() for o_proj so behavior consistent in PROJ 6.2.0 and 6.2.1 (pull #472)
    • ENH: Add repr for pyproj.crs.CoordinateOperation and for pyproj.transformer.TransformerGroup (pull #464)

    Acknowledgements

    Thanks to everyone who contributed to this release! The detailed bug reports are definitely appreciated. Additionally, thanks to those who help with the distribution!

    A total of 3 people contributed to the codebase in this release. People with a "+" by their names contributed a patch for the first time:

    Kristian Evers + Alan D. Snow

    Other contributions:

    Christoph Gohlke - testing the Windows wheel builds. Bas Couwenberg - testing the builds with Debian.

    Source code(tar.gz)
    Source code(zip)
pure-Python (Numpy optional) 3D coordinate conversions for geospace ecef enu eci

Python 3-D coordinate conversions Pure Python (no prerequistes beyond Python itself) 3-D geographic coordinate conversions and geodesy. API similar to

Geospace code 292 Dec 29, 2022
pure-Python (Numpy optional) 3D coordinate conversions for geospace ecef enu eci

Python 3-D coordinate conversions Pure Python (no prerequistes beyond Python itself) 3-D geographic coordinate conversions and geodesy. API similar to

Geospace code 292 Dec 29, 2022
Bacon - Band-limited Coordinate Networks for Multiscale Scene Representation

BACON: Band-limited Coordinate Networks for Multiscale Scene Representation Proj

Stanford Computational Imaging Lab 144 Dec 29, 2022
A Python interface between Earth Engine and xarray

eexarray A Python interface between Earth Engine and xarray Description eexarray was built to make processing gridded, mesoscale time series data quic

Aaron Zuspan 159 Dec 23, 2022
Geocoding library for Python.

geopy geopy is a Python client for several popular geocoding web services. geopy makes it easy for Python developers to locate the coordinates of addr

geopy 3.8k Dec 30, 2022
PySAL: Python Spatial Analysis Library Meta-Package

Python Spatial Analysis Library PySAL, the Python spatial analysis library, is an open source cross-platform library for geospatial data science with

Python Spatial Analysis Library 1.1k Dec 18, 2022
Python library to decrypt Airtag reports, as well as a InfluxDB/Grafana self-hosted dashboard example

Openhaystack-python This python daemon will allow you to gather your Openhaystack-based airtag reports and display them on a Grafana dashboard. You ca

Bezmenov Denys 19 Jan 3, 2023
prettymaps - A minimal Python library to draw customized maps from OpenStreetMap data.

A small set of Python functions to draw pretty maps from OpenStreetMap data. Based on osmnx, matplotlib and shapely libraries.

Marcelo de Oliveira Rosa Prates 9k Jan 8, 2023
Hapi is a Python library for building Conceptual Distributed Model using HBV96 lumped model & Muskingum routing method

Current build status All platforms: Current release info Name Downloads Version Platforms Hapi - Hydrological library for Python Hapi is an open-sourc

Mostafa Farrag 15 Dec 26, 2022
Python library to visualize circular plasmid maps

Plasmidviewer Plasmidviewer is a Python library to visualize plasmid maps from GenBank. This library provides only the function to visualize circular

Mori Hideto 9 Dec 4, 2022
peartree: A library for converting transit data into a directed graph for sketch network analysis.

peartree ?? ?? peartree is a library for converting GTFS feed schedules into a representative directed network graph. The tool uses Partridge to conve

Kuan Butts 183 Dec 29, 2022
Client library for interfacing with USGS datasets

USGS API USGS is a python module for interfacing with the US Geological Survey's API. It provides submodules to interact with various endpoints, and c

Amit Kapadia 104 Dec 30, 2022
A library to access OpenStreetMap related services

OSMPythonTools The python package OSMPythonTools provides easy access to OpenStreetMap (OSM) related services, among them an Overpass endpoint, Nomina

Franz-Benjamin Mocnik 342 Dec 31, 2022
This is a simple python code to get IP address and its location using python

IP address & Location finder @DEV/ED : Pavan Ananth Sharma Dependencies: ip2geotools Note: use pip install ip2geotools to install this in your termin

Pavan Ananth Sharma 2 Jul 5, 2022
OSMnx: Python for street networks. Retrieve, model, analyze, and visualize street networks and other spatial data from OpenStreetMap.

OSMnx OSMnx is a Python package that lets you download geospatial data from OpenStreetMap and model, project, visualize, and analyze real-world street

Geoff Boeing 4k Jan 8, 2023
Python bindings and utilities for GeoJSON

geojson This Python library contains: Functions for encoding and decoding GeoJSON formatted data Classes for all GeoJSON Objects An implementation of

Jazzband 765 Jan 6, 2023
Python bindings and utilities for GeoJSON

geojson This Python library contains: Functions for encoding and decoding GeoJSON formatted data Classes for all GeoJSON Objects An implementation of

Jazzband 763 Dec 26, 2022
Documentation and samples for ArcGIS API for Python

ArcGIS API for Python ArcGIS API for Python is a Python library for working with maps and geospatial data, powered by web GIS. It provides simple and

Esri 1.4k Dec 30, 2022
python toolbox for visualizing geographical data and making maps

geoplotlib is a python toolbox for visualizing geographical data and making maps data = read_csv('data/bus.csv') geoplotlib.dot(data) geoplotlib.show(

Andrea Cuttone 976 Dec 11, 2022