Python 不支持在未设置SRID的情况下调用transform()
在生产服务器上,我收到附加的错误,而不是出现在开发服务器上。这两个环境都是相同的(相同的Django 1.6和Python 2.7版本,使用virtualenvs相同的RDBMS版本—一台postgresql 9.1服务器,在本地运行,配置与生产环境相当相似) 我想,有问题的代码在Python 不支持在未设置SRID的情况下调用transform(),python,json,django,postgresql,geodjango,Python,Json,Django,Postgresql,Geodjango,在生产服务器上,我收到附加的错误,而不是出现在开发服务器上。这两个环境都是相同的(相同的Django 1.6和Python 2.7版本,使用virtualenvs相同的RDBMS版本—一台postgresql 9.1服务器,在本地运行,配置与生产环境相当相似) 我想,有问题的代码在视图中。py: from djgeojson.views import GeoJSONLayerView class FilteredMapLayer(GeoJSONLayerView): def get_q
视图中。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
定义,在请求时会触发错误
url(r'^data.geojson$', FilteredMapLayer.as_view(model=MyModelName, precision = 2, simplify = 0.5), name='myurl'),
这是一个完整的回溯,它没有给我提供任何关于我哪里做错了的信息
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,我可以查看/编辑存储的功能
- 已检查所有软件依赖项,并从的主干更新代码
- 检查模型定义:所有模型都有
字段geom=models.MultiPolygonField(srid=4326)
- 在谷歌等网站上搜索类似的问题却没有任何运气
我没有更多的想法。欢迎任何建议 我可以通过卸载然后重新安装所有库(作为ubuntu包)、python解释器和所有代码,通过重新生成数据库(包括重新安装postgis),然后完全重新启动nginx(从而重新启动gunicorn),来解决我的问题。然而,没有更新任何库,所以我仍然不明白到底发生了什么