2016-06-19 19 views
2

Wissen Sie, wie der Typ von PGobject in Java Point konvertiert werden kann? Eigentlich PGobject ist ein Objekt wie folgt aus: PGobject Geolocation:org.postgresql.util.PGobject zu org.postgis.Point;

type: geography 
value: 0101000020E6100000C006335CD3043840504BBDB89EC14140 

Wie diese Zahl in Punkt umwandeln kann?

Antwort

1

Meine Lösung ist unten und es funktioniert gut, aber ich denke, dass Ihre Lösung ist besser

String g = geolocation.getValue(); 
try { 
    Geometry fr = new PGgeometry().geomFromString(g); 
    Point p = fr.getPoint(0); 
    this.geolocation = p; 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 
+1

Meine Lösung ist eigentlich falsch, weil es einen Punkt vom Typ com.vividsolutions.jts.geom.Point zurückgibt, aber Sie brauchen einen Punkt von t Ype PGgeometry (aus dem Postgis-Treiber). Also ist deine Lösung die richtige –

2

Meinst du eine jts Punkt?

Wenn ja so WkbReader verwenden, da Ihre Geometrie in well-know-binary Format ist:

import com.vividsolutions.jts.io.WKBReader; 


WKBReader wkbReader = new WKBReader(); 
byte[] geom = wkbReader.hexToBytes('0101000020E6100000C006335CD3043840504BBDB89EC14140'); 
System.out.println(wkbReader.read(geom));  
// prints POINT (24.01885010000001 35.5126563) 

Das Ergebnis ist vom Typ com.vividsolutions.jts.geom.Point