Ko:Relation:multipolygon
| 설명 |
|---|
| 다중다각형 관계는 복잡한 형태의 영역을 만들 때 사용됩니다. |
| 그룹: 속성 |
| 구성원 |
| 함축하는 의미 |
| 상태:사실상 표준 |
| 이 태그를 위한 도구 |
다중다각형 (multipolygon) 유형의 관계는 복잡한 형태의 영역 (
다각형)을 표현할 때 사용하는 것으로, 안쪽에 구멍이 나 있거나 각 부분이 여러 개로 분리된 형태일 경우에 주로 유용합니다. 또한 길 (way)을 중복해서 그리지 않고도, 선형 객체 (자체 속성을 지닌 테두리나 경계, 도로 등)와 그 안의 영역 (다중다각형 관계로 태그된 형상)을 구분하는 데에도 유용합니다.
오픈스트리트맵 (OSM)에서 일반 영역은 닫힌 길을 생성하고, 선이 아닌 영역을 나타내는 태그를 지정하는 식으로 표현합니다. 예를 들어 landuse=forest (숲지대) 태그가 지정된 길은 영역으로 인식되지만, highway=trunk (고속화도로)가 태그된 길은 영역으로 인식되지 않습니다. 그러나 이런 방식은 윤곽선이 하나의 길로만 구성되고 안에 구멍이 뚫려 있지 않은 영역에만 적용됩니다. 그보다 복잡한 형태의 경우, 예를 들어 윤곽선이 여러 개의 길로 나뉜 경우, 영역이 여러 개의 부분으로 분리되어 있는 경우, 또는 구멍이 있는 경우에는 다중다각형을 사용해야 합니다.
다중다각형 관계는 외곽선을 이루는 각각의 길을 선택해 outer (외선) 역할로, 내곽선을 이루는 길을 inner (내선) 역할로 지정하여 만들 수 있습니다. 길의 갯수에는 제약이 없지만, 다중다각형의 형태를 구성하기 위해 각 윤곽선의 길이 어떤 방식으로든 하나의 띠로 연결되어 있어야 합니다.
편집 방법
iD 편집기
iD 편집기에서는 한 영역과 내부 영역을 선택한 뒤 '병합' 기능으로 다중다각형을 만들 수 있습니다.
구멍이 뚫린 건물을 지도에 표현해 봅시다.

지물을 이루지 않고 있는 내부 경계선을 따라
선이나
영역을 긋습니다.

Shift 키를 누른 상태에서 지물의 내외곽 요소를 동시에 선택합니다.

요소를 선택한 상태에서 사이드바 하단의 '관계 추가' 버튼을 클릭합니다.

'부모 관계 선택'이라 쓰인 입력란을 클릭하고 펼쳐진 메뉴에서 '새 관계...'를 클릭합니다.

지물 목록에서 '다중 다각형'을 클릭합니다.

다중 다각형의 지물 유형을 선택합니다.
지물 메뉴의 문제 알림창을 확인하고 각각의 선을 'inner'(내선)이나 'outer'(외선)으로 역할을 설정하여 문제를 해결합니다.
마우스 커서를 각 문제에 올려놓으면 iD 편집기 상에서 어떤 요소의 문제를 가리키는지 확인할 수 있습니다. 해당 요소는 파란색으로 강조 표시되며, 이를 통해 다중 다각형의 외곽선인지 내곽선인지를 구분할 수 있습니다.
아래의 상황에서 포인터를 첫번째 문제에 두고 있고, 파란색으로 표시된 것이 건물의 외곽선에 해당하므로 '외선으로 설정'을 클릭하여 외곽선으로 두어야 합니다.

아래의 모습이 되었다면 지금 선택한 지물은 완벽한 다중 다각형 관계가 된 것입니다. 지물에 태그가 달려 있고, 'outer' 역할로 설정된 구성원이 한 개 이상 있으며, 'inner' 역할을 가진 구성원도 한 개 이상 있으며, 문제 알림창이 뜨지 않다는 점으로 확인이 가능합니다.

내곽선을 이루는 요소(선 / 영역) 가운데 다른 지물을 나타내는 경우가 있다면, 해당 요소를 선택하여 지물의 종류를 바꿀 수 있습니다. 그러나 외곽선은 항상 선으로 유지되어야 합니다.
아래의 예시에서는 내곽선을 이루는 영역이 안뜰 공간으로 설정된 모습입니다.

이상의 예시는 오픈스트리트맵에서 실제로 확인할 수 있습니다.
JOSM
[메뉴]-[도구]-[다중 다각형 생성]을 클릭하거나 Ctrl+B 단축키로 만들 수 있습니다.
가운데에 연못을 둔 습지를 표현해 봅시다.
-
현장의 항공 사진을 불러와 확인합니다.
-
연못의 윤곽선을 그리고 태그를 달아 줍니다.
-
주변 습지의 윤곽선을 그리되 태그는 달지 않습니다.
-
양쪽 객체를 모두 선택해 줍니다.
-
Ctrl+B를 누르거나 메뉴-도구-다중 다각형 생성을 클릭한 뒤 습지로 태그를 붙여 줍니다.
참고: 이미 그려져 있는 길을 활용하는 경우, 외곽을 이루는 길과 내곽을 이루는 길을 다중 다각형으로 합친 뒤에도 외곽의 길에 달린 태그는 그대로 유지되므로 속성에서 제거해 주어야 합니다. 과거 버전의 JOSM 편집기일 경우 이를 검사하고 업로드 전에 경고 메시지를 표시합니다. 최신 버전에서는 이 단계를 자동으로 수행합니다.
Vespucci
태그
| 태그 | 입력값 | 설명 |
|---|---|---|
type
|
multipolygon
|
애플리케이션에 본 관계의 구성원을 대상으로 영역 생성 규칙을 적용하도록 지시합니다. |
boundary |
* |
사용하지 마세요. type=boundary를 대신 사용하세요 (사용 방법은 비슷하지만 비선형 요소를 특정 역할로 추가할 수 있는 유형입니다).
|
natural
|
*
|
해당 영역을 나타내는 지물의 종류(자연, 토지이용, 건물, 인공 구조물, 편의 시설, 레저 시설, 보행자 구역, 수변 지역 등)를 설명하는 태그가 하나 이상 달려 있어야 합니다. 이 태그는 대부분 상호배타적 태그로서, 다른 종류 태그와 중복으로 쓸 수 없습니다. 종류 태그를 또 추가하면 관계를 해석할 때 상충되기 때문입니다. 필요하다면 별도의 다중다각형을 사용하세요. '하나의 지물에는 하나의 요소'가 일반적인 규칙입니다. |
landuse
|
*
| |
building
|
*
| |
man_made
|
*
| |
amenity
|
*
| |
leisure
|
*
| |
highway
|
pedestrian
| |
waterway
|
*
| |
| ... | ... | |
layer
|
*
|
정보 속성 (지물의 하위 유형, 레이어, 명칭, 출처, 메모 등)과 관련해 선택적으로 쓸 수 있는 추가 태그입니다. 여기에 해당되는 태그는 일반 영역(Area)에서의 쓰임새와 동일한 방식으로 사용하면 됩니다. |
name
|
*
| |
note
|
*
| |
| ... | ... |
구성원
| 길/마디 | 역할 | 개수 | 설명 |
|---|---|---|---|
|
1개 이상 | 해당 영역의 윤곽을 드러내는 데 필요한 외부 고리를 이루는 길(way)에 부여합니다. 딱 하나의 닫힌 길만 추가해도 됩니다. | |
|
0개 이상 | 해당 영역에 구멍의 형태가 나 있어 필요한 경우에 한하여, 내곽 고리를 이루는 길(way)에 부여합니다. 이 때 영역 내부에 완전히 들어가 있어야 합니다. 딱 하나의 닫힌 길만 추가해도 됩니다. | |
| (없음) | 0개 | 사용하지 마세요. 더 이상 이렇게 쓰지 않습니다. 역할을 공란으로 비워두면 각 툴에서 잘못 처리하거나, 각 길이 이루는 형상으로부터 실제 역할을 추정하는 과정에서 느리고 복잡한 알고리즘이 적용되다 실패하는 상황으로 이어질 수 있습니다. | |
| - | 0개 | 사용하지 마세요. | |
| - | 0개 | 사용하지 마세요. |
사용법
다중다각형을 사용할 때에는 다음의 의도에 따라야 합니다.
- 다중다각형을 묘사하는 태그 (예:
landuse=forest)는 항상 관계에 추가해야 합니다. 외곽선으로 지정된 길은 그 자체로 어떤 실체로 존재하는 경우가 아니라면 반드시 미태그 상태로 남겨두어야 합니다.[1] 일례로 네 개의 울타리로 숲이 둘러 쌓여 있는 경우, 네 개의 길은 barrier 태그를 적용하더라도 숲 관계의 'outer' 역할로 지정할 수는 있습니다. 그러나 숲 관계에 지정된 외곽선이 별다른 실체를 지니지 않고 있다면, 태그가 달리지 않은 상태의 길로 남겨두어야 한다는 뜻입니다. - 반대로 내곽선으로 지정된 길이 실체를 지니고 있다면 (예: 숲 한가운데에 연못으로 된 구멍이 난 경우), 그 길에는 반드시 그 실체를 나타내는 태그가 달려 있어야 합니다.
- 그렇지 않은 경우에는 태그가 달리지 않은 상태로 남겨두어야 합니다.
- 길의 방향은 상관 없습니다.
- 관계 구성원의 순서도 상관 없습니다 (다만 구성원 목록을 올바르게 정렬하면 다른 편집자들이 제대로 된 상태인지 확인하고 문제를 발견하는 데 도움이 될 수 있습니다).
과거에는 독일 지역을 중심으로 경계 관계에 대해 type=boundary가 아닌 이 type=multipolygon 을 주로 사용해 왔습니다. 그러나 이러한 편집 방식은 널리 받아들여지지 못했으며 더 이상 권장되지 않습니다.
다중 다각형의 올바른 상태
일반적으로 다중 다각형 관계가 사용되는 다중 다각형은 OGC 단순 지물 표준을 준수하도록 되어 있습니다. 이 기준에서 벗어나는 다중다각형(예: 고리가 교차하는 다각형 등)이라면 잘못된 다중다각형으로 인식되어야 합니다. 단 아래의 경우처럼 내부의 고리가 서로 접촉하는 경우는 예외로 하고 있습니다.
끝점을 연결했을 때 닫힌 다각형을 형성하는 길(way)의 부분집합을 올바른 다각형으로 정의합니다.
또한 첫번째 마디와 마지막 마디가 동일하지 않은 길이라면, 닫혀 있지 않은 길(way)로 정의합니다.
올바른 다중다각형 관계를 형성하기 위한 조건은 다음과 같습니다.
- 다중다각형 관계의 구성원으로 있는 길은 전체적으로 하나 이상의 닫힌 다각형을 이룰 수 있어야 합니다. 관계에 속하는 길을 모두 합쳤다면 하나 이상의 닫힌 고리를 이루어야 합니다. 다각형의 정의
- 하나의 끝점을 공유하는, 닫혀 있지 않은 길의 개수는 정확히 두 개여야 하며, 개수가 그 이상이어서는 안 됩니다. 다시 말해 아래의 그림 예시에서 하나의 검은 점에 연결된 선이 2개 이상이어서는 안 된다는 뜻입니다.
- 끝점을 공유하고 있는 길이 1개뿐일 경우, 다각형은 닫힐 수 없으며 잘못된 형태가 됩니다. 잘못된 예시 1
- 끝점을 공유하고 있는 길이 3개 이상일 경우, 닫힌 다각형이 무엇인지를 명확히 판별할 수 없어 잘못된 형태가 됩니다. 잘못된 예시 2 (단, 여러 개의 내부 고리가 서로 붙어 있는 경우에는 하나의 끝점에 짝수 개의 길이 공유하고 있을 수도 있으며 이 경우는 허용됩니다)
- 내부의 다각형은 외부 다각형을 침범해서는 안 되며, 공통 선분으로 닿아서도 안 됩니다 (위에서 설명한 것처럼 고립된 마디의 경우에는 예외). 다각형의 형태를 변경해 주면 서로 겹칠 위험을 완전히 방지할 수 있습니다.
XML 예제
외곽선과 내곽선이 하나씩 있는 경우
- 실제 지물의 태그 예시
위의 형상이 숲 속의 연못을 나타낸다고 가정해 보겠습니다. 이러한 지형지물에 태그를 지정하는 방법은 다음의 두 가지가 있습니다.
<relation id="1">
<tag k="type" v="multipolygon"/>
<member type="way" ref="1" role="outer"/>
<member type="way" ref="2" role="inner"/>
</relation>
<way id="1">
<tag k="natural" v="forest"/>
<tag k="name" v="Grey Wood"/>
<nd ref="101"/><nd ref="102"/><nd ref="103"/>
<nd ref="104"/><nd ref="105"/><nd ref="101"/>
</way>
<way id="2">
<tag k="natural" v="water"/>
<tag k="water" v="pond"/>
<tag k="name" v="Whitewater"/>
<nd ref="201"/><nd ref="202"/><nd ref="203"/>
<nd ref="204"/><nd ref="201"/>
</way>
위의 태그는 잘못된 예시입니다.다중다각형은 기하학적 표면만 나타낼 뿐 지물은 표현하지 않고 있으며, 1번 길로 정의된 숲 표면이 2번 길로 정의된 연못을 완전히 덮어 버리게 됩니다. 렌더링 프로그램이나 애플리케이션은 이렇게 태그된 지물을 제대로 처리하지 못하며, 연못이 정확하게 그려지고 채워졌더라도 숲 영역에 완전히 가려져 보이지 않게 됩니다. |
<relation id="1">
<tag k="type" v="multipolygon"/>
<tag k="natural" v="forest"/>
<tag k="name" v="Grey Wood"/>
<member type="way" ref="1" role="outer"/>
<member type="way" ref="2" role="inner"/>
</relation>
<way id="1">
<nd ref="101"/><nd ref="102"/><nd ref="103"/>
<nd ref="104"/><nd ref="105"/><nd ref="101"/>
</way>
<way id="2">
<tag k="natural" v="water"/>
<tag k="water" v="pond"/>
<tag k="name" v="Whitewater"/>
<nd ref="201"/><nd ref="202"/><nd ref="203"/>
<nd ref="204"/><nd ref="201"/>
</way>
이쪽이 올바른 (더 좋은) 예시입니다. 숲 태그가 바깥쪽 길에서 다중다각형으로 이전되고, 숲 자체는 더 이상 2번 길을 따라가는 안쪽 연못을 덮어씌우지 않으며, 2번 길도 본연의 태그를 유지하고 있습니다. 그리고 1번 길 자체는 미태그 상태로 남습니다 (이 길은 숲이나 다른 지형지물을 나타내지 않으며, 다중다각형의 전체 형태를 정의하는 데에만 쓰이게 됩니다). 태그가 없는 길이라 하더라도 한 개 이상의 관계로부터 구성원으로 걸리게 된다면 오픈스트리트맵에서 올바른 것으로 처리됩니다. |
외곽선이 한 개, 내곽선이 두 개 있는 경우
여러 개의 길이 고리를 이룬 경우
두 개의 외곽선이 동떨어진 경우
두 개의 외곽선이 동떨어진 경우 + 여러 개의 길이 고리를 이룬 경우
총집합
구멍 안에 섬이 있는 경우
내부 고리가 붙어 있는 경우
편집자들 가운데서는 인접한 내부 고리를 묶기 위해 지금의 '다중다각형' 관계를 활용하기도 합니다.
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" ref="1" role="outer" />
<member type="way" ref="2" role="inner" />
<member type="way" ref="3" role="inner" />
</relation>
다중다각형 구현 시에는 서로 맞닿은 고리를 하나의 고리로 취급하고 렌더링해야 합니다. 이는 오픈스트리트맵이 OGC 심플 피처 규격을 따르지 않는 유일한 사례입니다. 심플 피처 규격에서는 서로 맞닿은 내부 고리는 궂이 그렇게 만들 필요 없이 하나로 합칠 수 있기에, 불필요하다는 이유로 지원하지 않는 것으로 규정되어 있습니다. 하지만 오픈스트리트맵에서는 경우에 따라 별도 태그를 지정한 것이 타당할 수 있습니다. 예컨대 숲의 일부에 호수와 농지가 반씩 섞여 있다면, 숲에는 두 개의 '구멍'이 생기고 하나는 다만 내부 고리가 외부 고리와 맞닿게 되면 그 다중다각형은 잘못된 형태가 되므로 주의해 주세요. 이 부분과 관련하여 토론 페이지 (영어)에서 논의가 이루어지고 있습니다. |
![]() |
잘못된 예시
다음은 잘못된 다중다각형 관계의 몇 가지 사례입니다. 이렇게 해서는 안 된다는 점을 기억해 주세요.
다각형이 닫혀 있지 않은 경우
| 2번 길과 3번 길이 연결되지 않아 잘못된 다중다각형으로 판정된 예시입니다. |
중첩되거나 닫혀 있지 않는 구성원의 길이 같은 역할에 속해 있는 경우
| 2번 길과 3번 길의 두 끝점이 두 개 이상의 길을 공유하고 있어 잘못된 다중다각형으로 판정된 예시입니다. |
단 하나의 다각형으로 생성된 다중 다각형
| 4번과 5번 마디가 10번과 11번 미다로 재사용되어 잘못된 다중다각형으로 판정되는 예시입니다. Open Geospatial Consortium’s (OGC)의 OpenGIS 수칙에서 유효한 다각형이 아님을 규정하고 있습니다. Osmose 품질 검증 도구에서도 오류 메시지를 띄우게 됩니다. |
더 많은 예시
- 유효한 다중다각형의 예시는 Multipolygon Examples 페이지에서 더 많이 만나보실 수 있습니다.
- Proposition for examples of valid and invalid unusual configuration
추가 정보
- 다중다각형의 그리기 스타일은 항상 관계 자체의 태그를 기준으로 합니다.
- 내부 영역의 그리기는 다중다각형과는 따로 처리됩니다. 내선을 이루는 길은 영역 태그가 있는 닫힌 고리를 형성하거나 다중다각형의 외선을 이루는 길이 될 수도 있습니다.
- 경계에 대한 그리기 규칙이 포함된 영역 스타일은 충돌을 일으킬 수 있습니다. 예컨대 내선을 이루는 길에는 선형 스타일 (벽, 울타리...)와 다중다각형 영역 스타일 (숲, 농지...)이 동시에 적용될 수 있습니다. 각 소프트웨어마다 그리기 순서를 정의하는 방식이 다를 수 있지만, 일반적으로 내선을 이루는 길에는 선형 스타일을 최우선순위로, 다중다각형 영역 스타일을 차우선순위로 지정하는 것이 좋습니다.
- 다중다각형 처리를 위한 알고리즘이 제안 단계에 있습니다.
- 참고로 2017년 5월 이전에는 일부 다중다각형, 즉 해당 길이 하나뿐이거나 모든 길에 동일한 태그가 있는 경우, 외선을 이루는 길에만 태그가 지정되고, 다중다각형 간의 관계에는 태그가 지정되지 않은 경우가 있었습니다. 하지만 과거 OSM 데이터 추출본을 사용할 때에는 이러한 옛 방식의 다중다각형도 처리하여야 합니다. 자세한 사항은 옛 스타일의 다중다각형을 참조하시기 바랍니다.
편집 방식 (최선의 실천)
다중다각형을 사용하면 기하학적으로 동일한 객체를 다양한 스타일로 생성할 수 있습니다. 길만 쓰느냐 다중다각형으로 쓰느냐, 닫힌 길을 쓰느냐 열린 길을 쓰느냐, 길을 공유할 것이냐 별개로 생성할 것이냐로 갈리는 것입니다. 이로 인해 어떤 제작 방식을 사용할지에 대한 의문이 제기됩니다. 그 중에는 장점이 큰 방식도 있고, 권장되는 방식도 있습니다. 개개인의 선호도나 숙련도에 따라 선택할 수 있는 방식도 있습니다.
일반적으로 넓은 영역이 동일한 태그를 공유하는 경우, 다수의 작은 다중다각형이나 닫힌 길로 표현하거나, 소수의 큰 다중다각형으로 표현할 수 있습니다. 다중다각형 자체의 경우에도, 두 가지 매핑 방식을 생각해볼 수 있습니다.
- 첫번째 방식
- 내부 고리과 외부 고리는 가능한 한 닫힌 길로 생성하지만, 경로의 크기가 굉장히 커지는 경우(마디의 수가 약 2000개 정도)는 예외로 하는 작업방식. 별개의 다중다각형이라면 길을 공유하지 않는 것이 일반적입니다.
- 두번째 방식
- 두 다중다각형 사이의 모든 경계는 고유의 길로 표현되며, 이 길은 인접한 다중다각형과 공유됩니다. 결과적으로 다중다각형 고리는 여러 개의 열린 길로 구성되는 경우가 많습니다.
다중 폴리곤에 대한 최적의 구현 방법에 대해서는 수년간 집중적으로 논의되어 왔습니다. 관련 내용은 Talk:Relation:multipolygon 및 포럼을 참조하세요. 아직 최종적인 합의점은 도출되지 않았지만, 다음과 같은 사항을 유의해야 합니다.
- 닫혀 있는 단순한 영역을 길이 아니라 다중다각형으로 매핑하면 데이터베이스 상의 객체 수가 증가하고 렌더링 시간이 늘어납니다. 이런 식의 복잡한 간접 자원을 추가하는 일은 피해야 합니다.
- 다중다각형 간에 특정 길 구간을 공유하는 방법(두번째 방식)은 겹치는 길의 중복 표현을 방지하여 효율적인 표현이 가능합니다.
- 닫히지 않은 길로 구성된 다중 폴리곤(두번째 방식)은 경험이 부족한 사용자나 Potlatch 2와 같은 간단한 편집기로는 처리하기 어렵습니다. 이로 인해 사용자가 이를 인지하지 못한 채 다중다각형을 실수로 망가뜨리는 경우가 종종 발생했습니다.
- 숙련된 사용자의 경우, 다중다각형의 규모가 클 수록 두번째 방식에 불편함을 느꼈다는 의견이 많았습니다.
- 거대한 다중다각형은 렌더링 절차 속도를 저하시킵니다.
- JOSM에서 복잡한 형태를 편집할 때 첫번째 방식을 사용하면 더 쉽고 빠르며 오류 발생 가능성이 낮아집니다. 두번째 방식은 여러 개로 나뉜 길을 삭제, 생성, 삽입하여 올바른 다중다각형 관계에 배치해야 하기 때문입니다.
현재로서는 기하학적으로 유효한 한 다중다각형 사용 방법에 대한 공식적인 제한은 없습니다. 그러나 신중한 매핑 스타일을 채택하면 데이터베이스를 깔끔하게 유지하고 모든 사용자가 쉽게 편집하는 데 도움이 됩니다.
도움이 되는 도구
- Relation Check
- OSM Inspector - '영역' 보기로 다중다각형의 체크를 지원합니다.
잘못된 태그 사례
|
The attribute |
같이 보기
- Relation:multipolygon/validity
- The Future of Areas - 오픈스트리트맵에서 영역 처리를 개선하는 방법에 관한 토론
- Relation:multilinestring















