Lat Lon aus geometrie extrahieren für google-maps

Hallo,

ich bin absoluter PostGis anfänger. Ich habe eine Tabelle mit geometry: poi(id:int,name:string,address:string,geom:geometry)

der Inhalt wurde mit
INSERT **** GeometryFromText(‘POINT("+lon+" “+lat+”)’,4326))*112
eingefügt.


Ein Tupel schaut nun so aus:
(13, Testplatz, Muenchen, 01070000A0E61000000100000001010000805E11FC6F25134840A417B5FB553027400000000000000000)


Wie kann ich nung aus dieser Geometriespalte die dazugehörenden Lon und Lat Werte auslesen? Mit .getString() kriege nur den String… Mir würde es wahrscheinlich auch reihen einen POINT oder POLYGON zu extrahieren…

Dürfte nicht so schwer sein, oder? aber ich habe leider keine Ahnung, wurde aus der PostGIS Referenz leider auch nicht schlau :frowning:

Ich weiss auch noch nicht, warum meine Vorgängerin die Punkte vor dem Einfügen mit 112 Multipliziert hat.

Für Hilfe bedanke ich mich im Voraus.

lg,
hugo

Du kannst die Funktionen ST_X(geometry) und ST_Y(geometry) nutzen wenn es Punkte sind, oder du kannst auch gleich KML rausschreiben mit ST_AsKML(geometry) für alle Geometrien

also etwa so:

select id, ST_X(geom), ST_Y(geom) from geomtabelle;
oder
select id, ST_AsKML(geom) from geomtabelle;

Das 112 würde ich mal deuten, das sie jeden Punkt 112 mal angelegt hat, was aber auch nicht mehr Sinn ergibt :wink:

Gruß Uwe

Vielleicht wollte sie ja Lat/Lon in Kilometer umrechnen. :confused:

Man sagt ja als Faustregel, dass 1° ca. 111km sind. Also mal so ganz krass über den Daumen gepeilt. Vielleicht dachte sie ja, dass die Umrechnung damit erledigt ist. :astonished: Die Leute sind da manchmal sehr kreativ was solche Sachen angeht. :smiley:

:p

also ist das eher “schwachsinn”??
wenn das falsch ist, nehme ich es nämlich raus und hoffe, dass ich mit dem Datensatz trotzdem noch arbeiten kann :slight_smile: )

Besser geeignet wären wahrscheinlich die postGis eigene distance() Funktion? :slight_smile:

ST_AsKML(geom)

wird mir hoffentlich weiterhelfen, ich habe nämlich nicht nur Punkte sondern auch Polygone… Muss ich da noch was beachten um aus dem ResultSet die Lat/Lon WErte auszulesen?

ICh werde leider erst heute Abend testen können…

Vielen lieben Dank für Eure Hilfe… :slight_smile:

Die 112km gelten aber auch nur am Äquator :astonished:
Klugscheissmodus: aus

Hi @ll,

ich habe versucht
da kommt die Fehlermeldung:

ERROR: function st_askml(geometry) does not exist

muss ich da noch was machen? Ich hatte irgendwas gehört, dass ich postgis in den classpath einbinden muss?

Hoi!
Ich bin jetzt frecherweise davon ausgegangen, das du PostGIS 1.3.x benutzt. Da wurden die Befehlsbezeichnungen an SQL-MM(?)-Bezeichnungen angepasst. Vorher war das einfach askml(geometry).
Wenn PostGIS richtig installiert ist sollte das auch funktionieren, zumindest die Funktion finden. Einbinden braucht man da eigentlich nichts.
Womit greifst du denn auf die DB zu?

Gruß UWe

hallo,

ich arbeite mit jsp und greife über eine Java Methode auf die DB zu.
die function distance() funktioniert z.B.

Ich hatte die Abfrage schon auf askml(geometry) geändert. die findet er leider auch nicht, aber wie gesagt, wird die funktion von Java falsch als asukml(geometry) weitergegeben

Ich weiss leider nicht, welche postgis version installiert ist, wie kann ich das herausfinden?

Das Zeug macht mich noch verrückt :slight_smile: )

Mit Java etc kenn ich mich nun gar nicht aus. Die PostGIS-Version kriegst du raus mit

select postgis_full_version()

PostgreSQL-Version ist:

select version()

Gruß Uwe

hallo,

es ist postgis 1.1.6 installiert.

die function version() konnte ich nicht finden, muss ich mir da sorgen machen? :slight_smile:

Hm, version() sollte eine PostgreSQL-Funktion sein, die dir die Serverversion sagt. Die andere gibt die Postgis-Version zurück. Kannst du sie direkt als SQL absetzen?
Bei PostGIS 1.1.6 funktionieren dei ST_Befehle noch nicht und ich bin nicht sicher, ob da schon asKML() implementiert wurde. Aber es gibt einen GML-Export, der könnte eventuell auch weiterhelfen. AFAIK gibt es da auch schon GML-KML-Konverter.

Gruß und schöne Ostereier

Uwe

Also in diesem Fall würde ich updaten. Bei deine Version ist etwas veraltet. So gesehen fehlen dir auch noch eine ganze Stange andere Funktionen. Das Update sollte sich also auf jeden Fall lohnen. Dann dürfte asKML auch funktionieren.