在 Ubuntu 上将 GeoDjango 与 SpatiaLite 结合使用时出错
我试图让 GeoDjango 在 Ubuntu 11.04 上的 SpatiaLite 上运行,即使进行了非常小的设置,我也遇到了一个奇怪的错误。保存具有地理字段的模型实例是可行的,但再次加载它会失败,并出现异常:
Error encountered checking Geometry returned from GEOS C function "GEOSWKBReader_read_r".
相关我的 settings.py
testapp.models
的部分
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': '/tmp/test.db',
}
}
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
'django.contrib.gis',
'testapp',
)
:
from django.contrib.gis.db import models
class TestModel(models.Model):
name = models.CharField(max_length=10)
location = models.PointField()
testapp.admin
from django.contrib.gis import admin
from testapp.models import TestModel
admin.site.register(TestModel, admin.OSMGeoAdmin)
/edit:完全相同的代码在 PostgreSQL/postgis 上运行没有问题
I'm trying to get GeoDjango running on SpatiaLite on Ubuntu 11.04, and even with a very minimal setup, I'm hitting a strange error. Saving an instance of a model with geo-fields works, but loading it again fails with an exception:
Error encountered checking Geometry returned from GEOS C function "GEOSWKBReader_read_r".
relevant parts of my settings.py
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': '/tmp/test.db',
}
}
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
'django.contrib.gis',
'testapp',
)
testapp.models
:
from django.contrib.gis.db import models
class TestModel(models.Model):
name = models.CharField(max_length=10)
location = models.PointField()
testapp.admin
from django.contrib.gis import admin
from testapp.models import TestModel
admin.site.register(TestModel, admin.OSMGeoAdmin)
/edit: the same exact code works without problems on PostgreSQL/postgis
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我自己发现了问题:我忘记使用
models.GeoManager
作为默认管理器。这解决了我的问题:OK, I found the problem myself: I forgot to use
models.GeoManager
as the default manager. This fixes my problem: