django-从十进制坐标中使用GeoDjango在PostgreSQL数据库中添加一个POINT

ava*_*tar 2 gis django postgis geodjango

我在Django中使用PostGIS。我知道如何通过十进制坐标在PostgreSQL上添加“ POINT”,但是如何使用GeoDjango添加它?

这是我在PostgreSQL中执行的操作:

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

我如何用Django做同样的事情?

can*_*fus 5

这是我想您要的:

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

class my_points(models.Model):
  name = models.CharField(max_length = 100)
  coords = models.PointField()
Run Code Online (Sandbox Code Playgroud)

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

a = my_point(name="example", coords=x,y)
Run Code Online (Sandbox Code Playgroud)

我认为这在语法上并不是完美的,但是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()
Run Code Online (Sandbox Code Playgroud)