如何将Lat / Long数据导入PostgreSQL

时间:2010-08-05 19:02:22

标签: django postgresql postgis geodjango

PostgreSQL / Django / newbie here。

我有一堆带有场地和纬度/长信息的JSON数据,我想将它导入我的数据库。到目前为止,我已经编写了一个脚本来将我的JSON格式化为SQL语句,因此我可以使用一系列INSERT语句导入它们。

但是当我尝试使用ST_PointFromText('POINT(lon lat)')语法时,我的'位置'字段(一个PointField)让我感到悲伤。具体做法是:

错误:关系“finder_venue”的新行违反了检查约束“enforce_srid_location”

那么我该如何生成合适的SRID?

或者,鉴于Django的轻松,我不禁觉得我在这里犯了程序异端。有人能指出我更明智的方向吗?

谢谢,

乔恩

1 个答案:

答案 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)