【问题标题】:How to transform geometry in django rest framework gis如何在 django rest framework gis 中转换几何图形
【发布时间】:2014-04-22 08:46:18
【问题描述】:

我是 Django 新手,使用 Django Rest Framework (DRF) 和 GIS 开发 REST API。以前,我使用 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 和 GIS 中执行此操作?我在哪里可以获得 DRF 的查询示例或综合教程?

【问题讨论】:

    标签: django django-rest-framework postgis geodjango django-rest-framework-gis


    【解决方案1】:

    您可以为您的GeometryField 提供默认 SRID -

    geometry = models.GeometryField(srid=3857, null=True, blank=True)
    

    Django 会自动处理转换。有关the doctutorial 的更多详细信息。

    我在哪里可以获得关于 REST 框架 gis 的查询示例或综合教程?

    您可以在Django documentation 上找到有关 geodjango 的所有信息。 Django rest framework 是值得注意的,但 Django。

    【讨论】:

      【解决方案2】:

      已解决:

      srid 参数添加到转换函数。我正在考虑作为

      变换(srid)

      第一个参数为 srid 但应该是这样的

      变换(srid=3857)

      class MyModelViewSet(viewsets.ModelViewSet):
      
          queryset = MyModel.objects.all().transform(srid=3857)
          serializer_class = MyModelSerializer
      

      【讨论】:

      猜你喜欢
      • 2014-04-27
      • 2015-03-24
      • 2017-12-05
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 2021-05-15
      • 1970-01-01
      相关资源
      最近更新 更多