3

我正在将 PostGIS 与 django 一起使用。我知道如何从十进制坐标在 PostgreSQL 上添加“POINT”,但如何使用 GeoDjango 添加它?

这就是我在 PostgreSQL 中的做法:

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

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

4

1 回答 1

6

这就是我认为你要求的:

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/可能会将您带到您需要去的地方。希望有帮助。

编辑:好的,我不明白你的帖子。“添加一个点”向我表明您想添加一个。不过,您的 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()
于 2011-02-25T18:56:02.913 回答