2010-08-02 17 views
0

J'essaie d'entrer des données dans une base de données PostgreSQL 8.4 avec un modèle PostGIS. Je suis incapable de UPDATE polygones:Écrire du code SQL brut pour PostGIS

> UPDATE my_table SET coords = POINT(1, 1) 
UPDATE 0 1 

> UPDATE my_table SET box = POLYGON(((1, 1), (2, 3), (3, 3), (1, 1))) 
ERROR: function polygon(record) does not exist 

> UPDATE my_table SET box = POLYGON((1, 1), (2, 3), (3, 3), (1, 1)) 
ERROR: function polygon(record, record, record, record) does not exist 

> UPDATE my_table SET box = POLYGON(1, 1, 2, 3, 3, 3, 1, 1) 
ERROR: function polygon(numeric, numeric, numeric, numeric, numeric, numeric, numeric, numeric) does not exist 

> UPDATE my_table SET box = ((1, 1), (2, 3), (3, 3), (1, 1)) 
ERROR: column "box" is of type polygon but expression is of type record 

Comment insérer un polygone? Notez que les données existent déjà dans la table, avec les champs NULL à la place des données spatiales. Je dois UPDATE, pas INSERT, mais cela ne devrait pas faire de différence.

+1

Vous pouvez trouver plus de réponses expertes aux questions relatives au SIG dans le site dédié http://gis.stackexchange.com/ – amercader

+0

@amercader merci! Je ne connaissais pas 'gis'.meta.stackexchange.com ... –

Répondre

2

Vous devez utiliser le Geometry constructors pour charger de nouvelles géométries dans votre table, en particulier la fonction St_GeomFromText:

UPDATE my_table SET box = ST_GeomFromText('POLYGON ((1 1), (2 3), (3 3), (1 1))'); 

La géométrie est définie dans le format WKT (Well-Known Text).

+0

Oui, j'aime écrire en WKT, je ne connaissais pas le constructeur ... –

1

Essayez:

UPDATE my_table SET box = '((1, 1), (2, 3), (3, 3), (1, 1))'::polygon; 

A ma connaissance, plus types géométriques en général besoin des citations.