2010-08-15 39 views
0

Je suis en train d'insérer des références National Grid dans un Django PointField défini comme suit:Comment puis-je fournir une référence de grille nationale britannique en tant que WKT à GeoDjango?

oscode = models.PointField(srid=27700, null=True, blank=True) 

Cependant, je ne sais pas comment les formater correctement WKT. Voilà ce que je reçois si j'essayer d'utiliser simplement une grille de référence nationale de base, TR3241: (! Deviner sauvagement après avoir lu sur WKT)

INSERT INTO places (placeid, structidx, subidx, county, name, oscode) VALUES ('10', '1', '1', 'Kent', 'Dover', 'TR3241'); 
psycopg2.InternalError: parse error - invalid geometry 
LINE 1: ...'1', 'Kent', 'D1', 'Eastry', 'Bewsbury', 'Dover', 'TR3241', ... 
                  ^
HINT: You must specify a valid OGC WKT geometry type such as POINT, LINESTRING or POLYGON 

Et voici ce que je reçois si j'utilise POINT(TR3241):

psycopg2.InternalError: parse error - invalid geometry 
LINE 1: ...'1', 'Kent', 'D1', 'Eastry', 'Bewsbury', 'Dover', 'POINT(TR3... 
                  ^
HINT: "POINT(" <-- parse error at position 6 within geometry 

Comment formater correctement la référence de grille?

Répondre

1

Vous aurait juste besoin quelque chose comme cela, en supposant un point avec LON1 lat1:

insert into geography_table (name, geometry_field) values ('Chez Francois',\ 
ST_GeomFromText('POINT(lon1 lat1)', 27700)); 

Il ressemble à votre colonne de géométrie est appelée oscode; pour vérifier utiliser psql mydb et appuyez sur \d. Vous devriez voir une liste de toutes les tables, celles qui vous intéressent seront listées en tant que géométrie de type. Il devrait y avoir une ligne en bas quelque chose comme "enforce_srid_oscode" CHECK (st_srid(oscode) = 27700).

Le gros problème qui peut vous décourager est que ces enregistrements ne sont que des tables de base de données régulières, avec au moins une colonne contenant des détails sur une géométrie sur Terre. Les insertions sur ces valeurs géométriques doivent être des types géométriques, et la façon dont vous obtenez de l'anglais (relativement) simple à ces géométries est avec un geometry constructor.