Wie sieht dein PHP Code aus, der die Antwort auswertet?
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?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Hallo ads,
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.PHP-Code:$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];
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
Geändert von wuchermann (11.05.2007 um 03:38 Uhr)
Moin!
Mit
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...Code:SELECT astext(transform( GeomFromText( 'POINT (x y)', SRS1), SRS2))![]()
Ich werde es später aber auch mal ausprobieren, wenn ich dazu komme.
Gruß Uwe
Have a lot of fun!
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
So, jetzt geht's,
Es lag zum einen an der Funktion db_prepare_query();
Die hat die Parameter nicht richtig eingebunden.![]()
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
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen