Ergebnis 1 bis 1 von 1

Thema: Wie funktioniert transform() bzw askml() bzw astext()?

  1. #1
    erpelinho ist offline Neuer Benutzer
    Registriert seit
    04.01.2010
    Beiträge
    13

    Standard Wie funktioniert transform() bzw askml() bzw astext()?

    Hallo,

    ich habe ein Shape-File welches mehrere Polygone im Raum Dhaka enthält.
    Diese liegen mit der SRID: 32646 vor und werden auch so in meiner PostGIS-DB gespeichert.

    Wenn ich jetzt die Daten in eine KML-Datei exportieren möchte um diese dann bei Google Maps anzuzeigen, sollten diese ja zuerst in die SRID: 4326 umgewandelt werden.

    Ich habe mich jetzt den ganzen Abend belesen aber bin mir immernoch nicht sicher, wie das nun alles funktioniert.

    Ich habe da mehrere Möglichkeiten und Probleme entdeckt:
    1) neue Spalte mit SRID 4326 anlegen und dann die Koordinaten umwandeln
    Code:
    SELECT AddGeometryColumn('schema','table','geo_column',4326,'MULTIPOLYGON', 2);
    UPDATE schema.table SET geo_column = transform(the_geom, 4326);
    Das funktioniert anscheinend auch nichtmal richtig (also das UPDATE) denn ich muss stattdessen folgendes Ausführen um eine Wirkung zu erzielen (allerdings auf die Original-Spalte, die neue brauch man dafür ja dann nicht, weil man ja die SRID gleich von den ganzen Daten ändert, außer man kopiert die vorher nochmal in ne Spalte)
    Code:
    SELECT UpdateGeometrySRID('public', 'yourtablenamehere','yourcolumnnamehere', 4236);
    Funktioniert also transform nicht? Aber den Tipp hab ich bei Google ganz oft gefunden...

    2) Finde 1) aber recht kompliziert, denn eigentlich sollte das doch auch funktionieren:
    Code:
    SELECT askml('my_title', 'description', transform(the_geom, 4326)) FROM schema.table;
    Allerdings werden mir hier Koordinaten der Form 88.xxx, 0.xxx erzeugt, was bei SRID 4326 irgendwo im Meer ist

    3) Und nun kommt das was mich verwirrt:
    Wenn ich das folgende Aufrufe
    Code:
    SELECT askml('my_title', 'description', the_geom FROM schema.table;
    kommt das gleiche wie bei 2) raus..
    Das ganze habe ich nun versucht zu überprüfen und bin dann auf astext gekommen. Allerdings liefert
    Code:
    SELECT astext(transform(the_geom, 4326)) FROM schema.table;
    die komischen 88.xxx 0.xxx Koordinaten und
    Code:
    SELECT astext(transform(the_geom, 32646)) FROM schema.table;
    die "richtigen" 90.xxx 23.xxx.. was ja eigentlich falschrum ist oder?!

    Die Daten liegen doch in der DB als SRID 32646. Wenn ich jetzt transform mit 4326 aufrufe müsste mir doch egtl die "richtigen" Koordinaten ausgegeben werden?
    Und warum ändert sich die Ausgabe in askml() nicht wenn ich in askml das transform mit einbaue, aber bei astext werden unterschiedliche Ausgaben erzeugt?

    Vielleicht kann mich ja einer aufklären..

    Vielen Dank
    Eric
    Geändert von erpelinho (21.01.2010 um 00:30 Uhr)

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