0

次のように定義された Django PointField に National Grid 参照を挿入しようとしています。

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

ただし、WKT で正しくフォーマットする方法がわかりません。これは、基本的な National Grid リファレンスを単純に使用してみると、次のようになります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

グリッド参照を正しくフォーマットするにはどうすればよいですか?

4

1 に答える 1

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)です。

全体像を考えると、これらのレコードは通常のデータベース テーブルにすぎず、少なくとも 1 つの列に地球上のジオメトリに関する詳細が含まれていることがわかります。これらの幾何学的な値への挿入は幾何学的なタイプでなければならず、(比較的) 平易な英語からこれらのジオメトリに到達する方法は、ジオメトリ コンストラクターを使用することです。

于 2010-09-14T03:08:30.343 に答える