如何将英国国家电网参考作为WKT提供给GeoDjango?

时间:2010-08-15 23:16:57

标签: geocoding geospatial postgis geodjango

我正在尝试将一些National Grid引用插入到Django PointField中,定义如下:

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

但是,我不知道如何在WKT中正确格式化它们。如果我尝试使用基本的国家网格参考TR3241

,这就是我得到的
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

如果我(在阅读WKT之后疯狂地猜测!)这就是我得到的;使用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

如何正确格式化网格参考?

1 个答案:

答案 0 :(得分:1)

你只需要这样的东西,假设有一个点lon1 lat1:

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

看起来您的几何列称为oscode;检查使用psql mydb并点击\d。您应该看到所有表的列表,您感兴趣的表将被列为类型几何。底部应该有一行如"enforce_srid_oscode" CHECK (st_srid(oscode) = 27700)

可能让你失望的重要一点是,这些记录只是常规数据库表,至少有一列包含有关地球上某些几何体的详细信息。这些几何值上的插入必须是几何类型,从(相对)普通英语到这些几何的方式是geometry constructor