Как трансформировать геометрию в django rest framework gis
Я новичок в Django и занимаюсь разработкой REST API с использованием Django Rest Framework (DRF) и ГИС. Ранее я использовал запрос SQL для преобразования геометрии:
select
id,
name,
round(value::numeric, 2) as value,
st_transform(geometry, 3857) as geometry
from
my_model
...
class MyModel(models.Model):
name = models.CharField(max_length=50, blank=True)
value = models.FloatField()
geometry = models.GeometryField(null=True, blank=True)
class Meta:
db_table = u'my_model'
def __unicode__(self):
return '%s' % self.name
Вот сериализатор класса:
class MyModelSerializer(serializers.GeoModelSerializer):
class Meta:
model = MyModel
fields = ('id', 'name', 'value', 'geometry')
Я также пытался сделать это, но не могу преобразовать вывод
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all().transform(3857)
serializer_class = MyModelSerializer
Как я могу сделать это в Django Rest Framework и ГИС? Где я могу получить образец запроса или подробное руководство по DRF?
2 ответа
Решено:
Добавьте аргумент srid для преобразования функции. Я рассматривал как
преобразование (SRID)
первый аргумент как srid, но должен быть таким
преобразование (SRID =3857)
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all().transform(srid=3857)
serializer_class = MyModelSerializer
Вы можете предоставить SRID по умолчанию для вашего GeometryField
-
geometry = models.GeometryField(srid=3857, null=True, blank=True)
А Django автоматически выполнит конвертацию. Подробнее о документе и учебнике.
Где я могу получить образец запроса или подробный учебник для ГИС инфраструктуры отдыха?
Вы можете найти все о геоджанго в документации Django. Рамки отдыха Джанго отмечают, но Джанго.