"홀은 쉘 외부에 있습니다"를 수정하는 방법


9

QGIS 플러그인 " Geometry Updater "에 의해 지오메트리가 업데이트 된 다각형 모양의 데이터 세트가 있습니다. 이제 PostGIS에서 "Hole lies shell outside" 오류 메시지와 함께 잘못된 형상을 얻는 문제가 있습니다 . 그러나 QGIS에서 지오메트리를 관찰 할 때 실제로 두 가지 모양이 있습니다. 하나는 기본 지오메트리이고 다른 하나는 구멍입니다.

여기에 이미지 설명을 입력하십시오

그 이유는 지오메트리 유형이로 설정되어 있기 때문이라고 생각했습니다 ST_Polygon. 그러나로 변경 한 후에도 ST_MultiPolygon오류는 여전히 남아 있습니다. 누군가이 문제를 해결하는 방법을 알고 있습니까? 또한 QGIS에서 수동으로도 괜찮습니다.

편집하다:

그림에서 모양의 원래 WKT입니다 (로 변경하기 전 ST_MultiPolygon).

POLYGON ((681328.211640639 5312556.84866055,681333.876018639 5312566.85338355,681344.126811639 5312584.17146655,681360.13777864 5312605.81168455,681368.571629639 5312620.16794654,681375.15817664 5312633.84801255,681380.74133464 5312647.74367554,681384.01769064 5312658.41482554,681392.01169764 5312694.63471254,681393.07199764 5312701.83700354,681389.16681464 5312705.85459254,681379.79126564 5312704.26135554,681393.93193764 5312715.39845154,681401.81727164 5312723.43382354,681398.09962564 5312710.95653254,681395.19739764 5312693.68448654 , 681387.20535464 5312657.40285554,681383.87846764 5312644.38168654,681378.69327164 5312632.35257854,681367.00831364 5312610.47778954,681346.401239639 5312581.83289054,681336.365640639 5312564.27437955,6813435413453134531345313453134531345313453535952225764 5312565.30077054,681395.29993964 5312563.90629854,681410.98915364 5312545.67508754,681413.79585564 5312536.98783954,681415.77221864 5312530.93185454,681416.991529641 5312523.86320254,681406.38747164 5312515.12414654,681403.96790864 5312507.57002154,681395.94924164 5312514.30082354,681394.08765664 5312516.71419154,681390.91027864 5312518.71529654,681387.07111564 5312520.63375054,681381.90838164 5312522.38690354,681376.13571264 5312525.04785255,681366.362498639 5312530.79640254,681349.071127639 5312540.57236955,681332.287335639 5312550.05537054 , 681321.992430639 5312555.23135255,681328.211640639 5312556.84866055), (681306.938491638 5312528.24474655,681318.811081639 5312521.75881455,681324.059996639 5312518.58690655,681330.950098639 5312514.7250915589685353535353535353535353535353535353535353535353535353535954885354,681356.654879639 5312493.59559054,681360.976303639 5312488.23147354,681363.302624639 5312486.88334655,681366.15656264 5312485.92264755,681369.80127664 5312486.22287554,681375.12800564 5312488.49191954,681382.62287464 5312493.11590554,681385.88903564 5312494.88743254,681387.74606564 5312495.25494754,681393.90959164 5312496.00535955,681389.15656464 5312487.38890554,681365.00476264 5312481.62211554,681327.726005639 5312490.52129555,681306.883836639 5312494.37629255,681298.999414638 5312496.84720955,681306.938491638 5312528.24474655) )90959164 5312496.00535955,681389.15656464 5312487.38890554,681365.00476264 5312481.62211554,681327.726005639 5312490.52129555,681306.883836639 5312494.37629255,681298.999414638 5312496.84720955,681306.938491638 5312528.2447465590959164 5312496.00535955,681389.15656464 5312487.38890554,681365.00476264 5312481.62211554,681327.726005639 5312490.52129555,681306.883836639 5312494.37629255,681298.999414638 5312496.84720955,681306.938491638 5312528.24474655


3
일반적으로 이것은 정점의 방향 때문입니다. 다각형 중 하나가 시계 방향이고 다른 다각형이 시계 반대 방향 인 경우 두 번째 다각형은 구멍이라고 생각합니다. 불행히도 나는 그것을 고치는 방법을 모른다
ylka

이 기능을 텍스트 편집기에 복사하여 붙여 넣으면 다중 다각형으로 변경 한 다음 QuickWKT를 사용하여 다시 가져올 수 있습니다.
Ian Turton

기능의 WKT를 게시 할 수 있습니까?
thibautg

@thibautg 난 그냥 WKT를 추가
JoeBe

답변:


10

실제로 PostGIS에서 ST_IsValidReasonHole lies outside shell[681306.938491638 5312528.24474655]

ST_MakeValid가 MULTIPOLYGON으로 변경합니다.

MULTIPOLYGON(((681306.938491638 5312528.24474655,681318.811081639 5312521.75881455,681324.059996639 5312518.58690655,681330.950098639 5312514.72509155,681336.554227639 5312510.82277555,681341.802513639 5312506.35305054,681352.668573639 5312497.54885354,681356.654879639 5312493.59559054,681360.976303639 5312488.23147354,681363.302624639 5312486.88334655,681366.15656264 5312485.92264755,681369.80127664 5312486.22287554,681375.12800564 5312488.49191954,681382.62287464 5312493.11590554,681385.88903564 5312494.88743254,681387.74606564 5312495.25494754,681393.90959164 5312496.00535955,681389.15656464 5312487.38890554,681365.00476264 5312481.62211554,681327.726005639 5312490.52129555,681306.883836639 5312494.37629255,681298.999414638 5312496.84720955,681306.938491638 5312528.24474655)),((681328.211640639 5312556.84866055,681333.876018639 5312566.85338355,681344.126811639 5312584.17146655,681360.13777864 5312605.81168455,681368.571629639 5312620.16794654,681375.15817664 5312633.84801255,681380.74133464 5312647.74367554,681384.01769064 5312658.41482554,681392.01169764 5312694.63471254,681393.07199764 5312701.83700354,681389.16681464 5312705.85459254,681379.79126564 5312704.26135554,681393.93193764 5312715.39845154,681401.81727164 5312723.43382354,681398.09962564 5312710.95653254,681395.19739764 5312693.68448654,681387.20535464 5312657.40285554,681383.87846764 5312644.38168654,681378.69327164 5312632.35257854,681367.00831364 5312610.47778954,681346.401239639 5312581.83289054,681336.365640639 5312564.27437955,681340.423191639 5312560.69415655,681365.23709764 5312567.84133655,681374.16498264 5312570.47104354,681390.52225764 5312565.30077054,681395.29993964 5312563.90629854,681410.98915364 5312545.67508754,681413.79585564 5312536.98783954,681415.77221864 5312530.93185454,681416.991529641 5312523.86320254,681406.38747164 5312515.12414654,681403.96790864 5312507.57002154,681395.94924164 5312514.30082354,681394.08765664 5312516.71419154,681390.91027864 5312518.71529654,681387.07111564 5312520.63375054,681381.90838164 5312522.38690354,681376.13571264 5312525.04785255,681366.362498639 5312530.79640254,681349.071127639 5312540.57236955,681332.287335639 5312550.05537054,681321.992430639 5312555.23135255,681328.211640639 5312556.84866055)))

3

OpenJUMP의 "Make Geometryries Valid"도구를 사용해 보았으며 수정 된 형상을 다중 다각형으로 반환합니다. OpenJUMP는 자체 makeValid 기능을 사용하고 있습니다. QGIS에 동등한 기능이 있는지는 모르겠지만 PostGIS에 이미 기능이 있으므로 ST_MakeValid http://postgis.net/docs/ST_MakeValid.html을 사용할 수 있습니다 .

다중 (((681328.211640639 5312556.84866055, 681333.876018639 5312566.85338355, 681344.126811639 5312584.17146655, 681360.13777864 5312605.81168455, 681368.571629639 5312620.16794654, 681375.15817664 5312633.84801255, 681380.74133464 5312647.74367554, 681384.01769064 5312658.41482554, 681392.01169764 5312694.63471254, 681393.07199764 5312701.83700354, 681389.16681464 5312705.85459254, 681379.79126564 5312704.26135554, 681393.93193764 5312715.39845154, 681401.81727164 5312723.43382354, 681398.09962564 5312710.95653254, 681395.19739764 5312693.68448654, 681387.20535464 5312657.40285554,681383.87846764 5312644.38168654, 681378.69327164 5312632.35257854, 681367.00831364 5312610.47778954, 681346.401239639 5312581.83289054, 681336.365640639 5312564.27437955, 681340.423191639 5312560.69415655, 681365.23709764 5312567.84133655, 681374.16498264 5312570.47104354, 681390.52225764 5312565.30077054, 681395.29993964 5312563.90629854, 681410.98915364 5312545.67508754, 681413.79585564 5312536.98783954, 681415.77221864 5312530.93185454, 681416.991529641 5312523.86320254, 681406.38747164 5312515.12414654, 681403.96790864 5312507.57002154, 681395.94924164 5312514.30082354 , 681394.08,765,664 5312516.71419154, 681390.91027864 5312518.71529654, 681387.07111564 5312520.63375054, 681381.90838164 5312522.38690354, 681376.13571264 5312525.04785255, 681366.362498639 5312530.79640254, 681349.071127639 5312540.57236955, 681332.287335639 5312550.05537054, 681321.992430639 5312555.23135255, 681328.211640639 5312556.84866055)), ((681306.938491638 5312528.24474655, 681318.811081639 5312521.75881455, 681324.059996639 5312518.58690655, 681330.950098639 5312514.72509155, 681336.554227639 5312510.82277555, 681341.802513639 5312506.35305054, 681352.668573639 5312497.54885354, 681356.654,879,639 5312493.59559054, 681360.976303639 5312488.23147354, 681363.302624639 5312486.88334655, 681366.15656264 5312485.92264755, 681369.80127664 5312486.22287554, 681375.12800564 5312488.49191954, 681382.62287464 5312493.11590554, 681385.88903564 5312494.88743254, 681387.74606564 5312495.25494754, 681393.90959164 5312496.00535955, 681389.15656464 5312487.38890554, 681365.00476264 5312481.62211554, 681327.726005639 5312490.52129555, 681306.883836639 5312494.37629255, 681298.999414638 5312496.84720955, 681306.938491638 5312528.24474655)))681363.302624639 5312486.88334655, 681366.15656264 5312485.92264755, 681369.80127664 5312486.22287554, 681375.12800564 5312488.49191954, 681382.62287464 5312493.11590554, 681385.88903564 5312494.88743254, 681387.74606564 5312495.25494754, 681393.90959164 5312496.00535955, 681389.15656464 5312487.38890554, 681365.00476264 5312481.62211554, 681327.726005639 5312490.52129555, 681306.883836639 5312494.37629255, 681298.999414638 5312496.84720955, 681306.938491638 5312528.24474655)))681363.302624639 5312486.88334655, 681366.15656264 5312485.92264755, 681369.80127664 5312486.22287554, 681375.12800564 5312488.49191954, 681382.62287464 5312493.11590554, 681385.88903564 5312494.88743254, 681387.74606564 5312495.25494754, 681393.90959164 5312496.00535955, 681389.15656464 5312487.38890554, 681365.00476264 5312481.62211554, 681327.726005639 5312490.52129555, 681306.883836639 5312494.37629255, 681298.999414638 5312496.84720955, 681306.938491638 5312528.24474655)))681375.12800564 5312488.49191954, 681382.62287464 5312493.11590554, 681385.88903564 5312494.88743254, 681387.74606564 5312495.25494754, 681393.90959164 5312496.00535955, 681389.15656464 5312487.38890554, 681365.00476264 5312481.62211554, 681327.726005639 5312490.52129555, 681306.883836639 5312494.37629255, 681298.999414638 5312496.84720955, 681306.938491638 5312528.24474655)))681375.12800564 5312488.49191954, 681382.62287464 5312493.11590554, 681385.88903564 5312494.88743254, 681387.74606564 5312495.25494754, 681393.90959164 5312496.00535955, 681389.15656464 5312487.38890554, 681365.00476264 5312481.62211554, 681327.726005639 5312490.52129555, 681306.883836639 5312494.37629255, 681298.999414638 5312496.84720955, 681306.938491638 5312528.24474655)))681365.00476264 5312481.62211554, 681327.726005639 5312490.52129555, 681306.883836639 5312494.37629255, 681298.999414638 5312496.84720955, 681306.938491638 5312528.24474655)))681365.00476264 5312481.62211554, 681327.726005639 5312490.52129555, 681306.883836639 5312494.37629255, 681298.999414638 5312496.84720955, 681306.938491638 5312528.24474655)))


JTS / GEOS에는 실제로 makeValid기능 이 없습니다 . OpenJUMP에있는 것은 PostGIS와 마찬가지로 해당 응용 프로그램을 위해 맞춤 제작되었습니다.
dbaston

@ dbaston, 감사합니다 . 사실 sourceforge.net/p/jts-topo-suite/mailman/message/34695185를 확인해야합니다 .
user30184

나는 대답을 편집했다. MakeValid은 위시리스트 JTS에있을 것 같다 slideshare.net/jgarnett/state-of-jts-2017 .
user30184
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.