Geometry aus einzelnen Columns erzeugen

Hallo,

ich habe eine recht große Tabelle, da ich diese mit Hilfe des Copy Commands aus einer CSV Datei füllen mußt habe ich nun 2 separate Spalten für Längen- und Breitengrade…
Ich habe an die Tabelle bereits einen Geometry Spalte für Punkte angehängt und möchte diese nun füllen!

Ist das so möglich? Wenn ja wir muss ein solcher Querry aussehen?

Gruß

TK

Habe ich mir dann fix selber beantwortet… :wink:

update

set = GeometryFromText(‘POINT (’ || longitude || ’ ’ || latitude || ‘)’, -1)

Um vernünftig damit arbeiten zu können solltest du noch die SRID setzen, die im Moment auf -1 (keine) steht oder anderweitig on-the-fly eine verteilen (was aber IMHO ungeschickt ist und das Ganze verteuert). Ansonsten funktionieren einige Dinge in PostGIS nicht. Du findest die Liste der verfügbaren SRIDs in der Tabelle spatial_ref_sys. Du setzt das mit dem Befehl st_setsrid(…).

Gruß Uwe

Anmerkung: Oder du schreibst die SRID anstatt der -1 natürlich :wink:

Kaffee +1 :slight_smile:

Gruß Uwe

Ok SRID… wenn ich das richtig verstanden habe dann ist das ja die Projektionsart… und der entsprechende Urspung…

Ich habe jetzt als Longitude und Latitude solche werte: “51702075” ; “6074235” was wohl Dezimalgrad ohne Komma sind also 51702075 = 51,702075 Grad (dezimal).

Gibt es dafür einen passenden Srid? Bzw kann mir jemand eine gut Quelle nennen in der die SRIDs beschrieben sind.

Vielen Dank!

Moin!

Das kann man so nicht sicher sagen. Stimmen die Daten denn wenn man es als Grad interpretiert? Müsste irgendwo im Westen/Nordwesten an der holländischen Grenze sein. Kanst du jemand fragen, der die Daten erzeugt hat?
Die SRID wäre dann wohl 4326, WGS84 (es sei denn die Daten entstammen einem kml-File, dann 900913 was aber kein offizieller epsg-Code ist afaik).
Die SRIDs die PostGIS verwendet, entsprechen der ziemlich gebräuchlichen EPSG (hier steht was dazu).

Gruß Uwe

Hallo Uwe, das macht dann wohl schon zwei Kaffe! :wink: Werde den Srid gleich mal ausprobieren!

Die Daten stimmen wenn ich ein Komma einfüge (51702075 = 51,702075 Grad (dezimal) )
und das ganze umrechne dann kommt der richtige Punkt raus!

Spielt es denn eine Rolle ob in der Geometrie ein Komma drinne ist oder nicht?

Nachtrag:

Ich habe jetzt den SRID auf 4326 geändert wenn ich jetzt allerding die Distanz zwischen zwei Punkten abfrage mit St_Distance dann bekomme ich immer sehr komische (hohe) Werte 58599241.72…
aus denen ich mir keinen Reim machen kann!

Gruß
TK

So nächstes Update… der Spheroid spielt wohl eine Rolle und die Koordinaten müssen auch ein anscheinend ein Komma besitzten…
Wenn ich jetzt folgenden test querry ausgeben lasse:

select ST_Distance(GeometryFromText(‘POINT (51.349300 6.156700)’,4326), GeometryFromText(‘POINT (51.053200 13.725800)’,4326),true);

bekomme ich als Ergebnis: 837838.2177105 !

Wenn ich mir von einem Tool die Distanz ausrechnen lassen dann bekomme ich 528.747 km was auch richtig aussieht!

Was mache ich hier falsch?!!

hrmfp latitude und longitude vertauscht…

AFAIR kannst du die casts auch weglassen, das sollte auch so gehen.

Gruß Uwe