2017-03-03 11 views
1

Ich bin neu in Postgres und Postgis, ich habe Daten von CSV-Datei Postgres-Datenbank geladen, aber das Problem ist, wenn ich eine neue Geometrie Spalte hinzufügen möchte. danken Ihnen für Ihre HilfeHinzufügen neuer Geometrie Spalten in Postgres mit Python

try: 
    cursor.execute("""alter table Pluvometre add column geom geometry(point, 4326) 
        using st_setsrid(st_makepoint(X, Y),4326);""") 
except: 
    print "Error add gemetry column" 

my data: 
-------- 
    X    Y    ID nosico noi mt8_x    mt8_y   lat lon 
-74.0313470791373 45.3929059093611 1 OBXL1011 33 263196.452317745 5028244.700001 45 -74 
-73.9491598482168 45.39888024068 2 OBXL1021 21 269635.2727916759 5028869.415663255 45 -74 

enter image description here

Antwort

1

Die USING-Klausel kann nicht mit ADD-Spalte verwendet werden. Siehe https://www.postgresql.org/docs/9.6/static/sql-altertable.html

In Ihrem Fall müssen Sie zwei Aussagen: eine ALTER TABLE und ein UPDATE:

ALTER TABLE Pluvometre ADD COLUMN geom geometry(point, 4326); 
UPDATE Pluvometre SET geom = st_setsrid(st_makepoint(X, Y),4326); 
+0

tahnk Sie für Ihre Hilfe, ich habe eine andere Frage, ist es normal Daten wie diese haben: 0101000020AD10000012EE2D97018252C0378EA7BD4AB24640 0101000020AD1000001EB1F208BF7C52C0E05EFA810EB34640 in meine neue Geometrie-Spalte? –

+0

Ja, sie sind WKB-Strings, Binärdarstellung von Postgis-Geometrien. Siehe https://en.wikipedia.org/wiki/Well-Knowled_text#Well-Known_Binary. Die Funktionen St_SetSrid() und St_MakePoint() geben diese Art von Daten zurück. Verwenden Sie die Funktion St_AsText (geom), um die ursprünglichen Koordinaten zu sehen. –

+0

Vielen Dank für Ihre Erklärung, es ist wirklich klar. –

Verwandte Themen