0

PostgreSQL /Django/初心者はこちら。

会場と緯度/経度の情報を含むJSONデータがたくさんあり、データベースにインポートしたいと考えています。これまで、JSONをSQLステートメントにフォーマットするスクリプトを作成してきたので、多数のINSERTステートメントを使用してそれらをインポートできます。

しかし、ST_PointFromText('POINT(lon lat)')構文を使用しようとすると、'location'フィールド(PointField)が悲しみを与えてくれます。具体的には:

エラー:リレーション「finder_venue」の新しい行がチェック制約「enforce_srid_location」に違反しています

では、適切なSRIDを生成するにはどうすればよいですか?

または、Djangoの使いやすさを考えると、ここでプログラマティック異端を犯しているように感じずにはいられません。誰かが私をもっと賢い方向に向けることができますか?

ありがとう、

ジョン

4

1 に答える 1

1

PostGISでSRIDを設定したい場合は、これを行うことができます:

ST_SetSRID(ST_PointFromText('POINT(-122 37)'), 4326)

(ここでは4326がSRIDです。)

GeoDjangoの場合、モデルは次のように定義されます。

from django.contrib.gis.db import models
class Thing(models.Model):
    # ...
    location = models.PointField(srid=4326)  
    objects = models.GeoManager()

実際に4326を使用している場合は、それがデフォルトであるため、省略できます。次に、locationモデルインスタンスのを次のように設定します。

from django.contrib.gis.geos import Point
some_thing.location = Point(-122, 37)
于 2010-08-05T20:56:22.073 に答える