[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

SOLVED: Re: PostGIS DB: wie einrichten?



Am Monday 11 May 2009 21.17:00 schrieb Andreas Kretschmer:
> In response to Thomas Kuster :
[...]
> Du hast plpgsql und PostGIS in einer speziellen DB mit dem namen testdb
> erstellt, bis Du Dir sicher, daß Deine Tabelle auch in dieser DB ist?
>
> Ich vermute mal nein...

psql -h localhost -d testdb -U testdb
Dann:
CREATE TABLE rohdaten (
  datenid SERIAL PRIMARY KEY NOT NULL,
  protokollid INTEGER NOT NULL REFERENCES protokoll,
  zeitpunkt TIMESTAMP NOT NULL,
  punkt POINT,
  qualitaetid SMALLINT NOT NULL REFERENCES qualitaet,
  numsat SMALLINT NOT NULL,
  hdop REAL NOT NULL,
  altitude REAL,
  seperation REAL
);
Führt dazu.

Das Problem war das die PostGIS-Funktionen Werte vom Typ Geometry erwarten. 
Man sollte die Fehlermeldung genau lesen, es folgte ein HINT Typenumwandlung. 
Mit einem CAST geht das nicht, da auch die Projektion festgelegt werden muss. 
Folgender Query tut (beinahe) das was ich will:
SELECT daten.datenid, daten.zeitpunkt, daten.zeitpunkt-letzter.zeitpunkt AS 
letzterpunktvor, daten.punkt, 
ST_Distance_Sphere(setsrid(makepoint(daten.punkt[1], daten.punkt[0]),4326), 
setsrid(makepoint(letzter.punkt[1], letzter.punkt[0]),4326)), letzter.punkt 
FROM rohdaten daten LEFT JOIN rohdaten letzter ON 
daten.datenid-1=letzter.datenid WHERE daten.protokollid=21 ORDER BY 
daten.zeitpunkt;

Allerdings wäre es rein theoretisch möglich, dass datenid nicht fortlaufend 
ist. Wodurch ich nicht die Distanz zum vorhergehenden Punkt berechne. Ich 
muss nun also noch rausfinden wie ich eine reihenfolgenid anlegen kann 
(basierend auf ORDER BY daten.zeitpunkt und dann den self join via dieser 
Spalte realisieren).

Viele Grüsse und Dank
Thomas


Reply to: