2014-10-30 12 views
0

를 받고 데이터를로드 ./manage.py mapit_UK_find_parentsMapIt (<a href="http://mapit.poplus.org/docs/self-hosted/import/uk/" rel="nofollow">http://mapit.poplus.org/docs/self-hosted/import/uk/</a>이 가이드 기준) : 영국 데이터와 mapit를로드 할 때이 문제를 갖는 GEOSException

Parent for Colton [10193] (CPC) was None, is now South Lakeland District Council [1763] (DIS) 
Parent for Colton [16211] (CPC) was None, is now Lichfield District Council [1908] (DIS) 
Parent for Colton [14639] (CPC) was None, is now Selby District Council [1883] (DIS) 
Parent for Colton and Mavesyn Ridware [5835] (DIW) was None, is now Lichfield District Council [1908] (DIS) 
GEOS_ERROR: TopologyException: found non-noded intersection between LINESTRING (524864 545.5, 524859 540.2) and LINESTRING (524859 540.2, 524859 540.2) at 524859 540.2 
Traceback (most recent call last): 
    File "./manage.py", line 11, in <module> 
     execute_manager(settings) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 438, in execute_manager 
     utility.execute() 
    File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in execute 
     self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 191, in run_from_argv 
     self.execute(*args, **options.__dict__) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 220, in execute 
     output = self.handle(*args, **options) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 351, in handle 
     return self.handle_noargs(**options) 
    File "/var/www/mapit/mapit/mapit/management/commands/mapit_UK_find_parents.py", line 52, in handle_noargs 
     'polygons__polygon__contains': polygon.polygon.point_on_surface, 
    File "/usr/lib/python2.7/dist-packages/django/contrib/gis/geos/geometry.py", line 593, in point_on_surface 
     return self._topology(capi.geos_pointonsurface(self.ptr)) 
    File "/usr/lib/python2.7/dist-packages/django/contrib/gis/geos/prototypes/threadsafe.py", line 49, in __call__ 
     return self.cfunc(self.thread_context.handle.ptr, *args) 
    File "/usr/lib/python2.7/dist-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__) 
django.contrib.gis.geos.error.GEOSException: Error encountered checking Geometry returned from GEOS C function "GEOSPointOnSurface_r". 
+0

질문에 'SELECT PostGIS_Full_Version();'출력을 추가하십시오. –

+0

이것은 GEOS 오류입니다. 복잡한 쿼리에서 비슷한 것을 몇 번 보았습니다. Django 자체와는 아무런 관련이 없습니다. 대부분의 경우 Django 설정 외부에서 문제가되는 지오메트리를 수정해야합니다. 이것이 넘어지는 지구 경계의 실제 지오메트리를 게시하면 도움이됩니다. –

답변

0

가져온 경계선 데이터에는 잘못된 지오메트리가 두 개 포함되어 있습니다. 지형 공간 계산에 사용하려고하면 오류가 발생하지만 오류는 가져옵니다. 다시 업데이트 명령을 사용하여 https://github.com/mysociety/mapit/commit/e20425be025cfece2c7172774a4d1202fe068704

당신은 데이터를 가져올 수 있습니다, 또는 수동 (mapit_UK_find_parents를 실행하기 전에 당신을 데이터베이스의 데이터를 수정 :

가져 오기 스크립트를 시도하고 수입 단계에서 같은 경계를 해결하기 위해 업데이트되었습니다 데이터를 저장하려면 해당 호출에 --commit이 필요합니다.) 수동으로 수정하려면 mapit_UK_fix_2014-05 (https://github.com/mysociety/mapit/blob/master/mapit_gb/management/commands/mapit_UK_fix_2014-05.py)과 유사한 스크립트를 실행해야하지만 W04/W05 행이 삭제됩니다. 경계가 2014 년 10 월 버전의 경계선에서 삭제됨에 따라 스크립트를 실행해야합니다.