From 5eccea40cbbae2d84640b7f3bbf33581709ab5db Mon Sep 17 00:00:00 2001 From: Pete Gadomski Date: Thu, 10 Oct 2024 16:25:48 -0400 Subject: [PATCH] feat: add joss paper --- .github/workflows/ci.yaml | 4 +- .github/workflows/joss.yaml | 26 ++++++++++++ .github/workflows/release.yaml | 2 +- .pre-commit-config.yaml | 6 +-- docs/conf.py | 2 +- docs/img/antimeridian.jpg | Bin 0 -> 104240 bytes docs/paper.bib | 41 ++++++++++++++++++ docs/paper.md | 63 ++++++++++++++++++++++++++++ pyproject.toml | 5 +-- src/antimeridian/_implementation.py | 3 +- tests/test_bbox.py | 3 +- tests/test_multi_polygon.py | 3 +- tests/test_polygon.py | 5 ++- 13 files changed, 148 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/joss.yaml create mode 100644 docs/img/antimeridian.jpg create mode 100644 docs/paper.bib create mode 100644 docs/paper.md diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 636a494..8f21a06 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -19,7 +19,7 @@ jobs: extras: - "dev" - "cli,dev" - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] steps: - name: Checkout uses: actions/checkout@v4 @@ -42,7 +42,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.9" + python-version: "3.10" - name: Insall uv run: curl -LsSf https://astral.sh/uv/install.sh | sh - name: Install with development dependencies diff --git a/.github/workflows/joss.yaml b/.github/workflows/joss.yaml new file mode 100644 index 0000000..cfa70a5 --- /dev/null +++ b/.github/workflows/joss.yaml @@ -0,0 +1,26 @@ +name: JOSS paper + +on: + pull_request: + paths: + - docs/paper.* + push: + branches: + - main + paths: + - docs/paper.* + +jobs: + paper: + runs-on: ubuntu-latest + name: JOSS paper + steps: + - uses: actions/checkout@v4 + - uses: openjournals/openjournals-draft-action@master + with: + journal: joss + paper-path: docs/paper.md + - uses: actions/upload-artifact@v4 + with: + name: paper + path: docs/paper.pdf diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0f21403..40aa10f 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -18,7 +18,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.11" + python-version: "3.12" - name: Install build run: pip install build - name: Build diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a21fd42..5bf8ba8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,20 +1,20 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: check-added-large-files - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.10.1 + rev: v1.11.2 hooks: - id: mypy additional_dependencies: - click~=8.1.6 - pytest~=8.0 - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.5.1 + rev: v0.6.9 hooks: - id: ruff types_or: [python, pyi, jupyter] diff --git a/docs/conf.py b/docs/conf.py index d1bc9ec..33294f8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -18,7 +18,7 @@ ] templates_path = ["_templates"] -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "paper.*"] html_theme = "pydata_sphinx_theme" html_static_path = ["_static"] diff --git a/docs/img/antimeridian.jpg b/docs/img/antimeridian.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33c8cccf3199b80fe688e387bf6b31b1a6491eac GIT binary patch literal 104240 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%0AZ#y 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

?J4>c0ai1^zh}h=lJMlsnejM9OuW& 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 c03B3<^3Q3*+L!&4FCWD literal 0 HcmV?d00001 diff --git a/docs/paper.bib b/docs/paper.bib new file mode 100644 index 0000000..e8a4759 --- /dev/null +++ b/docs/paper.bib @@ -0,0 +1,41 @@ +@rfc{10.17487/RFC7946, +author = {Butler, H. and Daly, M. and Doyle, A. and Gillies, S. and Hagen, S. and Schaub, T.}, +title = {RFC 7946: The GeoJSON Format}, +year = {2016}, +publisher = {RFC Editor}, +address = {USA}, +abstract = {GeoJSON is a geospatial data interchange format based on JavaScript Object Notation (JSON). It defines several types of JSON objects and the manner in which they are combined to represent data about geographic features, their properties, and their spatial extents. GeoJSON uses a geographic coordinate reference system, World Geodetic System 1984, and units of decimal degrees.} +} + +@proceedings{alma992356353405961, +author = {Various}, +title = {International Conference Held at Washington for the Purpose of Fixing a Prime Meridian and a Universal Day. October, 1884. Protocols of the Proceedings}, +year = {1884}, +url = {https://www.gutenberg.org/files/17759/17759-h/17759-h.htm} +} + +@misc{STAC_Contributors_SpatioTemporal_Asset_Catalog_2024, +author = {{STAC Contributors}}, +title = {{SpatioTemporal Asset Catalog (STAC) specification}}, +url = {https://stacspec.org}, +year = {2024} +} + +@software{Gillies_Shapely_2024, +author = {Gillies, Sean and van der Wel, Casper and Van den Bossche, Joris and Taves, Mike W. and Arnott, Joshua and Ward, Brendan C. and {others}}, +doi = {10.5281/zenodo.5597138}, +license = {BSD-3-Clause}, +month = aug, +title = {{Shapely}}, +url = {https://github.com/shapely/shapely}, +version = {2.0.6}, +year = {2024} +} + +@manual{Cartopy, +author = {{Met Office}}, +title = {Cartopy: a cartographic python library with a Matplotlib interface}, +year = {2010 - 2015}, +address = {Exeter, Devon }, +url = {https://scitools.org.uk/cartopy} +} diff --git a/docs/paper.md b/docs/paper.md new file mode 100644 index 0000000..49266ed --- /dev/null +++ b/docs/paper.md @@ -0,0 +1,63 @@ +--- +title: "antimeridian: A Python package for fixing geometries that cross the 180th meridian" +tags: + - Python + - geospatial + - antimeridian +authors: + - name: Peter Gadomski + orcid: 0000-0003-4877-7217 + corresponding: true + affiliation: 1 + - name: Preston Hartzell + orcid: 0000-0002-8293-3706 + affiliation: 2 +affiliations: + - name: Development Seed, USA + index: 1 + - name: Element 84, Inc., USA + index: 2 +date: 10 October 2024 +bibliography: paper.bib +--- + +## Summary + +Locations on and around planet Earth can be represented in a geodetic coordinate system by a latitude, a longitude, and a height. +Longitude, the "horizontal" dimension, covers the domain from -180° to 180° or 0° and 360°. +Where the two domain bounds meet is known as the _180th meridian_ or the _antimeridian_. + +![Earth map centered on the Pacific ocean, with the 180th meridian highlighted.](./img/antimeridian.jpg) + +The GeoJSON specification [@10.17487/RFC7946] describes how antimeridian-crossing shapes should be represented. +For a variety of reasons, real-world geometries often do not comply with the specification, leading to confusing and unrepresentable geometries. +Our **antimeridan** package provides Python functions for correcting improper geometries, as well as other related utilities. + +## Statement of need + +Due to a variety of factors, including the relative lack of populated settlements on the other side of the world, the Prime Meridian (0°) runs through Greenwich, England [@alma992356353405961]. +Before the advent of satellite imagery, relatively few geospatial products crossed the 180th meridian, and so the problem of antimeridian-crossing geometries was usually avoidable. +The proliferation of satellite remote sensing products, including Earth Observation (EO) imagery, coupled with the ubiquity of interactive online maps, the antimeridian has become a feature that can appear on almost anyone's tablet, web portal, or desktop Geographic Information System (GIS) software. +There is a a need to create and fix antimeridian-crossing geometries at scale, e.g. for large SpatioTemporal Asset Catalog (STAC) [@STAC_Contributors_SpatioTemporal_Asset_Catalog_2024] catalogs that are used to search and discover petabytes of geospatial data. +When creating these catalogs, improper antimeridian-crossing geometries need to be corrected before ingesting to a data store to ensure that queries do not break and visualizations do not go haywire. +This is the problem for which **antimeridian** was designed. + +To the best of our knowledge, the [algorithm](https://antimeridian.readthedocs.io/en/stable/the-algorithm.html) underlying **antimeridian** is a novel one. +Briefly, it breaks each polygon into segments and finds where a segments might cross the antimeridian. +It then breaks that segment at that crossing point and closes that segment along the antimeridian to create a new polygon. +This results in a multi polygon split on the antimeridian, as the GeoJSON specification requires. + +![A complex shape split at the antimeridian](./img/complex-split.png) + +The library also includes utilities for calculating centriods from antimeridian-crossing geometries and generating valid GeoJSON antimeridian-crossing bounding boxes. +It has been ported to Go by another developer at [go-geospatial/antimeridian](https://pkg.go.dev/github.com/go-geospatial/antimeridian). + +## Key references + +- The **antimeridian** package relies on Shapely [@Gillies_Shapely_2024] for geometry validation, conversions, and other operations. +- We use Cartopy [@Cartopy] to generate visualizations for our documentation. + +# Acknowledgements + +We acknowledge the financial and program support of the Planetary Computer team at Microsoft, particularly Rob Emanuele, Tom Augspurger, and Matt McFarland. +We would also like to acknowledge our employers, Development Seed and Element 84, who support open source software through direct funding and developer contribution time. diff --git a/pyproject.toml b/pyproject.toml index c7147e8..5b9ae11 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,18 +4,17 @@ version = "0.3.8" authors = [{ name = "Pete Gadomski", email = "pete.gadomski@gmail.com" }] description = "Fix GeoJSON geometries that cross the antimeridian" readme = "README.md" -requires-python = ">=3.9" +requires-python = ">=3.10" keywords = ["geojson", "antimeridian", "shapely"] license = { text = "Apache-2.0" } classifiers = [ "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Development Status :: 4 - Beta", ] -dependencies = ["numpy>=1.20.3", "shapely>=2.0"] +dependencies = ["numpy>=1.22.4", "shapely>=2.0"] [project.urls] Documentation = "https://antimeridian.readthedocs.io" diff --git a/src/antimeridian/_implementation.py b/src/antimeridian/_implementation.py index 7c4de2a..9ce7eca 100644 --- a/src/antimeridian/_implementation.py +++ b/src/antimeridian/_implementation.py @@ -9,6 +9,7 @@ from __future__ import annotations import copy +import itertools import warnings from collections import namedtuple from typing import Any, Dict, List, Optional, Protocol, Tuple, Union, cast @@ -467,7 +468,7 @@ def normalize(coords: List[XY]) -> List[XY]: def segment(coords: List[XY]) -> List[List[XY]]: segment = [] segments = [] - for start, end in zip(coords, coords[1:]): + for start, end in itertools.pairwise(coords): segment.append(start) if (end[0] - start[0] > 180) and (end[0] - start[0] != 360): # left latitude = crossing_latitude(start, end) diff --git a/tests/test_bbox.py b/tests/test_bbox.py index 03ef8c4..7fecea7 100644 --- a/tests/test_bbox.py +++ b/tests/test_bbox.py @@ -1,8 +1,9 @@ from typing import List -import antimeridian import pytest +import antimeridian + from .conftest import Reader diff --git a/tests/test_multi_polygon.py b/tests/test_multi_polygon.py index b7bde69..4a435fc 100644 --- a/tests/test_multi_polygon.py +++ b/tests/test_multi_polygon.py @@ -1,8 +1,9 @@ -import antimeridian import pytest import shapely.geometry from shapely.geometry import MultiPolygon +import antimeridian + from .conftest import Reader diff --git a/tests/test_polygon.py b/tests/test_polygon.py index 1698db3..908f2c3 100644 --- a/tests/test_polygon.py +++ b/tests/test_polygon.py @@ -1,12 +1,13 @@ from typing import cast -import antimeridian import pytest import shapely.affinity import shapely.geometry -from antimeridian import FixWindingWarning from shapely.geometry import MultiPolygon, Point, Polygon +import antimeridian +from antimeridian import FixWindingWarning + from .conftest import Reader