From a3e125f821e1be453c2063fe0355f37ceaf4fe13 Mon Sep 17 00:00:00 2001 From: Kyle Barron Date: Fri, 22 Mar 2024 23:07:55 -0400 Subject: [PATCH] Fix CLI with geopackage files (#434) Apparently the returned column name is not _always_ `"wkb_geometry"`. Closes https://github.com/developmentseed/lonboard/issues/433 --- lonboard/_cli.py | 6 ++++-- tests/fixtures/West_Devon_rail.gpkg | Bin 0 -> 139264 bytes tests/test_cli.py | 12 ++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 tests/fixtures/West_Devon_rail.gpkg create mode 100644 tests/test_cli.py diff --git a/lonboard/_cli.py b/lonboard/_cli.py index bc072368..674e7f0f 100644 --- a/lonboard/_cli.py +++ b/lonboard/_cli.py @@ -27,11 +27,13 @@ def read_pyogrio(path: Path) -> pa.Table: ) from e meta, table = read_arrow(path) - # TODO: assert there are not two column names of wkb_geometry + geometry_column_name = meta.get("geometry_name", "wkb_geometry") + # TODO: assert there are not two column names of wkb_geometry, nor an existing + # column named "geometry" # Rename wkb_geometry to geometry geometry_column_index = [ - i for (i, name) in enumerate(table.column_names) if name == "wkb_geometry" + i for (i, name) in enumerate(table.column_names) if name == geometry_column_name ][0] schema = table.schema diff --git a/tests/fixtures/West_Devon_rail.gpkg b/tests/fixtures/West_Devon_rail.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..e7230e2ad406ce9932c403fc9ea7765f973ae4e8 GIT binary patch literal 139264 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 literal 0 HcmV?d00001 diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 00000000..8daa4abf --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,12 @@ +from pathlib import Path + +from lonboard import PathLayer, viz +from lonboard._cli import read_pyogrio + +fixtures_dir = Path(__file__).parent / "fixtures" + + +def test_viz_gpkg(): + table = read_pyogrio(fixtures_dir / "West_Devon_rail.gpkg") + map_ = viz(table) + assert isinstance(map_.layers[0], PathLayer)