Ergebnis 1 bis 6 von 6

Thema: transformation mittels sql

  1. #1
    wuchermann ist offline Neuer Benutzer
    Registriert seit
    21.01.2007
    Beiträge
    16

    Standard 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?

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    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

  3. #3
    wuchermann ist offline Neuer Benutzer
    Registriert seit
    21.01.2007
    Beiträge
    16

    Standard

    Hallo ads,

    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]; 
    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
    Geändert von wuchermann (11.05.2007 um 03:38 Uhr)

  4. #4
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    794

    Standard

    Moin!

    Mit
    Code:
    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...
    Ich werde es später aber auch mal ausprobieren, wenn ich dazu komme.

    Gruß Uwe
    Have a lot of fun!

  5. #5
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Zitat Zitat von wuchermann Beitrag anzeigen
    Die Variable $res wird bei Ausführung auf "false" gesetzt.
    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.
    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

  6. #6
    wuchermann ist offline Neuer Benutzer
    Registriert seit
    21.01.2007
    Beiträge
    16

    Standard

    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

Ähnliche Themen

  1. Transformation
    Von tgaert im Forum PostGIS
    Antworten: 8
    Letzter Beitrag: 05.07.2010, 08:42
  2. SRID-Transformation
    Von Otfrid im Forum PostGIS
    Antworten: 7
    Letzter Beitrag: 19.02.2010, 16:51
  3. koordinaten transformation
    Von g06lepe im Forum PostGIS
    Antworten: 7
    Letzter Beitrag: 23.03.2009, 09:05
  4. Transformation von UTM33 nach WGS84
    Von masterofdesasta im Forum PostGIS
    Antworten: 3
    Letzter Beitrag: 15.07.2008, 08:20
  5. Insert mittels VBA
    Von Peter56 im Forum Programmierung
    Antworten: 2
    Letzter Beitrag: 08.11.2007, 09:54

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum