3

私はdjangoでPostGISを使用しています。10進座標から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()

次に、ビューの 1 つで、 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 に答える