Thomas Krüger schrieb: > Moin, > > die Frau vom Bauamt hat mir heute auch angeboten, mit Bebauungpläne und > ähnliches, was sie dort selber ins GIS einhäcken, als Shapefile > zuzusenden. Jetzt habe ich ein wenig rumgesucht, bin aber zu keiner > vernüftigen Lösung gekommen, diese in JOSM reinzubekommen. > Ich fand Tool namen shp2osm, in dem ich erst mal ein paar Bug beheben > musste und dann beim Testen (mit den QGIS Demofiles und der freien > Osnabrücker Karte) eine .osm-Datei mit Koordinaten in einem anderen > Format als Länge/Breite in Grad bekam. > Damit kam JOSM nicht klar und ich als Projektions- und > Koordinaten-Analphabet erst recht nicht. > > Ein Beispiel: > <node lat='5799654.02' lon='3429429.46' id='1' ></node> > > Kennt jemand eine Lösung? > > Grüße, > > Thomas >
Hallo, die Koordinate ist offensichtlich "Gauß-Krüger, 3. Meridianstreifen", EPSG-Code 31467 Die muss für OSM transformiert werden in Geogr. Koordinaten (lat/lon), EPSG-Code 4326 Dazu kann man einschlägige Programme verwenden. Ich mache das aber auch ganz gerne mit der Spatial-Datenbank 'PostGIS' über die Funktion 'transform'. Entweder zuerst die Shape-Daten nach PostGIS importieren (bleibt zunächst im System 31467). Dann beim Auslesen des Geometrie-Feldes das Koordinatensystem transformieren, z.B. transform(the_geom, 4326) wenn im Feld 'the_geom' eine Punkt-Koordinate gespeichert ist, bekommt man ein transformiertes Geometrie-Feld aus dem Select. Daraus kann man mit den Funktionen x und y die Werte 'lat' und 'lon' selektieren: select x(transform(the_geom, 4326)) AS lon, y(transform(the_geom, 4326)) AS lat Wenn man die Daten nicht erst Speichern möchte, kann man die Werte auch im SQL-Aufruf mitliefern: SELECT x(transform( GeometryFromText('POINT(3429429.46 5799654.02)',31467),4326)) as x, y(transform( GeometryFromText('POINT(3429429.46 5799654.02)',31467),4326)) as y; Hier ist noch Optimierungs-Potential. Die Koordinate wird 2mal Transformiert, je einmal für x und y. Wer weiß, wie man 1 mal transformiert um dann x UND y heraus zu ziehen? Zum Verständnis des Select: POINT(3429429.46 5799654.02)',31467 ist der Eingabetext für eine Geometrie der Form "Punkt" (Es gibt auch Linie, Fläche, ...). 34... = Rechswert X 57... = Hochwert Y Die angehängte Zahl 31467 ist der SRID (Spatial Reference ID) für das Koordinatensystem. Codierung gemäß EPSG (European Petroleum Survey Group). Mit der Funktion 'GeometryFromText' macht man - wer ahnt es? - aus dem Text eine "Geometrie" also ein spezielles Datenformat der Spatial-Datenbank. Über Transform wird die Geometrie in ein anderes System umgerechnet. Man muss erst mal eine Geometrie haben, denn nur damit funktioniert das. Und aus der umgerechneten Geometrie holt man dann mit x und y die einzelnen Koordinaten-Werte wieder raus. Man braucht dazu nur eine (leere) Datenbank, die als PostGIS-Datenbank eingerichtet ist. Eine PostgreSQL-DB wird dazu um die Sprache 'pgsql' erweitert. Die Tabelle 'spatial_ref_sys' wird aus mitgeliefertem SQL aufgebaut und enthält die Parameter für jedes Koordinatensystem dieser Welt. Shape nach Postgis? Dafür wird mit PostGIS ein Tool mitgeliefert. Das habe ich aber noch nicht ausprobiert. Was ist PostGIS? PostGIS ist ein Spatial-Zusatz für die Datenbank PostgreSQL. Beides läuft auf Windows und Linux. Ich habe beides nicht auf meinen "Hauptsystem" installiert, weil sonst immer ein Server-Prozess gestartet wird. Statt dessen habe ich eine virtuelle Maschine (VM-Ware-Player) mit Ubuntu und PostgreSQL und PostGIS, das ich nur 'bei Bedarf' starte. Die Falle dabei: PostGIS wird standardmäßig so installiert, das es nur auf localhost lauscht. Man muss die .conf-Datei so ändern, dass auch andere Verbindungen akzeptiert werden. Vielleicht gibt es ein VM-Ware-Image mit einem vorinstallierten PostGIS? MySQL soll ja seit ein paar Releases auch Spatial-Funktionen beherrschen. Dazu habe ich aber keine Erfahrungen. Ääähh ... wie war noch mal die Frage .... ? -- Frank Jäger http://www.FOTODRACHEN.de _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-de