Tables and GeoParquet
egms_client.tables ¶
The CSVs of the archive as tables. Needs the tables extra.
Every ZIP holds a CSV with one row per measurement point (L2A, L2B) or per
100 m cell (L3): its attributes, then one column per acquisition date
(20251119) with the displacement in millimetres since the first date.
- L2 columns start
pid, mp_type, latitude, longitude, easting, northing, height_ortho, ...;mean_velocityis along the satellite's line of sight (los_east,los_north,los_upgive its direction); - L3 columns start
pid, easting, northing, height_ortho, ...;mean_velocityis vertical (U) or east-west (E).
easting / northing are EPSG:3035 metres in both, so
:func:to_geoparquet writes one geometry for every level. Values are mm and
mm/year. An L3 CSV is ~250 MB for ~170,000 cells and ~300 dates.
read_csv ¶
read_csv(path: Path, *, series: bool = True, columns: Sequence[str] | None = None) -> Any
A CSV of the archive as a pandas.DataFrame.
series=False skips the date columns (much less memory); columns
keeps only those attributes (pid is always kept). Dates are float32.
series_long ¶
series_long(frame: Any) -> Any
One row per point and date: pid, date, displacement_mm.
to_xarray ¶
to_xarray(frame: Any) -> Any
The series of a table as an xarray.DataArray over (pid, time).
Values are the displacement in mm (float32). Every attribute column
(easting, mean_velocity, ...) becomes a coordinate along pid,
so points can be selected by them. Needs xarray.
to_geoparquet ¶
to_geoparquet(frame: Any, path: Path) -> Path
Write a table as GeoParquet: points in EPSG:3035 from easting / northing.
Plain Parquet readers see the columns; GIS tools (GeoPandas, QGIS,
DuckDB spatial) also see the geometry. Written to .part first.
csv_to_geoparquet ¶
csv_to_geoparquet(csv: Path, parquet: Path | None = None, *, series: bool = True) -> Path
A CSV of the archive straight to GeoParquet, next to it by default.
Streamed in blocks with pyarrow alone, so memory stays flat however large the CSV: an L3 CSV of 250 MB becomes ~60 MB of Parquet. The file carries no bbox (optional in GeoParquet), as it is not known before the end.