Django - 使用GeoDjango从十进制坐标向PostgreSQL数据库添加一个点

3

我正在使用PostGIS和Django。我知道如何从十进制坐标向PostgreSQL添加"点",但是如何使用GeoDjango添加它呢?

以下是我在PostgreSQL中的操作方法:

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

我该如何在Django中做同样的事情?

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()

使用GeoDjango,我想对具有POINT几何字段的表执行更新查询。 - avatar
不太清楚SO是如何工作的。但我已经更新了我的帖子,希望这更有用。 - canisrufus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接