Skip to content

FionaReader fails on Natural Earth 10m rivers for North America.  #2087

@juseg

Description

@juseg

Description

FionaReader fails to open Natural Earth 10m rivers for North America. There seems to be an empty record which raises an AttributeError. BasicReader provides a record with geometry None, allowing e.g. for rec in shp.records(). Is this a data bug or a cartopy bug?

Code to reproduce

import cartopy

filename = cartopy.io.shapereader.natural_earth(
    resolution='10m', category='physical', name='rivers_north_america')
basic = cartopy.io.shapereader.BasicReader(filename).records()
fiona = cartopy.io.shapereader.FionaReader(filename).records()

while True:
    basic_record = next(basic)  # yields a record with geometry None
    fiona_record = next(fiona)  # raises AttributeError

Traceback

Traceback (most recent call last):
  File "/home/julien/git/code/hyoga/fionabug.py", line 12, in <module>
    fiona_record = next(fiona)
  File "/usr/lib/python3.10/site-packages/cartopy/io/shapereader.py", line 244, in records
    yield FionaRecord(item['geometry'],
  File "/usr/lib/python3.10/site-packages/cartopy/io/shapereader.py", line 116, in __init__
    self._bounds = geometry.bounds
AttributeError: 'NoneType' object has no attribute 'bounds
Full environment definition

Operating system

Manjaro Linux

Relevant packages

Package                       Version
----------------------------- -----------
Cartopy                       0.21.0
Fiona                         1.8.21
pyshp                         2.3.0

Full pip list

Package                       Version
----------------------------- -----------
absl-py                       1.2.0
absplots                      0.2.0
affine                        2.3.1
alabaster                     0.7.12
apipkg                        3.0.1
appdirs                       1.4.4
apptools                      5.2.0
arandr                        0.1.10
astroid                       2.12.7
asttokens                     2.0.8
atpublic                      3.1.1
attrs                         22.1.0
autocommand                   2.2.1
autopep8                      1.7.0
Babel                         2.10.3
backcall                      0.2.0
beautifulsoup4                4.11.1
Bottleneck                    1.3.5
btrfsutil                     5.19
build                         0.8.0
CacheControl                  0.12.11
Cartopy                       0.21.0
certifi                       2022.6.15
cf-xarray                     0.7.4
cffi                          1.15.1
cftime                        1.6.1
chardet                       5.0.0
click                         8.1.3
click-plugins                 1.1.1
cligj                         0.7.2
cloudpickle                   2.1.0
colorama                      0.4.5
commonmark                    0.9.1
configobj                     5.1.0.dev0
coverage                      6.2
cryptography                  37.0.4
cycler                        0.11.0
Cython                        0.29.32
dask                          2022.7.1
decorator                     5.1.1
dill                          0.3.4
distlib                       0.3.6
distributed                   2022.7.1
distro                        1.7.0
docopt                        0.6.2
docutils                      0.17.1
entrypoints                   0.4
envisage                      6.0.1
executing                     1.0.0
Fiona                         1.8.21
flake8                        5.0.0
flufl.lock                    7.1.1
fonttools                     4.37.1
fsspec                        2022.5.0
future                        0.18.2
GDAL                          3.5.1
greenlet                      1.1.3
HeapDict                      1.0.1
idna                          3.3
imagesize                     1.4.1
importlib-resources           5.9.0
inflect                       6.0.0
iniconfig                     1.1.1
installer                     0.5.1
ipython                       8.4.0
isort                         5.10.1
jaraco.context                4.1.2
jaraco.functools              3.5.1
jaraco.text                   3.9.1
jedi                          0.18.1
Jinja2                        3.1.2
joblib                        1.1.0
kiwisolver                    1.4.4
lazy-object-proxy             1.7.1
locket                        1.0.0
MarkupSafe                    2.1.1
matplotlib                    3.5.2
matplotlib-inline             0.1.6
mayavi                        4.8.0
mccabe                        0.7.0
more-itertools                8.13.0
msgpack                       1.0.4
munch                         2.5.0
netCDF4                       1.6.0
npyscreen                     4.10.5
nspektr                       0.4.0
numpy                         1.23.2
ordered-set                   4.1.0
OWSLib                        0.26.0
packaging                     21.3
pacman-mirrors                4.23.2
pandas                        1.4.3
parso                         0.8.3
partd                         1.2.0
pep517                        0.13.0
pexpect                       4.8.0
pickleshare                   0.7.5
Pillow                        9.2.0
Pint                          0.19.2
pip                           22.2.2
platformdirs                  2.5.2
pluggy                        1.0.0
ply                           3.11
prompt-toolkit                3.0.30
psutil                        5.9.1
psycopg2                      2.9.3
ptyprocess                    0.7.0
pure-eval                     0.2.2
py                            1.11.0
pybind11                      2.10.0
pycairo                       1.21.0
pycodestyle                   2.9.1
pycparser                     2.21
pydantic                      1.10.2
pydata-sphinx-theme           0.8.1
pydocstyle                    6.1.1
pyface                        7.4.2
pyflakes                      2.5.0
Pygments                      2.13.0
PyGObject                     3.42.2
pylint                        2.14.5
pynvim                        0.4.3
pyOpenSSL                     22.0.0
pyparsing                     3.0.9
pyproj                        3.3.1
PyQt5                         5.15.7
PyQt5-sip                     12.11.0
pyshp                         2.3.0
pytest                        7.1.3
pytest-cov                    3.0.0
pytest-mpl                    0.16.1
python-dateutil               2.8.2
python-lsp-jsonrpc            1.0.0
python-lsp-server             1.5.0
python-xlib                   0.31
pytz                          2022.1
PyYAML                        6.0
QScintilla                    2.13.3
ranger-fm                     1.9.3
rasterio                      1.3.2
requests                      2.28.1
resolvelib                    0.8.1
rich                          12.5.0
rioxarray                     0.12.1
rope                          0.23.0
scipy                         1.9.1
seaborn                       0.11.2
setuptools                    62.3.4
setuptools-scm                7.0.5
Shapely                       1.8.2
six                           1.16.0
snowballstemmer               2.2.0
snuggs                        1.4.7
sortedcontainers              2.4.0
soupsieve                     2.3.2.post1
speedtest-cli                 2.1.3
Sphinx                        4.5.0
sphinx-autosummary-accessors  2022.4.0
sphinx-basic-ng               0.0.1a12
sphinx-book-theme             0.3.3
sphinx-gallery                0.11.1
sphinx-rtd-theme              1.0.0
sphinxcontrib-applehelp       1.0.2
sphinxcontrib-devhelp         1.0.2
sphinxcontrib-htmlhelp        2.0.0
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.3
sphinxcontrib-serializinghtml 1.1.5
stack-data                    0.5.0
TBB                           0.2
tblib                         1.7.0
team                          1.0
tenacity                      8.0.1
toml                          0.10.2
tomli                         2.0.1
tomlkit                       0.11.4
toolz                         0.12.0
tornado                       6.2
traitlets                     5.3.0
traits                        6.3.2
traitsui                      7.4.0
trove-classifiers             2022.8.31
typing_extensions             4.3.0
ueberzug                      18.1.9
ufw                           0.36.1
ujson                         5.4.0
urllib3                       1.26.12
validate                      5.1.0.dev0
validate-pyproject            0.10.1
wcwidth                       0.2.5
webencodings                  0.5.1
websockets                    10.3
whatthepatch                  1.0.2
wheel                         0.37.1
wrapt                         1.14.1
xarray                        2022.6.0
yapf                          0.32.0
zict                          2.2.0
zipp                          3.8.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions