Ergebnis 1 bis 6 von 6

Thema: Ergebniss einer Abfrage in Variable speichern

  1. #1
    Friese1976 ist offline Neuer Benutzer
    Registriert seit
    18.02.2009
    Beiträge
    2

    Ausrufezeichen Ergebniss einer Abfrage in Variable speichern

    Hallo ich arbeite noch nicht sehr lange mit PostGIS also Verzeiht mir wenn die Frage vielleicht ein alter Hut ist....:

    Ich erstelle Gerade eine Datenbank mit verschiedenen Vegetationsklassen (auch Biotoptypen genannt). HIer bekomme ich auch von verschiedenen Leuten *shp Dateien zugeschickt.
    Jetzt habe ich die *.shp Datei via shp2pgsql in eine *.sql Datei umegwandelt und die entstandene Geometrie:

    BEGIN;
    CREATE TABLE "bt_test" (gid serial PRIMARY KEY, "biotoptyp" varchar, "bemerkung" varchar, "shape_leng" numeric, "shape_area" numeric);
    SELECT AddGeometryColumn('','bt_test','the_geom','31467', 'MULTIPOLYGON',2);
    CREATE INDEX "bt_test_the_geom_gist" ON "bt_test" using gist ("the_geom" gist_geometry_ops);
    INSERT INTO "bt_test" ("biotoptyp","bemerkung","shape_leng","shape_area" ,the_geom) VALUES ('ONZ',NULL,'3.05667502381e+002','4.80918714016e+0 03','SRID=31467;0106000000010000000103000000010000 001D000000703D0A4F2B334A411C0DE085A5165641A089B0C9 27334A410A682290A2165641F675E0B425334A41C264AA70A3 165641F697DD8B22334A41900F7A4AA21656416891ED242433 4A4132C4B126A11656418026C25E1E334A41D49AE6E99E1656 415817B7191A334A416891EDB89C165641B22E6E9B14334A41 341136E49B165641D24D62D00E334A41FE43FA719C16564166 F7E4F906334A412406818D9D165641764F1E0E02334A4130BB 27339F165641FEF67590FF324A41FE43FA05A0165641F8E461 0903334A41BE9F1AEFA116564134A2B40F07334A41C05B20E1 A41656419EEFA7360A334A41C8293A6AA8165641DC6800F70E 334A414C378929AC165641A245B6CB11334A41501E1666AD16 5641EE7C3F4518334A41D6E76A97AE16564180D93DD91B334A 41B0506BB2AD1656411AE2584720334A418816D90EAD165641 68B3EA6325334A41501E1666AD165641BC0512AC2D334A4104 560EF1B0165641EA0434E930334A416C567D8EAF165641AE47 E17A30334A41E2C798E7AD16564172F90FA131334A41325530 E6AC16564128A0898034334A415839B440AC1656416ABC743B 31334A41029A089BA71656413E0AD77B2D334A41ACFA5C1DA6 165641703D0A4F2B334A411C0DE085A5165641');
    END;
    GRANT SELECT ON bt_test TO PUBLIC; COMMENT ON TABLE bt_test IS 'Aktualität: 18.02.09 - 09:54';

    mit


    SELECT astext(the_geom) FROM bt_test;

    in "lesbare" Gauß-Krüger Koordinaten umgewandelt. Habt ihr vielleicht eine gute Idee wie ich das Ergebniss dieser Abfrage jetzt in die Tabelle bekomme?
    Meine erste Idee war über:

    SELECT AddGeometryColumn ('bt_test','btgeo_gk',
    31467,'MULTIPOLYGON',2);

    Eine neue Spalte anzufügen und dann über

    SELECT ... INTO :btgeo_gk;

    Das ganze quasi in die neue Geometriespalte einzufügen - Dannhabe ich ja aber immernoch die alte Spalte naja die könnte ich ja Droppen. Aber irgendwie bekomme ich gerade diese Schritte nicht in eine schlüssige Reinfolge. Wäre toll wenn mir da jemand helfen könnte.???

    Beste Grüße
    Paul

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Friese1976 Beitrag anzeigen
    Hallo ich arbeite noch nicht sehr lange mit PostGIS also Verzeiht mir wenn die Frage vielleicht ein alter Hut ist....:
    Da bist Du mir weit voraus - ich arbeite noch gar nicht mit PostGIS.



    ... mit[/U]

    SELECT astext(the_geom) FROM bt_test;

    in "lesbare" Gauß-Krüger Koordinaten umgewandelt. Habt ihr vielleicht eine gute Idee wie ich das Ergebniss dieser Abfrage jetzt in die Tabelle bekomme?
    Meine erste Idee war über:

    SELECT AddGeometryColumn ('bt_test','btgeo_gk',
    31467,'MULTIPOLYGON',2);

    Eine neue Spalte anzufügen
    Die SQL-Syntax, um eine neue Spalte in einer bestehenden Tabelle zu erzeugen, ist geringfügig anders. ALTER TABLE.

    und dann über

    SELECT ... INTO :btgeo_gk;

    Das ganze quasi in die neue Geometriespalte einzufügen
    Auch hier geht das in SQL anders, mit UPDATE table SET ...

    - Dannhabe ich ja aber immernoch die alte Spalte naja die könnte ich ja Droppen. Aber irgendwie bekomme ich gerade diese Schritte nicht in eine schlüssige Reinfolge. Wäre toll wenn mir da jemand helfen könnte.???
    Nun, anstall eine neue Spalte zu erzeugen und diese zu füllen, könntest Du auch einfach einen VIEW erstellen, der die Daten in der von Dir gewünschten Form enthält.


    Wie gesagt, ich nix PostGIS, aber es würde mich wundern, wenn elementare Dinge wie oben da anders oder nicht gehen würden.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

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

    Standard

    Hallo!

    Willkommen bei PostGIS, eine excellente Wahl

    Was möchtest du denn genau tun? Du hast ja anscheinend die Geometrien bereits in der Datenbank (im Binärformat)? Die Geometrie wird im sog. WKB-Format abgelegt und kann z.B. von QGis oder ähnlichem direkt dargestellt werden. Falls du die Polygone 'lesbar' haben möchtest, kannst du sie in einem View auf die schon beschriebene Weise als Text darstellen, allerdings kann man damit auch eher wenig anfangen.

    @akretschmar: Die Syntax stimmt für eine PostGIS-Geometriespalte stimmt schon so. Addgeometrycolumn macht ein normales AlterTable um die Spalte anzulegen, schreibt aber nebenbei noch einige Constraints für die Spalte/Tabelle und Metadaten in die zentrale Geometrie-Verwaltung.

    Grüssle Uwe
    Have a lot of fun!

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Gisman Beitrag anzeigen

    @akretschmar: Die Syntax stimmt für eine PostGIS-Geometriespalte stimmt schon so. Addgeometrycolumn macht ein normales AlterTable um die Spalte anzulegen, schreibt aber nebenbei noch einige Constraints für die Spalte/Tabelle und Metadaten in die zentrale Geometrie-Verwaltung.

    Grüssle Uwe
    Danke für die Erklärung, ich hatte etwas in dieser Art mir schon fast gedacht...

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    Friese1976 ist offline Neuer Benutzer
    Registriert seit
    18.02.2009
    Beiträge
    2

    Standard

    Hallo Uwe,
    Als Desktop GIS benutze ich den GDV Spatial Commander der liest auch die Daten aus PostGIS ein. In der Datenbank liegen die aus den ESRI *.shp umgewandelten Daten erstmal in kanonischen Hex Zahlen(nach meinen Mattekenntnissen müssten das zumindest solche sein ) vor, Sprich: 0106000000010000000103000000010000000800000050FC18 7309324A41ECE2366AEF16564104E78CD800324A417A14AECF E6165641D478E9D6FC314A4154522730E71656416C567D56FA 314A41CC10C762E81656410E4FAF04FB314A418638D67DE916 56418E537494ED314A412C651926ED165641441CEB02F4314A 412C8716E9F316564150FC187309324A41ECE2366AEF165641

    Dies ist dann in Gauß-Krüger Germany Zone 3 (SRID=31467) Folgendes Format:

    "MULTIPOLYGON(((3433490.8992 5790653.6596,3433473.6918 5790619.245,3433465.679 5790620.7524,3433460.6757 5790625.5434,3433462.0366 5790629.9662,3433435.1598 5790644.5953,3433448.0228 5790671.642,3433490.8992 5790653.6596)))"

    Da ich aber nicht nur die shp Dateien einlesen muss sondern auch Koordinaten so geliefert bekomme müsste ich diese schon von Anfang an in der Datenbank so aufbauen das ich auch GPS-Koordinaten und andere Datensätze dazu laden kann.
    Also möchte ich das o.g Zellenformat in das untenstehende umwandeln mitr dem sich dann leichter weiterarbeitn lässt.

    War das jetzt verständlich geantwortet

    Gruße
    Paul

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

    Standard

    Hallo!
    Ob sich damit leichter arbeiten lässt sei mal dahin gestellt .
    Zumindest bei Polygonen und Punkten bekommst du mit WKT ein Übersichtsproblem. Du kannst WKT auch nicht direkt darstellen im Client. Du kannst aber auch auf die einzelnen Punkte eines Polygons oder einer Linie direkt zugreifen (z.B. st_pointn, u.a.) und mit st_x und st_y die Koordinaten eines Punkts direkt abfragen. Für alles andere würde ich einen View mit dem WKT-String anlegen wenn man das braucht, das spart dann auch die Updaterei des Strings, falls sich mal ne Geometrie ändert.

    Geometrien kannst du mit geomfromtext in deine Geometriespalte schreiben z.B. mit

    Code:
    Update geomTable set
      the_geom = geomfromtext(['GEOMETRYTYPE(x1 y1[, x2 y2, .. ,xn yn])', SRID)
    für gpx-Daten (die GPS-Tracks meine ich) bietet z.B. auch QGis ein Importmodul, das man zum Laden benutzen könnte...

    Grüssle Uwe
    Have a lot of fun!

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 19.04.2011, 03:45
  2. Antworten: 5
    Letzter Beitrag: 30.07.2009, 19:53
  3. Antworten: 1
    Letzter Beitrag: 25.03.2008, 11:07
  4. Antworten: 10
    Letzter Beitrag: 11.09.2007, 14:54
  5. php und postgresql; übergabe einer variable
    Von andré s. im Forum Programmierung
    Antworten: 21
    Letzter Beitrag: 23.03.2006, 15:05

Stichworte

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