manaakiwhenua / vector2dggs

DGGS indexer for vector data
https://pypi.org/project/vector2dggs/
GNU Lesser General Public License v3.0
6 stars 0 forks source link

Errors when some rows have null geometry #13

Closed alpha-beta-soup closed 1 year ago

alpha-beta-soup commented 1 year ago

When a table has some null geometries, the following error occurs:

Cutting with CRS: epsg:3851
Watch out for ninjas! (Cutting polygons)
  0%|                                                                                                                                                                                     | 0/6371 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/bin/vector2dggs", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/vector2dggs/cli.py", line 25, in main
    cli()
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/vector2dggs/h3.py", line 304, in h3
    _index(
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/vector2dggs/h3.py", line 119, in _index
    katana.katana(row.geometry, cut_threshold)
  File "/home/users/lawr/projects/luis-dggs/.snakemake/conda/6bab4843b7dd668271f1ecf1b9ccdc77/lib/python3.11/site-packages/vector2dggs/katana.py", line 23, in katana
    if not geometry.is_valid:
           ^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'is_valid'

It seems to be missing a check for null geometries, which should perhaps to resolve to an empty GeometryCollection when running through the "katana cut".