我正在将 PostGIS 与 django 一起使用。我知道如何从十进制坐标在 PostgreSQL 上添加“POINT”,但如何使用 GeoDjango 添加它?
这就是我在 PostgreSQL 中的做法:
UPDATE "my_table" SET coordinates=GeometryFromText('POINT(-93.7505 31.3059)',4269) WHERE id=101;
我如何从 django 做同样的事情?
这就是我认为你要求的:
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()