이것은 이전의 질문 에 대한 후속 조치입니다 . 내가 새로운 PostGIS 사용자임을 알 수 있습니다.
데이터에서 토폴로지의 유효성을 살펴보고 랜드 커버 (폴리곤) 데이터 세트에서 약 1700 개의 토폴로지 문제를 발견했습니다. 이것들은 모두 "Ring Self_intersection"입니다.
Paul Ramsay (20 페이지) 의이 프레젠테이션 에서 유용한 정보를 사용하여 그에 따라 데이터를 버퍼링하려고 시도했습니다.
업데이트 schema.data SET the_geom = buffer (the_geom, 0.0) 여기서 isvalid (the_geom) = false 및 isvalid (buffer (the_geom, 0.0)) = true;
그러나 나는 대답을 얻습니다.
주의 사항 : 링 자체 교차점 또는 근처에서 링 자체 교차점 (편집 됨) 오류 : "sgm_buffer"관계의 새 행이 점검 제한 조건 "enforce_geotype_the_geom"을 위반합니다.
********** 오류 **********
오류 : "sgm_buffer"관계에 대한 새 행이 점검 제한 조건 "enforce_geotype_the_geom"을 위반합니다. SQL 상태 : 23514
나는 또한 시도했다 :
업데이트 csgn.sgm_buffer SET the_geom = buffer (the_geom, 0.0)
그리고 얻다:
오류 : "sgm_buffer"관계에 대한 새 행이 점검 제한 조건 "enforce_geotype_the_geom"을 위반합니다.
********** 오류 **********
오류 : "sgm_buffer"관계에 대한 새 행이 점검 제한 조건 "enforce_geotype_the_geom"을 위반합니다. SQL 상태 : 23514
그렇다면이 버퍼 기술이 내 문제에서 작동하지 않는다고 가정합니까? 아니면 내가 잘못하고 있습니까?
램지 씨는 같은 문서에서 "8의 다각형 그림"을 다루는 추가 기술을 제안하기 위해 계속합니다. 나는 이것을 코드로 작성하는 방법 (또는 그것이하는 일과 그것이 나를 도울 것인지)을 완전히 이해하지 못한다.
ST_BuildArea (ST_Union ( 'LINESTRING EMPTY', ST_ExteriorRing ( 'POLYGON ((...))')을 선택하십시오.
그래서 .. 누구든지 도울 수 있습니까? 이것은 PostGIS의 제한된 시간표와 제한된 기술로 진정한 악몽을 증명합니다.
ST_Multi()
모든 다각형을 MULTIPOLYGON
s로 설정 해야 할 수도 있습니다 (이것은 가정 임)