0

PostgreSQL / Django / 新手在这里。

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

但是当我尝试使用 ST_PointFromText('POINT(lon lat)') 语法时,我的“位置”字段(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 回答