不支持在未设置SRID的情况下调用transform()

2024-09-27 00:16:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在生产服务器上,我收到附加的错误,而不是在开发服务器上出现的。这两个环境都是相同的(相同的django1.6和python2.7版本,使用virtualenvs相同的RDBMS版本-一个postgresql9.1服务器,在本地运行,配置与生产环境相似)。在

我想,有问题的代码在views.py

from djgeojson.views import GeoJSONLayerView

class FilteredMapLayer(GeoJSONLayerView):
    def get_queryset(self):
        qs = super(FilteredMapLayer, self).get_queryset()
        bbox_data = self.request.GET.get('bbox', None)
        if bbox_data is not None:
            bbox_data = ( x for x in map(float, bbox_data.split(',')))
            bbox = Polygon.from_bbox(bbox_data)
            features = qs.filter(geom__bboverlaps=bbox)
        else:
            features = qs
        return features

因为这是urlpattern定义,当请求时,它会触发错误

^{pr2}$

这是完整的回溯,没有提供我做错什么地方的任何信息。。。。在

Traceback (most recent call last):
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 114, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/utils/decorators.py", line 99, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/views/generic/base.py", line 69, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/utils/decorators.py", line 29, in _wrapper
    return bound_func(*args, **kwargs)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/utils/decorators.py", line 99, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/utils/decorators.py", line 25, in bound_func
    return func(self, *args2, **kwargs2)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/djgeojson/views.py", line 51, in dispatch
    return super(GeoJSONLayerView, self).dispatch(*args, **kwargs)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/views/generic/base.py", line 87, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/views/generic/list.py", line 153, in get
    return self.render_to_response(context)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/djgeojson/views.py", line 41, in render_to_response
    **options)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 335, in serialize
    self.serialize_queryset(queryset)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 277, in serialize_queryset
    self.handle_field(obj, self.geometry_field)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 177, in handle_field
    geometry = self._handle_geom(GEOSGeometry(value))
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 159, in _handle_geom
    geometry.transform(self.srid)
  File "/home/m2user/webapps/enea/local/lib/python2.7/site-packages/django/contrib/gis/geos/geometry.py", line 510, in transform
    raise GEOSException("Calling transform() with no SRID set is not supported")

。。。。因为如果我检查存储在模型中的特性,它们都定义了一个SRID(4326),而且我不会尝试调用任何转换(我想是这样的),因为我使用相同的SRID呈现视图。我在这里重复一遍,dev服务器上的相同请求可以无缝地工作。在

我目前所做的努力:

  • 从头开始重新创建数据库,重新加载所有数据。使用Django admin,我可以查看/编辑存储的特性
  • 检查了所有软件依赖项并更新了来自https://github.com/makinacorpus/django-geojson主干的代码
  • 检查的模型定义:所有的都有geom = models.MultiPolygonField(srid=4326)字段
  • 在Google上搜索类似的问题,但没有任何运气

我没有别的主意了。欢迎提出任何建议!在


Tags: djangoinpyselfhomelibpackageslocal
1条回答
网友
1楼 · 发布于 2024-09-27 00:16:46

我通过卸载然后重新安装所有的库(作为ubuntu包)、python解释器和所有代码,通过重新生成数据库(包括重新安装postgis),然后完全重新启动nginx(因此是gunicorn),解决了我的问题。但是没有更新库,所以我仍然不明白到底发生了什么。在

相关问题 更多 >

    热门问题