django - 使用小数点坐标中的GeoDjango在PostgreSQL数据库中添加POINT

时间:2011-02-25 18:44:04

标签: django gis postgis geodjango

我正在使用带有django的PostGIS。我知道如何在十进制坐标上添加PostgreSQL上的“POINT”但是如何使用GeoDjango添加它?

这就是我在PostgreSQL中的表现:

UPDATE "my_table" SET coordinates=GeometryFromText('POINT(-93.7505 31.3059)',4269) WHERE id=101;

我如何从django做同样的事情?

1 个答案:

答案 0 :(得分:4)

以下是我认为你要求的内容:

GeoDjango使用对象关系映射器。在models.py中,您必须定义一个包含点的模型,例如:

class my_points(models.Model):
  name = models.CharField(max_length = 100)
  coords = models.PointField()

然后,在你的一个视图中,你需要实例化一个my_points对象:

a = my_point(name="example", coords=x,y)

我认为这在语法上并不完美,但是GeoDjango模型api:http://docs.djangoproject.com/en/dev/ref/contrib/gis/model-api/和常规geodjango模型指南:http://docs.djangoproject.com/en/dev/topics/db/models/可能会让你到达你需要去的地方。希望有所帮助。

修改: 好的,我不明白你的帖子。 “添加一个POINT”向我表明你想添加一个。但是,您的SQL语句用于更新值。

要更新数据库中的值,您仍需要一个模型。我将继续假设你有一个名为“my_points”的模型设置。

from django.contrib.gis.geos import GEOSGeometry
# queries the database for the object with an id=101
a = my_points.objects.get(id=101)
# defines your point
pnt = GEOSGeometry('POINT(5 23)')
# updates the object in memory
a.coords = pnt
# saves the changes to the database
a.save()