Domanda

Ho il seguente modello (semplificato):

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

Voglio creare e salvare un poligono che rappresenti un cerchio, basato su un determinato punto e raggio.

L'unico modo in cui riesco a capire come raggiungere questo obiettivo è chiamare la funzione Postgis ST_BUFFER usando RAW SQL. Spero davvero che ci sia un altro modo.

È possibile accedere ai metodi buffer GEOS?

È stato utile?

Soluzione

Sì, è possibile utilizzare il Metodo buffer GEOS:

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

Il raggio qui è nelle stesse unità delle coordinate dei punti. Funzionerà per alcuni sistemi di coordinate come UTM, ma non anche per altri.

Inoltre, mentre questo è appropriato per la costruzione di una geometria circolare, il Documentazione di Postgis Note che per eseguire le ricerche di raggio st_dwithin è più efficiente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top