PostgreSQL / Django / newbie here。
我有一堆带有场地和纬度/长信息的JSON数据,我想将它导入我的数据库。到目前为止,我已经编写了一个脚本来将我的JSON格式化为SQL语句,因此我可以使用一系列INSERT语句导入它们。
但是当我尝试使用ST_PointFromText('POINT(lon lat)')语法时,我的'位置'字段(一个PointField)让我感到悲伤。具体做法是:
错误:关系“finder_venue”的新行违反了检查约束“enforce_srid_location”
那么我该如何生成合适的SRID?
或者,鉴于Django的轻松,我不禁觉得我在这里犯了程序异端。有人能指出我更明智的方向吗?
谢谢,
乔恩
答案 0 :(得分: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)