2016-12-11 4 views
1

mit Ich versuche, die Punkte für alle Eckpunkte meiner Multipolygone psychopg2 erfolgreich ausgeführt wird ... Die folgenden Code zu bekommenPolygon Eckpunkte lat/lon in Python psycopg2

cur = conn.cursor() 
cur.execute("""SELECT ST_DumpPoints(ST_AsText(geom)) from dry_overlay""") 


rows = cur.fetchall() 
print "\nShow me the databases:\n" 
for row in rows: 
    print " ", row[0] 

aber es erzeugt ein Ausgangssignal, das aussieht dies wie:

("{1,1,1}",0101000000F3071C3FF0E04241C729FC3E2C735A41) 
("{1,1,2}",01010000009C700A93FFDF4241DA0BBD6283725A41) 
("{1,1,3}",01010000001BC9122701E04241C2D848ED2C735A41) 
("{1,1,4}",0101000000325487970FE04241FF279CE92C735A41) 
("{1,1,5}",0101000000B188A3F06FE042414A73142B2C735A41) 
("{1,1,6}",0101000000F3071C3FF0E04241C729FC3E2C735A41) 
("{1,1,1}",010100000019D5589E634D4341B7E69817C2875A41) 
("{1,1,2}",010100000042AEF52E2E4D43418CD52A53C1875A41) 
("{1,1,3}",01010000006D4CBA551F4D43411EBEF35CC1875A41) 
("{1,1,4}",0101000000D92F2F601F4D43413AD9BADAB9875A41) 
("{1,1,5}",0101000000AF1860920F4D43410E00CDDBB9875A41) 

ich verstehe, dass das zweite Element WKT aber wie würde man gehen über die in einem lat/long Koordinaten konvertieren? Ich dachte ST_AsText() würde diese Funktion

Antwort

1

Ja, ST_AsText die Funktion, die Sie brauchen, aber an einem anderen Ort:

SELECT ST_Astext((ST_DumpPoints(geom)).geom) from dry_overlay; 

Noch besser nutzen ST_X und ST_Y, so dass Sie den Text nicht analysieren müssen:

SELECT ST_x(geom), ST_y(geom) FROM (
    SELECT (St_DumpPoints(geom)).geom from dry_overlay 
) as foo; 
0

PPyGIS Funktion ppygis.Geometry.read_ewkb(...) könnte Ihnen helfen.

0

Sie können das wkb-Modul aus dem ausgezeichneten shapely-Paket verwenden, um die Geometrie zu laden und zu bearbeiten:

from shapely import geometry, wkb 

test_geom = geometry.Point(0, 0) 
test_wkb_hex = wkb.dumps(test_geom, hex=True) 

print(test_wkb_hex) # prints: '010100000000000000000000000000000000000000' 

my_geom = wkb.loads(test_wkb_hex, hex=True) 

print(my_geom) # prints: POINT (0 0) 

In Ihrem Fall verwenden Sie einfach die wkb.loads(record_geom, hex=True) Methode für Ihre Antwort.

Sie können dann shapelygeometry Modul verwenden, um Ihre Eckpunkte zu extrahieren oder eine andere Anzahl von Aufgaben zu tun.

Zum Beispiel gibt my_geom.coords.xyx, y Arrays Ihrer Koordinaten zurück.