GeoDjango GEOS API Abort Trap Ошибки функции GEOS

Я сталкиваюсь с некоторыми повторяющимися проблемами в моих приложениях geodjango, которые, кажется, происходят из GEOS. Я получаю ошибки, которые не включают информацию о трассировке стека, поэтому я не знаю, как их отлаживать. Я был в состоянии изолировать проблему с конкретными командами, которые используют GEOS.

ОБНОВЛЕНИЕ: ниже приведен еще более простой контрольный пример, который выдает ошибку. Я сомневаюсь, что это даст вам ошибку, и я сильно подозреваю, что это связано с моей машиной, моей средой или моей сборкой GEOS. Любые советы о том, как работать через это, с благодарностью.

>>> from django.contrib.gis.geos import Polygon, MultiPolygon
>>> p1 = Polygon( ((0, 0), (0, 1), (1, 1), (0, 0)) )
GEOS_ERROR: Shell is not a LinearRing
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/benjamin/projects/artgeese/lib/python2.7/site-packages/django/contrib/gis/geos/polygon.py", line 42, in __init__
    polygon = self._create_polygon(n_holes + 1, (ext_ring,) + init_holes)
  File "/Users/benjamin/projects/artgeese/lib/python2.7/site-packages/django/contrib/gis/geos/polygon.py", line 85, in _create_polygon
    return capi.create_polygon(shell, holes_param, c_uint(n_holes))
  File "/Users/benjamin/projects/artgeese/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/threadsafe.py", line 49, in __call__
    return self.cfunc(self.thread_context.handle.ptr, *args)
  File "/Users/benjamin/projects/artgeese/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/errcheck.py", line 43, in check_geom
    raise GEOSException('Error encountered checking Geometry returned from GEOS C function "%s".' % func.__name__)
GEOSException: Error encountered checking Geometry returned from GEOS C function "GEOSGeom_createPolygon_r".

Вот разбивка видов ошибок, с которыми я сталкиваюсь

>>> basins = GroundWater.objects.all()
>>> geoms = [b.geom() for b in basins]
>>> geom = geoms[3]
>>> print type( geom )
<class 'django.contrib.gis.geos.collections.MultiPolygon'>

>>> polygon = geom.cascading_union # this is ok
>>> print type( polygon )
<class 'django.contrib.gis.geos.polygon.Polygon'>

>>> print polygon
# this receives the following error and shuts down the dev server
Assertion failed: (0), function appendGeometryTaggedText, file WKTWriter.cpp,
line 228.
Abort trap

>>> print polygon.num_interior_rings 
# causes an error, does not stop the server
GEOS_ERROR: Argument is not a Polygon
and
Error encountered in GEOS C function "GEOSGetNumInteriorRings_r".

>>> print polygon.coords
# causes an error, does not stop the server
GEOS_ERROR: Argument is not a Polygon
and
Error encountered in GEOS C function "GEOSGetNumInteriorRings_r".

>>> print polygon.valid
GEOS_ERROR: UnsupportedOperationException: 
Error encountered on GEOS C predicate function "GEOSisValid_r".

Любые идеи о том, как я могу решить или отладить эту ситуацию? Спасибо!

Обратите внимание, что проблема не является специфической для этого многоугольника. Если я выберу любую другую функцию, я получу те же ошибки.

Вот статистика по окружающей среде:

Mac OS X==10.6.8
Python==2.7.1
Django==1.4.2
psycopg2==2.4.5

                                         postgis_full_version                                          
---------------------------------------------------------------------------------
 POSTGIS="1.5.1" GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.3"

Я установил GEOS и GDAL, используя двоичные файлы KyngChaos, и установил их в системный путь

export PATH=/Library/Frameworks/GDAL.framework/Versions/1.9/Python/site-packages:$PATH
export PATH=/Library/Frameworks/UnixImageIO.framework/Programs:$PATH
export PATH=/Library/Frameworks/PROJ.framework/Programs:$PATH
export PATH=/Library/Frameworks/GEOS.framework/Programs:$PATH
export PATH=/Library/Frameworks/SQLite3.framework/Programs:$PATH
export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH
export PATH=/usr/local/pgsql/bin:$PATH

[РЕДАКТИРОВАТЬ: по запросу, геометрия непосредственно из базы данных как WKT]

0 ответов

Другие вопросы по тегам