transformation mittels sql

Hallo an Alle,

ich würde gerne mittels SQL das PostGIS die Transformation eines Punktes in ein anderes Referenzsystem vornehmen.

Bisher bin ich soweit, aber scheitere, am Ergebnis der Abfrage:

SELECT transform( GeomFromText( ‘POINT (x y)’, SRS1), SRS2)

Diese Anfrage schicke ich mit PHP an PostgreSQL.
PostgreSQL führt die Anfrage ohne Fehler aus, jedoch erhalte ich kein Ergebnis zurück.
Wenn ich die Anfrage über ein SQL-Interface im phppgadmin ausführe, bekomme ich eine ganz lange Nummer.

Kann mir jemand helfen?

Wie sieht dein PHP Code aus, der die Antwort auswertet?

Hallo ads,

$transform_str = "transform( GeomFromText( '$1( $2 )', $3), $4)";
$sql = "SELECT ".$transform_str;
$params = array($this>geomtype , $this->geometry , $srs, $srs_act);
$types = array('s', 's', 'i', 'i');
$res = db_prep_query($sql, $params, $types);
$row = db_fetch_row($res);
$this->geometry_act = $row[0];
 

Obiger Code erstellt das beschriebene SQL-Statement. Dieses liefert wie gesagt keine Fehler bei der direkten Ausführung im SQL-Interface. Nur die Abfrage des Ergebnisses (Falls es überhaupt eins gibt) macht Probleme.
Die Funktionen db_prep_query() und db_fetch_row() sind mit den pg_-Funktionen gleichzusetzen. Das Array $types beinhaltet die Datentypen der Variable $params. Ob ich nun alle $params-Einträge als String übergebe oder die Referenzsysteme als Integer, ändert am Ergebnis nix.
Die Variable $res wird bei Ausführung auf “false” gesetzt.

Die $params-Einträge:
[0]=>
string(5) “Point”
[1]=>
string(23) “-58.1333333 -62.0833333”
[2]=>
string(4) “4326”
[3]=>
string(5) “32721”


Was ich mich Frage: Funktioniert mein Vorhaben so Prinzipiell?
Also ist es Möglich sich ein Objekt so umprojizieren zu lassen?

Gruß,
Wucher

Moin!

Mit

SELECT astext(transform( GeomFromText( 'POINT (x y)', SRS1), SRS2))

Könntest du die lange Zahl mal überprüfen, ob das eine korrekte Geometrie ist. Wenn ja sollte es prinzipiell gehen. Ich würde mal auf einen Fehler vermutlich bei der Parameterübergabe tippen. Stimmen denn die Datentypen und Klammern? Kannst du der von PHP erzeugten String in postgres ausführen? Nur so als Fragen, ich kenn mich mit PHP nicht aus… :wink:
Ich werde es später aber auch mal ausprobieren, wenn ich dazu komme.

Gruß Uwe

Das würde bedeuten, dass es einen Fehler in der Anfrage gab (SQL Fehler).

Ausserdem vermisse ich deine Fehlerbehandlung in deinem Code … du arbeitest einfach weiter, ohne geprüft zu haben, ob das überhaupt alles geklappt hat.

So, jetzt geht’s,
Es lag zum einen an der Funktion db_prepare_query();
Die hat die Parameter nicht richtig eingebunden. :astonished:

das mit dem astext, hat mir sehr weitergeholfen. Eine wichtige Funktion, wenn man sich mit Hexadezimal-Codes nicht auskennt. !!!

Vielen Dank, für Eure Bemühungen,
Wucher