Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future #1468

Open
mwtoews opened this issue Jan 14, 2025 · 1 comment

Comments

@mwtoews
Copy link
Contributor

mwtoews commented Jan 14, 2025

The CI logs for pyproj show a few common warning messages, e.g. here

test/test_geod.py: 72 warnings
  /home/runner/work/pyproj/pyproj/pyproj/geod.py:398: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
    return self._inv_point(

test/test_geod.py: 20 warnings
  /home/runner/work/pyproj/pyproj/pyproj/geod.py:306: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
    return self._fwd_point(
...
test/test_transformer.py: 40 warnings
  /home/runner/work/pyproj/pyproj/pyproj/transformer.py:817: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
    return self._transformer._transform_point(

Code Sample

A small replicator for _transform_point is:

import warnings

import numpy as np
from pyproj import Transformer

warnings.simplefilter("error")

transformer = Transformer.from_crs(4326, 32618, always_xy=True)
transformer.transform(np.array([1]), np.array([2]))

with error

Traceback (most recent call last):
File "", line 1, in
File "/tmp/z/lib/python3.10/site-packages/pyproj/transformer.py", line 817, in transform
return self._transformer._transform_point(
File "pyproj/_transformer.pyx", line 743, in pyproj._transformer._Transformer._transform_point
DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)

This is because of a try/except block that attempts a scalar transform in pyproj/transformer.py#L815-L827. The attempt with non-scalar np.array([1]) throws a warning/error when assigned to scalar double coord_x in pyproj/_transformer.pyx#L743.

Array inputs should use _transform instead of _transform_point, which is intended for scalars.

I haven't checked the other instances with _inv_point or _fwd_point, but I'd expect similar.

Environment Information

  • Output from: pyproj -v
pyproj info:
    pyproj: 3.7.0
PROJ (runtime): 9.4.1
PROJ (compiled): 9.4.1
  data dir: /tmp/z/lib/python3.10/site-packages/pyproj/proj_dir/share/proj
user_data_dir: /home/mtoews/.local/share/proj
PROJ DATA (recommended version): 1.18
PROJ Database: 1.3
EPSG Database: v11.006 [2024-03-13]
ESRI Database: ArcGIS Pro 3.3 [2024-05-07]
IGNF Database: 3.1.0 [2019-05-24]

System:
    python: 3.10.12 (main, Nov  6 2024, 20:22:13) [GCC 11.4.0]
executable: /tmp/z/bin/python3
   machine: Linux-6.8.0-51-generic-x86_64-with-glibc2.35

Python deps:
   certifi: 2024.12.14
    Cython: None
setuptools: 59.6.0
       pip: 22.0.2
@mwtoews mwtoews added the bug label Jan 14, 2025
@snowman2
Copy link
Member

Duplicate of #1307

@snowman2 snowman2 marked this as a duplicate of #1307 Jan 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants