Ergebnis 1 bis 8 von 8

Thema: Postgis mit Java

  1. #1
    Wolf ist offline Neuer Benutzer
    Registriert seit
    19.09.2008
    Beiträge
    26

    Frage Postgis mit Java

    Hallo,

    ich habe Punkte als Point in postgres gespeichert.

    nun möchte ich gerne an diese Punkte via Java heran kommen und verarbeiten.

    ich bekomme die Punkte in Java auch als Text dargestellt wie kann ich sie jetzt als Punkt definieren!?

    res.getObject(1)="SRID=31467;POINT(50.540585 7.122855 91.463)"

    Point punkt = new Point();
    res = this.stmt.executeQuery(query);

    ...

    punkt = res.getObject(1); // PROBLEM das geht nicht!


    Oder gibt es eine Möglichkeit bei einer Abfrage sich direkt X,Y,M des Point zurück, zugeben zulassen.
    " select asewkt(point) from daten; "

    Danke für eure Hilfe

  2. #2
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    da schau

    PGobject

    sorry für die kurze antwort ...

    ich muss jetzt feierabenden - vielleicht antworte ich spaeter nochmal - wenns noch fragen gibt ..

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

    Standard

    Hallo!

    Das was du als Text bekommst ist der Punkt in WKT(WellKnownText-Format). Dabei sind die Zahlen hier Rechtswert und Hochwert, POINT bezeichnet den Geometrietyp (Wer hätte das gedacht ) und SRID ist die EPSG-Nummer des geographischen Bezugssystems. Das ganze gibt auch als Binärformat WKB. Um das in Java zu verwursten könnte dir das OpenJump-Projekt helfen. Alternativ könntest du über select [x|y|z](the_geom) from geom_table auch die jeweiligen Koordinaten direkt ansprechen.

    Grüssle Uwe

    BTW: rein aus dem Bauch gesagt, deine SRID ist falsch, da dürfte 4326 hingehören (WGS84, lat/lon-Werte), du hast ein GaussKrüger-System (m-Angaben) eingestellt (31467=GK3)
    Have a lot of fun!

  4. #4
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von Gisman Beitrag anzeigen
    Hallo!

    Um das in Java zu verwursten könnte dir ....
    ach was - da bin ich wieder

    da gibts die klasse PGObject .. die kanner entweder ableiten oder einfach so benutzen ..

    ich hab da schonmal irgendwo was von extensions fuer postgres-jdbc gesehen .. da sind ziemlich sicher so geometrie-objekte bei

    ich benutz diesen weg fuer custom complex types .. hab da inzwischen auch halbwegs ennehmbare lösungen gefunden, um damit zu arbeiten ..
    Geändert von symbiont (30.09.2008 um 18:07 Uhr)

  5. #5
    Wolf ist offline Neuer Benutzer
    Registriert seit
    19.09.2008
    Beiträge
    26

    Frage

    Hi,

    Danke erst mal für die Antworten.
    Also die Alternative: "lternativ könntest du über select [x|y|z](the_geom) from geom_table auch die jeweiligen Koordinaten direkt ansprechen."

    ist eine gute Idee.

    Ja es gibt extensions fuer postgres-jdbc ich benutze Java Postgis JDBC ich nutze diesen auch aber leider funktioniert das nicht so wie ich das gerne hätte!
    Oder ich sehe meinen Fehler nicht!

    PGObject gibt es aber wie kann ich daraus ein Postgis Point machen in JAVA!???

    Code:
    ResultSet res;
    Point punkt = new Point();
    PGobject pgobj = new PGobject();
    ...
    pgobj = (PGobject)res.getObject(1);
    punkt = gpobj; // ???????????

    naja ich werde es mal weiter probieren Danke euch erst mal

    PS: Srid ist erst mal egal
    Geändert von Wolf (01.10.2008 um 11:03 Uhr)

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

    Standard

    Zitat Zitat von Wolf Beitrag anzeigen
    PGObject gibt es aber wie kann ich daraus ein Postgis Point machen in JAVA!???
    Was meinst du mit 'PostGIS'-Punkt? Der String, den du erhälst ist eigentlich die Klartext-Ausgabe eines 'PostGIS-Punkts'.

    Ich vermute aber, du möchtest in irgendeiner Form geographisch vorgehen
    Dann könnte dir das Jump-Projekt helfen. Da könntest du nützliches finden. Aber frag mich net weiter, ich hab sonst wenig mit Java zu tun

    PS: Srid ist erst mal egal
    Ich habe dich gewarnt

    CU WotW
    Have a lot of fun!

  7. #7
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von Wolf Beitrag anzeigen
    PGObject gibt es aber wie kann ich daraus ein Postgis Point machen in JAVA!???
    die PGObject-Klasse ist nichts weiter als ne Kapsel fuer den Klartext-String von dem z.B. Gisman sprach. I.d.R. würde man fuer irgendeinen Komplexen Typ - wie Point - diese Klasse ableiten - und diese Klasse den String parsen bzw encoden lassen. PGObject hat wohl notwendiger Weise auch noch ein Attribut in dem Der Typ-Name stehen muss PGObject.setType(String name) glaub ich.

    PGObjekt selbst kann also nicht viel - ich schaetze aber, dass entsprechende Derrivate in diesen JDBC Extensions existieren - die das erledigen ..

    ich wuerde mal nach sowas wie PGPoint etc ausschau halten (fals sowas existiert) - wie die dann zu handhaben sind muesste doch dokumentiert sein .. ich schaetze dass die im Konstruktor dann ein PGObject aufnehmen oder nen String ..

    [nachtrag]
    wenn da aber nichts derartiges bei ist wuerd ich sowas einfach selbst basteln .. musst ja nichtmal von ableiten ..
    Code:
    class MyPoint .. {
        public MyPoint(Object o) {
            if (o instanceof PGObject) {
               PGObject pg = (PGObject) o;
               ... det teil auseinander nehmen
            } else
               throw ... 
        }
    }
    new MyPoint(resultSet.getObject(...)).getXYZ()
    Geändert von symbiont (01.10.2008 um 11:53 Uhr)

  8. #8
    Wolf ist offline Neuer Benutzer
    Registriert seit
    19.09.2008
    Beiträge
    26

    Lächeln

    Ah Lösung zum Problem gefunden bzw. mit Hilfe.

    Code:
    ...
    PGgeometry geom = (PGgeometry) res.getObject(1);
    System.out.println( geom.getGeometry().getClass().getCanonicalName());
    System.out.println( geom.getType());
    System.out.println( geom.getGeoType());

    if( geom.getGeoType() == Geometry.POINT){
    Point p = (Point) geom.getGeometry();
    System.out.println( p.toString());

    }

    Danke auch noch mal an die anderen.

Ähnliche Themen

  1. Java und Postgresql
    Von erdmulch im Forum Programmierung
    Antworten: 2
    Letzter Beitrag: 25.09.2011, 15:25
  2. Antworten: 1
    Letzter Beitrag: 23.03.2011, 17:02
  3. java -> array in db
    Von thoogr im Forum Programmierung
    Antworten: 6
    Letzter Beitrag: 04.06.2009, 14:54
  4. Umwandlung von PostGis.Polygon ind java.awt.polygon?
    Von hermaGore im Forum Programmierung
    Antworten: 5
    Letzter Beitrag: 12.05.2009, 21:35
  5. PL/Java SecurityException
    Von symbiont im Forum Allgemeines
    Antworten: 6
    Letzter Beitrag: 28.08.2008, 08:49

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