Skip to content

aegean.geo

geo

Geographic analysis of a corpus's find-sites — the [geo] extra (geopandas + shapely).

Maps each inscription's find-site to coordinates from a bundled Aegean gazetteer and exposes the corpus as a GeoDataFrame for spatial analysis and plotting. The coordinates are approximate (site-level, ~1 km), drawn from standard archaeological references — fine for mapping, not survey work. Where a site aligns to a Pleiades place, its stable id travels with it (SiteCoord.pleiades / pleiades_uri) for linked-open-data work — the major sites are aligned, minor findspots/peak sanctuaries mostly are not. Sites not in the gazetteer are dropped; see site_coordinates for coverage.

geopandas/shapely are imported lazily, so import aegean stays instant and dependency-free; the geo functions raise a clear error if the extra isn't installed.

SiteCoord dataclass

SiteCoord(name: str, lat: float, lon: float, region: str, pleiades: int | None = None)

Approximate site-level coordinates for a find-site (WGS84 / EPSG:4326).

pleiades_uri property

pleiades_uri: str | None

The site's stable Pleiades URI, or None if it isn't aligned to a place.

site_coordinates

site_coordinates() -> dict[str, SiteCoord]

The bundled site→coordinate gazetteer, keyed by the corpus's meta.site label.

to_geodataframe

to_geodataframe(corpus: Corpus, *, level: str = 'inscription')

A geopandas GeoDataFrame of the corpus's find-sites (EPSG:4326 point geometry).

level="inscription" gives one row per inscription whose site is in the gazetteer (id, site, label, region, period, geometry); level="site" gives one row per site with its inscription count. Inscriptions whose site isn't mapped are dropped. Needs the [geo] extra.

word_distribution

word_distribution(corpus: Corpus, word: str)

A GeoDataFrame of the find-sites where word is attested, with per-site counts — i.e. where a given word shows up across the corpus, ready to map. Needs the [geo] extra.