GeoNames ist die wichtigste freie Authority-Datenbank für Geografika — über 12 Millionen Ortsnamen weltweit, mit eindeutigen IDs, Koordinaten, Verwaltungshierarchien 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:
| Feld | Bedeutung |
|---|---|
| geonameId | numerische ID, z. B. 2657896 (Zürich) |
| name | kanonische Bezeichnung |
| asciiname | ASCII-Variante (für Textsuche) |
| alternatenames | Liste mehrsprachiger Bezeichnungen mit Sprach-Code |
| latitude / longitude | WGS84-Koordinaten |
| featureClass | grobe Kategorie (A, P, H, T, V, L, S, U, R) |
| featureCode | feinere Klassifikation (z. B. PPLC, PPL, ADM1, LK, AIRP) |
| countryCode | ISO 3166-1 Alpha-2 |
| admin1…4Code | Verwaltungs-Hierarchie (Kanton, Bezirk, Gemeinde) |
| population | Einwohnerzahl |
| elevation / dem | Höhe (gemessen / aus DEM) |
| timezone | IANA-Timezone |
Feature Classes
Die obersten neun Kategorien strukturieren die Datenbank:
| Class | Bedeutung |
|---|---|
| A | Country, State, Region — Verwaltungseinheiten |
| P | Populated Place — Stadt, Dorf |
| H | Hydrography — Gewässer |
| T | Terrain — Berge, Täler |
| V | Vegetation |
| L | Locality, Park, Area |
| S | Spot — Gebäude, Bahnhof, Kirche |
| U | Undersea |
| R | Road, 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 weltweitCH.zip,DE.zip,AT.zipetc. — pro LandalternateNamesV2.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:
- Ortsname extrahieren
- GeoNames-Suche mit
country=CH-Filter - Treffer filtern auf passenden
featureCode(PPL für Dörfer) - Beste Übereinstimmung pinnen + GeoNames-ID speichern
- 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
geonameIdund 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
- Wikidata —
wdt:P1566(GeoNames-ID); Wikidata bündelt alle Authority-IDs zu einem Ort. - GND — Tg-Records (Geografika); via
owl:sameAsmit 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 (
PPLAvs.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 Verwaltungseinheiten (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 diealternateName-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 (
ZurichstattZürich) gegen denasciiname-Index funktionieren; mit Diakritika gegen den vollen Index. UI-Lookup robust gegen beides bauen.