WKT-Punkte zu Line oder Geometry

Hallo Forum,

vielleicht könnt ihr mir helfen. Ich suche schon eine Woche nach der Lösung und finde sie nicht.

Folgendes: Ich habe GPS-Tracks von mehreren Fahrradfahrern. Die Tracks liegen in Form von einfachen WGS84-Punkten (Textformat) vor. Ich möchte aber nicht die einzelnen Punkte in der Datenbank speichern sondern sie gleich in Form von Polylinien (also Linestrings) abspeichern

Jetzt habe ich festgestellt, dass es da irgendwo anscheinend ein Limit für Linien gibt. Ich kann Punkte zu Linien nur dann umwandeln, wenn ich nicht mehr als 145 GPS-Punkte einlese. Da ich das ganze über Python mache konnte ich das Limit genau feststellen.

Ich habe schon folgende Funktionen probiert:

  • ST_GeomFromText(text,[])
  • ST_LineFromText(text,[])
  • ST_LinestringFromText(text,[])

sowie auch über die Python-Bibliothek PPyGIS.

Aber es immer das Gleiche. Alle Tracks die mehr als 145 Einzelpunkte enthalten werden nicht in die Datenbank geschrieben. Was mache ich falsch?
Klar könnte ich die GPS-Tracks in einzelne Segmente teilen und mit IDs dann wieder den vollen Track im GIS herstellen. Ich hätte aber lieber pro Track nur einen einzigen Datensatz.

Wie genau hast Du das festgestellt? Anhand einer Fehlermeldung? Wenn ja, wie lautet diese und wer erzeugt diese?

Nein, das ist ja das Seltsame. Es wird keine Fehlermeldung ausgegeben. Aber jeder Datensatz, der mehr als 145 Points hat, erscheint mit leerer Geometrie-Spalte in der Datenbank. Alle anderen columns sind befüllt z. B. mit Zeitstempel Start, Zeitstempel Ende. Bei weniger als 146 Punkten, wird auch die geometry-column befüllt.

Ich habe auch schon den SQL-String mehrfach über execute.mogrify validiert.

Kipp ihn einfach mal via psql ein. Schau im Log der Datenbank. Finde so erst einmal raus, ob es an der DB liegt, oder am Treiber zur DB/an der Applikation.

Blödes Windows :-). Du hattest recht. In der Datenbank sind die Werte richtig gespeichert. Anscheinend nur ein Darstellungsproblem von pgadmin III. Nächstes mal lieber gleich per psql auf die Datenbank. Danke für den Tipp und die Hilfe.

Hm, PGAdmin ist eher nicht die Ursache, jedenfalls unter Linux scheint sowas zu funktionieren.

Ich suche schon eine Woche nach der Lösung und finde sie nicht.

Ein Woche rumwurschteln ersparen locker 5 Minuten Handbuch lesen :wink:

ST_collect und ST_Linefrommultipoint sollten deine Freunde sein.

Gruß Uwe