duckdb / duckdb_spatial

MIT License
489 stars 40 forks source link

Get geometry from ST_READOSM #347

Open marklit opened 5 months ago

marklit commented 5 months ago

Are there any plans to support collecting geometry from ST_READOSM? I can't seen any fields that would indicate geometry is accessible.

SELECT * FROM ST_READOSM('estonia-latest.osm.pbf') LIMIT 10;
┌──────────────────────────────────────────────┬─────────┬───────────────────────┬─────────┬────────────────────┬────────────────────┬───────────┬───────────────────────────────────┐
│                     kind                     │   id    │         tags          │  refs   │        lat         │        lon         │ ref_roles │             ref_types             │
│ enum('node', 'way', 'relation', 'changeset') │  int64  │ map(varchar, varchar) │ int64[] │       double       │       double       │ varchar[] │ enum('node', 'way', 'relation')[] │
├──────────────────────────────────────────────┼─────────┼───────────────────────┼─────────┼────────────────────┼────────────────────┼───────────┼───────────────────────────────────┤
│ node                                         │ 6920810 │                       │         │ 59.446127600000004 │         24.9234055 │           │                                   │
│ node                                         │ 6920814 │                       │         │  59.44667990000001 │ 24.926537300000003 │           │                                   │
│ node                                         │ 6920920 │                       │         │ 59.449699800000005 │         25.0745803 │           │                                   │
│ node                                         │ 6920966 │                       │         │ 59.435473900000005 │ 25.166255000000003 │           │                                   │
│ node                                         │ 8129962 │                       │         │         58.8474239 │         26.9114296 │           │                                   │
│ node                                         │ 8129963 │                       │         │         58.8491994 │ 26.913662000000002 │           │                                   │
│ node                                         │ 8129973 │                       │         │  58.84597170000001 │         26.9143119 │           │                                   │
│ node                                         │ 8129977 │                       │         │  58.84405280000001 │ 26.914970500000003 │           │                                   │
│ node                                         │ 8135818 │                       │         │         59.3893167 │          28.134416 │           │                                   │
│ node                                         │ 8135893 │                       │         │ 59.380991800000004 │         28.1793739 │           │                                   │
├──────────────────────────────────────────────┴─────────┴───────────────────────┴─────────┴────────────────────┴────────────────────┴───────────┴───────────────────────────────────┤
│ 10 rows                                                                                                                                                                  8 columns │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
RaczeQ commented 5 months ago

From what I understand, the ST_ReadOSM function was added with protobuf dependency just to display raw OSM data. You have to manually reconstruct whole geometry (just like I'm doing it in QuackOSM) from nodes through ways to relations, or just use the GDAL-based ST_Read function.