问题标签 [django-rest-framework-gis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1240 浏览

django-rest-framework - 使用 django rest 框架 gis 降低多多边形字段的精度

我正在使用 django rest gis 加载传单地图,在我的应用程序的顶层,我正在查看世界地图。底图来自 Mapbox。我调用我的 rest-api 并返回应用程序中包含的所有单个国家的概要。目前,返回的 GeoJSON 文件大小为 1.1MB,我有更多国家要添加,所以我想减小大小以提高性能。

以下是内容示例:

文件的大小是点数和这些点精度的函数。我在想,在保留原始数据的同时减小尺寸的最便捷方法是降低几何点的精度。但是,我对如何做到这一点有点茫然。我浏览了github上的文档,没有找到任何线索。

是否有降低返回 GeoJSON 精度的字段选项?或者,有没有另一种方法来实现我想要做的事情?

非常感谢。

0 投票
4 回答
11609 浏览

python - restframework 'tuple' 对象没有属性 '_meta'

Django 抛出下一个异常:

restframework 'tuple' 对象没有属性 '_meta'

模型

看法

网址

序列化器

环境:

请求方法:GET 请求地址:http ://apiix.verinmuebles.dev/v1/bdetail/

追溯:

内部 39 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/django/core/handlers/exception.py”。 response = get_response(request)

_get_response 187 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/django/core/handlers/base.py”。响应 = self.process_exception_by_middleware(e,请求)

_get_response 185 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/django/core/handlers/base.py”。 response = Wrapped_callback(request, *callback_args, **callback_kwargs)

Wrapped_view 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/django/views/decorators/csrf.py” 58. return view_func(*args, **kwargs )

视图 87 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/viewsets.py”。 return self.dispatch(request, *args, **kwargs )

调度 474 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/views.py”。响应 = self.handle_exception(exc)

handle_exception 434 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/views.py”。self.raise_uncaught_exception(exc)

调度 471 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/views.py”。 response = handler(request, *args, **kwargs)

列表 45 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/mixins.py”。返回 self.get_paginated_response(serializer.data)

数据 701 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/serializers.py”。 ret = super(ListSerializer, self).data

数据 240 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/serializers.py”。self._data = self.to_representation(self.instance)

to_representation 619 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/serializers.py”.self.child.to_representation(item) 用于可迭代中的项目

to_representation 460 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/serializers.py”。fields = self._readable_fields

获取35中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/django/utils/functional.py” 。 res = instance. dict [self.name] = self.func(instance)

_readable_fields 354 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/serializers.py”。 self.fields.values() 中的字段

字段 340 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/serializers.py”。对于 self.get_fields().items( ):

get_fields 946 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/serializers.py”。 info = model_meta.get_field_info(model)

get_field_info 36 中的文件“/var/www/verinmuebles/current/Env/api/local/lib/python2.7/site-packages/rest_framework/utils/model_meta.py”。 opts = model._meta.concrete_model._meta

异常类型:/v1/bdetail/ 处的 AttributeError 异常值:“元组”对象没有属性“_meta”

0 投票
1 回答
1333 浏览

python - rest framework 'user_code' 是此函数的无效关键字参数请求方法:POST 请求

我正在尝试在同一端点保存 BDetail 时创建一个新的 BCode,但是当我测试时,抛出框架“user_code”是此函数请求方法的无效关键字参数:POST 请求。

BCodes 模型

B详细模型

BCodes 序列化程序

BDetail序列化器

模型视图

追溯:

原始请求

0 投票
1 回答
692 浏览

django - 使用 GeoFeatureModelSerializer 和 ListCreateAPIView 的 POST 请求需要字段

很难为这个线程找到一个好的标题。我正在使用 django、geodjango (postgis)、django-rest-framework 和 rest_framework_gis 开发 Web 服务。这些网络服务将用于交互式地图。

我的模型之一如下:

该模型的序列化器:

和端点

当我使用以下 curl 请求时:

我明白了{"fk_owner":["This field is required."],"external_id":["This field is required."],"coordinates":["This field is required."],"func_type":["This field is required."]}

但是,当我用一个简单的 ModelSerializer 替换 GeoFeatureModelSerializer 时,一切都很好。为什么 ?

我花了大约 1 个小时才找到有罪的人,我的一天工作很快就结束了。任何帮助将不胜感激!谢谢,很抱歉这么长的帖子。

[编辑 10/11]:我的解决方法是使用 2 个序列化程序:一个用于 GET,一个用于 CREATE 类 PolygonList(generics.ListCreateAPIView): queryset = Point.objects.all() filter_backends = (drfg_filters.InBBoxFilter,)

0 投票
0 回答
539 浏览

python - 带有 GeometryFilter 的 DRF ListView

我正在编写一个 API,它应该返回其几何与给定几何相交的所有对象(EWKT 或 WKT 格式,待定义)。我正在尝试使用django-rest-framework-gis.filters但到目前为止还没有工作。

我尝试过的:

模型.py:

序列化程序.py:

视图.py:

过滤器.py:

现在,当调用我的网址时:( http://localhost:8000/geodata/?geometry='LINESTRING (...)' 在 srid 3857 中也使用几何图形),我总是得到空结果(即使对于几何图形,我也确信它们确实与GeoData对象有交集)。

我误解了什么?

配置:

  • Django==1.9.10
  • django-filter==0.15.2
  • djangorestframework==3.4.7
  • djangorestframework-gis==0.10.1
0 投票
1 回答
2815 浏览

python - Django - 以 geoJSON 格式获取多边形的质心

我正在构建一个 REST API 来管理与地理相关的数据。
我的前端开发人员希望根据缩放级别以geoJSON格式检索多边形的质心。

我的多边形模型如下:

API 当前返回如下内容:

rest_framework_gis.serializers.GeoFeatureModelSerializer用来序列化我的数据。

我看到以下获取质心的方法:

  1. 向我的模型添加列质心:我不想这样做
  2. 创建我的模型的数据库视图:Django 不管理数据库视图,我不想编写自定义迁移
  3. 使用相同的模型并在extra(...)我的 orm 语句中添加一个:我尝试过,但在序列化之前或之前事情变得很困难,因为在模型中类型是Polygon,而质心是Point. 错误如下:

    /li>

预期的输出应该是:

你有什么意见 ?

0 投票
1 回答
68 浏览

django - 如何在 django-admin 页面中查看应用程序和地理数据以及在 django 页面中查看地图(多边形)的工具是什么?

我必须使用哪个工具PolygonField在页面中显示我的数据django-admin?以及如何查看应用程序django-admin

0 投票
1 回答
57 浏览

android - 无法在 android 中配置 haystack-elasticsearch 进行搜索

我从这个 [tutorial][1] 开始,但我无法理解如何设置它以在 android 应用程序中进行搜索。到目前为止,我已经使用 django REST 框架制作了一个模型,然后在 android 中使用改造来制作和GET请求。PUTPOST

现在我想按名称搜索我的产品。

上面的教程试图创建搜索 HTML 页面并在该 HTML 页面中键入查询,但我想要一个可以发送GET搜索请求的端点。

请帮助我了解如何做到这一点。

现在我应该如何使用这个ItemIndex来使用 haystack 创建搜索 url。[1]:http ://django-haystack.readthedocs.io/en/v2.6.0/tutorial.html

0 投票
2 回答
1465 浏览

django - 如何使用 django-rest-framework-(gis) 展平外键对象

我已经搜索了很长时间,以寻找一个最新的和特定于我的问题的解决方案,但还没有找到解决方案或明确的文档,说明我真正需要做什么才能使关系扁平化以符合 geojson 标准。

这个问题与我的几乎相同,但是解决方案或答案并不能解决问题,并且仍然会产生无效的 GeoJSON。

有关的

问题

我有一个包含 SRID=4326的Location模型。pointfield我还有一个TrainStation模型,它location外键Location. 当我TrainStation通过GeoFeatureModelSerializer它序列化它时,它会产生无效的 GeoJSON(参见下面的示例“无效的 geojson”)。

(当然,如果我将其存储PointFieldTrainStation模型中的哪个位置,则可以获得有效的 GeoJSON,但在我的情况下,我不能这样做,所以我需要以某种方式将其展平。)

问题

  • 如何实现像下面的“Valid GeoJSON”示例这样的输出?

研究

我是 Python 和 Django 的新手,因此我还不太擅长阅读其他人的源代码,但是我认为我可以得出结论,我需要以某种方式覆盖该to_representation()方法以获得我想要的东西,但我的搜索是如此远没有结果,所以我被困住了。

模型.py

序列化程序.py

GeoJSON 输出示例:

我已经验证了http://geojson.io上的输出以确定它是否有效。

无效的 GeoJSON

有效的 GeoJSON

这是我正在寻找的输出。

0 投票
1 回答
11597 浏览

django - 如何在 Django Rest Framework 中使用 MultiPartParser

我需要上传一个文件和一些与之关联的 JSON。但我不明白如何保存不同的部分,特别是 JSON 部分,即我能够保存图像但不能保存 JSON。

读到我需要使用 MultiPartParser,但我不知道如何将它正确集成到我的序列化程序类中。

这是我的服务器收到的多部分请求:

这是视图:

这是序列化程序:

这是模型:

谁能告诉我如何point正确序列化该字段?也许我需要更改 JSON 格式?也许我需要更改序列化程序?