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

Inconsistent behavior of ST_READ in importing EMPTY geometry #273

Open
cuteDen-ECNU opened this issue Mar 4, 2024 · 1 comment
Open
Labels

Comments

@cuteDen-ECNU
Copy link

Considering the following geojson file:

{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Polygon",
                "coordinates": []
            },
            "properties": {
                "id": 0
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "LineString",
                "coordinates": []
            },
            "properties": {
                "id": 1
            }
        }
    ]
}

and SQL statement:

CREATE TABLE t0 AS SELECT * FROM ST_READ('/log/t0.geojson');
SELECT id, ST_AsText(geom) FROM t0;
-- ┌───────┬──────────────────┐
-- │  id   │ st_astext(geom)  │
-- │ int32 │     varchar      │
-- ├───────┼──────────────────┤
-- │     0 │                  │
-- │     1 │ LINESTRING EMPTY │
-- └───────┴──────────────────┘

The EMPTY POLYGON should be imported into t0 to avoid losing information during the importing process.

Besides, the EMPTY LINESTRING is imported successfully. The importing behaviors of POLYGON and LINESTRING should be consistent.

Version:
Spatial version:
FORCE INSTALL spatial FROM 'http://nightly-extensions.duckdb.org'; and LOAD spatial;

DuckDB version:

┌─────────────────┬────────────┐
│ library_version │ source_id  │
│     varchar     │  varchar   │
├─────────────────┼────────────┤
│ v0.10.0         │ 20b1486d11 │
└─────────────────┴────────────┘
rouault added a commit to rouault/gdal that referenced this issue Mar 9, 2024
…epresentation of POLYGON EMPTY (fixes duckdb/duckdb-spatial#273)

This was what we exported already, which also happens to validate
against http://geojson.org/schema/Polygon.json but on import,
we insisted on havin a [[]] coordinates array (which does not validate
the schema)
@rouault
Copy link

rouault commented Mar 9, 2024

Considering the following geojson file:

assuming DukDB Spatial uses GDAL for GeoJSON parsing, this will be fixed per OSGeo/gdal#9437
Note however that {"type": "LineString", "coordinates": []] is invalid against https://geojson.org/schema/LineString.json which requires an array of 2 points minimum. The concept of empty geometries in GeoJSON isn't super well defined

rouault added a commit to rouault/gdal that referenced this issue Mar 9, 2024
…epresentation of POLYGON EMPTY (fixes duckdb/duckdb-spatial#273)

This was what we exported already, which also happens to validate
against http://geojson.org/schema/Polygon.json but on import,
we insisted on havin a [[]] coordinates array (which does not validate
the schema)
rouault added a commit to OSGeo/gdal that referenced this issue Mar 15, 2024
GeoJSON reader: accept a {"type": "Polygon","coordinates": []} as a representation of POLYGON EMPTY (fixes duckdb/duckdb-spatial#273)
@Maxxen Maxxen added the GDAL label Apr 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants