Question

J'ai le modèle suivant (simplifié):

class Zone(gismodels.Model):
    name = gismodels.CharField()
    poly = gismodels.PolygonField()

Je veux créer et enregistrer un polygone qui représente un cercle, en fonction d'un point donné et d'un rayon donné.

Le seul moyen de comprendre comment y parvenir, consiste à appeler la fonction postgis st_buffer à l'aide de SQL brut.J'espère vraiment qu'il y a une autre façon.

est-il possible d'accéder aux méthodes de mémoire tampon géos?

Était-ce utile?

La solution

Oui, il est possible d'utiliser le géosMéthode tampon :

>>> from django.contrib.gis import geos
>>> center = geos.Point(5, 5)
>>> radius = 2
>>> circle = center.buffer(radius)
>>> circle
<Polygon object at 0x1029d8370>

Le rayon ici est dans les mêmes unités que les coordonnées des points.Cela fonctionnera pour certains systèmes de coordonnées telles que UTM, mais pas aussi bien pour les autres.

De plus, s'il convient de construire une géométrie circulaire, le Documentation postgis Notesque pour faire des recherches de rayon, st_dwithin est plus efficace.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top