Как трансформировать геометрию в 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. Рамки отдыха Джанго отмечают, но Джанго.

Другие вопросы по тегам