Gazetteer WFS-G

Hallo,

ich möchte gerne einen Gazetteer-Service entwickeln.

Kann mir jemand sagen wie ein zum WFS 2.0 Standard komformer GetFeature-Service (und DescribeFeatureType) aussieht und eine Beschreibung der Attribute geben.

Die Beschreibung unter http://www.opengeospatial.org/standards/wfs ist leider nicht sehr aussagekräftig.

Mir steht übrigens eine PostgreSQL-Datenbank zur Verfügung. Dort sind auch schon die OSM-Daten drin (planet_osm).

Ich weis aber nicht wo ich dort bestimmte Aussagen finde (z.B. Straßen, Polygone).

hallo und willkommen bei OSM :slight_smile:

Was ist denn der Hintergrund für dein Projekt? Wir haben doch z.B. Nominatim und OpenRouteService schon?
(Letzterer ist glaube ich sehr modular und OSI komform, schau mal da nach)

Nominatim kenne ich auch schon.

Mein Gazetteer-Service soll aber eine Neuentwicklung sein.

Der Service der diesen später mal verwenden soll versteht leider nur OGC:WFS-G (2.0.0).

Dieser Standard unterscheidet sich aber einwenig von Nominatim!

Deshalb wäre ich gerade über eine Übersicht der Datenbankdaten dankbar! Also welche Daten werden verwendet bzw. abgefragt, wenn ich nach einer Adresse suche.

Außerdem wollte ich noch wissen ob http://wiki.openstreetmap.org/wiki/DE:Map_Features die FeatureTypes sind?

Ja, allerdings sind die Features nie abgeschlossen, jeder kann sich eigene ausdenken oder gleiche Features werden unterschiedlich interpretiert.

Nun gut wenn du dich dran machen willst, schauste am besten mal hier:
http://wiki.openstreetmap.org/wiki/Develop

Du solltest dir als erstes überlegen, was dein Server alles unterstützen können sollte (Suche nach Ländern, Städten, Straßen, POIs,…Reverse Geocoding?) weil sich ja daran dein Datenmodell fest macht.
Dann baust du ein Importscript, dass pro Eintrag einen Geoppunkt speichert und legst es in eine optimierte Struktur ab. Fertig :wink:

Es gibt soviele verschiedene Datenbanken. Letztendlich entscheidest DU was in deiner Datenbank wie zu finden ist.
Alle Daten die OSM dir zur Verfügung stellen kann sind im Planet file drin. Findest du hier: http://wiki.openstreetmap.org/wiki/Planet.osm
Bei OSM Datein handelt es sich um XML dateien welche auch gepackt sein können. Desweiteren gibt es mit pbf Binärdateien. welche wesentlich kleiner und schneller verarbeitbar sind.
Als Hilfsmittel gibt es dann verschiedene Programme wie Osmosis oder osm2pgsql um diese Dateien in Datenbanken zu schieben. osm2pgsql bereitet die Daten speziell für ein Rendering auf ist also für eine Suche möglicherweise ungeeignet. Insbesondere bei Relationen.
Der Weg wie du die Daten in die Datenbank verschiebst entscheidet auch darüber welche Daten du dort wieder findest. Adressen können in OSM mehreren Formen auftauchen. Zum einen können es Punkte sein. Hier gibt es aber unterschiedliche Detailgrade. Manche Punkte haben nur das Keyvaluepaar addr:housenumber=* andere haben hier noch Straße Plz Gemeinde und Land. Im Prinzip sind diese Werte aber auch an geschlossenen Wegen zu finden. Dies ist beispielsweise bei Gebäuden der Fall.
Schwierig wird es immer dann, wenn Informationen fehlen. Sei es Straßen oder Gemeinde und Plz. Dann kannst du dir beim Import behelfen in dem du einfach überprüfst ob der Punkt in einem Gemeinde oder Plz gebiet liegt. Dann kannst du so die Information zu ordnen. Diese Grenzen sind aber sowohl als Wege als auch als Relationen vorhanden.
Bei Straßen wird es schon schwerer. Insbesondere bei Eckhäusern ist es schwer die richtige Straße zu erraten. Hier gab es einmal eine Zeit in der Straßen und Häuser ebenfalls durch eine Relation miteinander verbunden wurden. Dieses Verfahren hat sich aber nicht durchsetzen können.

Ich nutze zur Zeit die Geodaten meines Bundeslandes: http://download.geofabrik.de/osm/europe/germany/sachsen-anhalt.osm.bz2

Zum Aktualisieren wird dieser Befehl verwendet:
osm2pgsql -c -s -C 400 -v -d vgi_gazeteer -U postgres -W -H localhost -P 5432 sachsen-anhalt.osm.bz2

Dieser funkioniert auch.

Nun sieht die Datenbank aber etwas “ungeordet” aus. Ich weis deshalb nicht wo genau welche Daten stehen. Manche Daten stehen ja auch in mehreren Tabellen.

Im OSM Buch von Frederik Ramm und Jochen Topf ist meines Wissens das DB Relationen Schema abgebildet. Allerdings von der großen DB die auf den Servern läuft.

Das DB Schema das osm2pgsql erzeugt ist bestimmt nicht so optimal für dich. Ich würde das vorher erstmal mit einem eigenen Konverter eindampfen. Straßenverläufe o.ä. brauchst du ja eigentlich nicht.

hi,

viw sagte schon: “osm2pgsql bereitet die Daten speziell für ein Rendering auf ist also für eine Suche möglicherweise ungeeignet.”
und er hat definitiv recht.

du brauchst die andere Datenbank - Stichwort “Simple”-DB. Die wird direkt mit osmosis erzeugt und ist besser für deine Belange geeignet.

http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage

keine Angst. Ist auch postgresql mit postgis, nur die Daten werden anders geladen und sind dann anders strukturiert.

Gruss
Walter

p.s. 90% der Kollegen benutzen die auf osm2pgsql basierende db;
daher musst du immer klarstellen, dass du NICHT die osm2pgsql-basierende db meinst, sondern “Simple mit hstore ab osmosis 0.38”.
natürlich nur, wenn du die auch verwenden willst :wink: