GeoDjango: исключения для основных географических запросов

У меня возникают проблемы с географическими запросами, когда GeoDjango работает на SpatiaLite в моей среде разработки.

from django.contrib.gis.db import models

class Test(models.Model):
    poly = models.PolygonField()
    point = models.PointField()
    geom = models.GeometryField()
    objects = models.GeoManager()

Тестирование через оболочку:

>>> from geotest.models import Test
>>> from django.contrib.gis.geos import GEOSGeometry
>>> 
>>> point = GEOSGeometry("POINT(0 0)")
>>> point
<Point object at 0x105743490>
>>> poly = GEOSGeometry("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))")
>>> poly
<Polygon object at 0x105743370>
>>> 

Используя эти определения, давайте попробуем выполнить некоторые базовые географические запросы. Первый contains:

>>> Test.objects.filter(point__within=poly)
Assertion failed: (0), function appendGeometryTaggedText, file WKTWriter.cpp, line 228.
Abort trap

И оболочка джанго умирает. И с within:

>>> Test.objects.filter(poly__contains=point)
GEOS_ERROR: Geometry must be a Point or LineString
Traceback (most recent call last):
...
GEOSException: Error encountered checking Coordinate Sequence returned from GEOS C function "GEOSGeom_getCoordSeq_r".
>>> 

Другие комбинации также вызывают множество исключений. Я должен упустить что-то очевидное, поскольку они очень простые. Любые идеи?


person onurmatik    schedule 27.10.2012    source источник


Ответы (1)


Ваши запросы кажутся правильными.

Вы проверили, что выполнили все требования?

https://docs.djangoproject.com/en/1.4/ref/contrib/gis/install/#spatial-database

Вы правильно инициализировали свою базу данных spaceite?

https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/spatialite/#creating-a-spatial-database-for-spatialite

person Étienne Loks    schedule 27.10.2012
comment
Спасибо за ответ. я удалил существующую базу данных и начал с новой с нуля, но я получаю те же самые ошибки :( - person onurmatik; 28.10.2012