GeoNames ist die wichtigste freie Authority-Datenbank für Geografika — über 12 Millionen Ortsnamen weltweit, mit eindeutigen IDs, Koordinaten, Verwaltungs­hierarchien und Cross-Links zu Wikidata, GND, DBpedia und Wikipedia. Gegründet 2005 vom Schweizer Marc Wick und seither kontinuierlich gewachsen.

Für GLAM-Institutionen ist GeoNames die naheliegende Ergänzung zur GND und zu Wikidata: Während diese beiden Personen, Werke und Sachbegriffe gut abdecken, ist GeoNames für Orte das natürliche Zuhause — gerade auch für kleine Lokalitäten, die in der GND nicht oder nur grob vertreten sind.

Datenmodell

Pro Ort:

FeldBedeutung
geonameIdnumerische ID, z. B. 2657896 (Zürich)
namekanonische Bezeichnung
asciinameASCII-Variante (für Textsuche)
alternatenamesListe mehrsprachiger Bezeichnungen mit Sprach-Code
latitude / longitudeWGS84-Koordinaten
featureClassgrobe Kategorie (A, P, H, T, V, L, S, U, R)
featureCodefeinere Klassifikation (z. B. PPLC, PPL, ADM1, LK, AIRP)
countryCodeISO 3166-1 Alpha-2
admin1…4CodeVerwaltungs-Hierarchie (Kanton, Bezirk, Gemeinde)
populationEinwohnerzahl
elevation / demHöhe (gemessen / aus DEM)
timezoneIANA-Timezone

Feature Classes

Die obersten neun Kategorien strukturieren die Datenbank:

ClassBedeutung
ACountry, State, Region — Verwaltungseinheiten
PPopulated Place — Stadt, Dorf
HHydrography — Gewässer
TTerrain — Berge, Täler
VVegetation
LLocality, Park, Area
SSpot — Gebäude, Bahnhof, Kirche
UUndersea
RRoad, Railroad

featureCode verfeinert: Zürich ist featureClass: P, featureCode: PPLA (Seat of a first-order administrative division).

URIs

GeoNames-IDs werden via zwei stabile URI-Formen aufgelöst:

https://www.geonames.org/2657896/zurich.html         → Webseite (HTML)
https://sws.geonames.org/2657896/                    → Semantic Web Service (303-Redirect)
https://sws.geonames.org/2657896/about.rdf           → RDF/XML

Die sws.geonames.org-Form ist die kanonische Linked-Data-URI und sollte in TEI-/EAD-/RDF-Kontexten bevorzugt werden.

Linked-Data-Beispiel

@prefix gn:   <http://www.geonames.org/ontology#> .
@prefix wgs:  <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .

<https://sws.geonames.org/2657896/>
  a gn:Feature ;
  gn:name "Zürich" ;
  gn:officialName "Zürich"@de , "Zurich"@en , "Zurigo"@it ;
  gn:countryCode "CH" ;
  gn:featureClass gn:P ;
  gn:featureCode gn:P.PPLA ;
  gn:population "402275" ;
  wgs:lat "47.36667" ;
  wgs:long "8.55" ;
  gn:parentFeature <https://sws.geonames.org/6458798/> ;     # Bezirk Zürich
  owl:sameAs <http://www.wikidata.org/entity/Q72> ,
             <https://d-nb.info/gnd/4068038-2> ,
             <http://dbpedia.org/resource/Z%C3%BCrich> .

Die owl:sameAs-Verknüpfungen zu Wikidata, GND und DBpedia sind das, was GeoNames für Linked-Data-Pipelines so brauchbar macht.

Zugriff — drei Wege

1. Web-API (mit kostenlosem Username)

Die JSON-API ist der bequemste Zugriff. Voraussetzung: kostenloses Konto auf geonames.org und der Username als URL-Parameter.

# Suche
curl 'https://api.geonames.org/searchJSON?q=Z%C3%BCrich&maxRows=3&username=demo' | jq '.geonames[] | {geonameId, name, countryCode, fcl, fcode}'

# Detail per ID
curl 'https://api.geonames.org/getJSON?geonameId=2657896&username=demo' | jq

# Hierarchie (Welt → Schweiz → Kanton → Bezirk → Stadt)
curl 'https://api.geonames.org/hierarchyJSON?geonameId=2657896&username=demo' | jq '.geonames[] | .name'

# Nächstgelegene Orte zu Koordinaten
curl 'https://api.geonames.org/findNearbyJSON?lat=47.37&lng=8.55&username=demo' | jq

# Postleitzahl-Suche
curl 'https://api.geonames.org/postalCodeSearchJSON?postalcode=8004&country=CH&username=demo' | jq

Limits: kostenloses Konto erhält 10’000 Credits/Tag, Suchen kosten typisch 1–4 Credits. Für höheren Durchsatz Premium-Konto oder Bulk-Download nutzen.

2. RDF-Direktzugriff

curl https://sws.geonames.org/2657896/about.rdf

Kein Username erforderlich; rate-limitiert per IP.

3. Bulk-Download

Für lokale Indexe und volle Mapping-Pipelines bietet GeoNames TSV-Dumps unter download.geonames.org/export/dump/:

  • allCountries.zip (~1.5 GB komprimiert) — alle Features weltweit
  • CH.zip, DE.zip, AT.zip etc. — pro Land
  • alternateNamesV2.zip — mehrsprachige Alternativnamen (~500 MB)
  • Postleitzahlen-Dumps separat

Updates erfolgen wöchentlich; das gesamte Dataset steht unter CC BY 4.0 (Attribution: https://www.geonames.org/).

Verwendung in TEI, EAD, MARC

TEI (im <placeName> mit ref):

<placeName ref="https://sws.geonames.org/2657896/">Zürich</placeName>

EAD (im <geogname> mit authfilenumber):

<geogname source="GeoNames" authfilenumber="2657896">Zürich</geogname>

MARC21 (Subfield $0):

651 #7 $aZürich$0(geonames)2657896$2geonames

LIDO (im <lido:placeID>):

<lido:place>
  <lido:placeID lido:type="local" lido:source="GeoNames">2657896</lido:placeID>
  <lido:namePlaceSet>
    <lido:appellationValue xml:lang="de">Zürich</lido:appellationValue>
  </lido:namePlaceSet>
</lido:place>

Praktische Patterns

Reconciliation

Es existiert ein GeoNames-Reconciliation-Endpoint für OpenRefine:

https://geonames.reconci.link/

Damit lässt sich eine Tabelle mit Ortsnamen halbautomatisch gegen GeoNames-IDs mappen — analog zur Wikidata- und GND-Reconciliation.

Geokodierung von historischen Adressen

Für Digitalisierungs-Projekte mit historischen Provenienz-Angaben („gesammelt in Maur, Kt. Zürich, 1893”) bietet sich folgender Pipeline-Pattern:

  1. Ortsname extrahieren
  2. GeoNames-Suche mit country=CH-Filter
  3. Treffer filtern auf passenden featureCode (PPL für Dörfer)
  4. Beste Übereinstimmung pinnen + GeoNames-ID speichern
  5. Koordinaten + Hierarchie auf Detail-Page anzeigen, Karten-Link zu OpenStreetMap

Cross-Linking zu Wikidata

Wenn ein Datensatz eine GeoNames-ID hat, ist der Anschluss an Wikidata einen SPARQL-Sprung entfernt:

SELECT ?place ?placeLabel ?wikipedia WHERE {
  ?place wdt:P1566 "2657896" .                    # P1566 = GeoNames-ID
  OPTIONAL {
    ?wikipedia schema:about ?place ;
               schema:isPartOf <https://de.wikipedia.org/> .
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "de" }
}

Eigene Einträge anlegen

Eine Eigenschaft, die GeoNames von vielen anderen Authority-Systemen abhebt: angemeldete Nutzer:innen können selbst neue Orte anlegen oder bestehende ergänzen. Im Webportal hinter dem Login gibt es Funktionen für:

  • Neuen Ort erstellen mit Namen, Koordinaten, Feature-Class/-Code, Land und Verwaltungs-Hierarchie
  • Alternative Namen ergänzen — historische Bezeichnungen, Dialektvarianten, fremdsprachige Formen mit Sprach-Code
  • Korrekturen vorschlagen an bestehenden Einträgen (Koordinaten, Hierarchie, Population)

Das ist gerade für Editions- und Forschungsprojekte mit historischen oder lokalen Toponymen wertvoll: Wenn ein Weiler, ein abgegangener Hof oder ein historischer Flurname noch nicht in GeoNames steht, kann das Projekt selbst den Eintrag erstellen — und damit eine persistente, weltweit referenzierbare ID für diesen Ort schaffen, die in TEI-, EAD- oder LIDO-Datensätzen verwendet werden kann.

Praxis-Hinweise:

  • Neue Einträge erscheinen sofort mit eigener geonameId und sind via API/RDF verfügbar.
  • GeoNames-Moderator:innen können Einträge nachbearbeiten, ergänzen oder bei Duplikaten zusammenführen — die ID bleibt durch Redirect erhalten.
  • Vor dem Anlegen prüfen, ob der Ort wirklich neu ist (häufig findet sich ein bestehender Eintrag unter abweichendem Namen oder leicht anderer Koordinate).
  • Für abgegangene Orte (heute nicht mehr existent) ist GeoNames nur bedingt geeignet — die Datenbank zielt auf die heutige Geografie. Hier ergänzend Wikidata (mit wdt:P576 „Auflösungsdatum”) oder TGN heranziehen.

Verhältnis zu anderen Authority-Systemen

  • Wikidatawdt:P1566 (GeoNames-ID); Wikidata bündelt alle Authority-IDs zu einem Ort.
  • GND — Tg-Records (Geografika); via owl:sameAs mit GeoNames verknüpft. GND ist autoritativer für deutschsprachige Orte mit historischer Bedeutung; GeoNames für aktuelle Geokoordinaten und globale Abdeckung besser.
  • TGN (Getty Thesaurus of Geographic Names) — kunsthistorisch fokussiert, besser für historische Orte und Toponyme; ergänzt GeoNames.
  • Where on Earth ID (WOEID) — Yahoo-Erbe, weiter genutzt von Twitter-Daten.
  • OpenStreetMap — komplementär: GeoNames hat Authority-IDs und Hierarchie, OSM hat detaillierte Geometrien (Strassen, Gebäude). Häufig parallel verwendet.
  • swisstopo / swissNAMES3D — autoritative Schweizer Geo-Datenbank des Bundesamtes für Landestopografie. Komplementär zu GeoNames; bessere Auflösung für CH-Lokalnamen, aber ohne globale Cross-Links.
  • ISO 3166 — Länder-Codes, in GeoNames als countryCode-Feld.

Werkzeuge

  • GeoNames-Webportal (geonames.org) — manuelle Recherche und Account-Erstellung
  • OpenRefine mit GeoNames-Reconciliation für Tabellen-Mapping
  • kraenzle-ritter/resources — Laravel-Trait, der u. a. GeoNames, GND, Wikidata und Metagrid an Eloquent-Modelle anflanscht; in der Sammlungs-Software Anton als Authority-Layer eingesetzt
  • geonames Python-Bibliotheken (z. B. pygeoname, geonameslookup) — für Skripte
  • PostgreSQL-Import — TSV-Dumps lassen sich direkt in Postgres laden; mit PostGIS dann räumliche Queries möglich

Häufige Fallen

  • Username-Pflicht: API-Anfragen ohne username-Parameter werden abgelehnt. Auch wenn der Code „demo” akzeptiert, ist das nicht für Produktiv-Einsatz gedacht — eigenes Konto registrieren.
  • Rate-Limits: 10’000 Credits/Tag erschöpfen schneller als gedacht. Bei Massen-Reconciliation lieber den Bulk-Download nutzen oder Premium-Konto.
  • Mehrdeutigkeit: „Zürich” findet die Stadt und den Kanton (PPLA vs. ADM1). Bei der ID-Vergabe disambiguieren — sonst verfehlen Karten den richtigen Punkt.
  • Quality variiert regional: Westeuropa und Nordamerika sind hervorragend abgedeckt; Globaler Süden teilweise lückenhaft. Vor systematischer Verlinkung pro Region prüfen.
  • Historische Orte: GeoNames bildet die heutige Welt ab. Untergegangene Orte oder historische Verwaltungs­einheiten (z. B. „Heiliges Römisches Reich”) sind nicht oder nur unzuverlässig erfasst — hier ergänzend GND, Wikidata oder TGN heranziehen.
  • alternatenames-Performance: Im RDF/Turtle-Output ist die alternateName-Liste oft riesig (mehrsprachig). Bei Bulk-Verarbeitung filtern auf benötigte Sprachen.
  • Lizenz-Pflicht: CC BY 4.0 verlangt Attribution. „Powered by GeoNames” oder ähnlich im Footer/Impressum reicht in der Praxis.
  • Akzentuierung: Anfragen ohne Diakritika (Zurich statt Zürich) gegen den asciiname-Index funktionieren; mit Diakritika gegen den vollen Index. UI-Lookup robust gegen beides bauen.