django - добавить ТОЧКУ в базу данных PostgreSQL, используя GeoDjango из десятичных координат - PullRequest
1 голос
/ 25 февраля 2011

Я использую PostGIS с django.Я знаю, как добавить «POINT» в PostgreSQL из десятичных координат, но как мне добавить его, используя GeoDjango?

Вот как я делаю это в PostgreSQL:

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

Каксделать то же самое с Джанго?

1 Ответ

4 голосов
/ 25 февраля 2011

Вот что, по-моему, вы просите:

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)

Я полагаю, что это не идеально синтаксически, но модель API GeoDjango: http://docs.djangoproject.com/en/dev/ref/contrib/gis/model-api/ и руководство по обычным моделям геоджанго: 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()
...