Ko:Relation:boundary

From OpenStreetMap Wiki
Jump to navigation Jump to search
boundary
설명
정치(영토)·행정·자연보호 등의 목적으로 사용되는 경계를 정의합니다. 설명을 편집 및 번역합니다.
OSM Carto에서 렌더링
28
그룹: boundaries
구성원
  • way - outer
  • way - inner
  • node - admin_centre
  • node - label
  • relation - subarea
같이 보기
상태:사실상 표준

boundary=* 관계는 정치, 행정, 자연보호 등의 목적으로 사용되는 경계를 정의하는 데 사용됩니다. 경계 관계다중 다각형과 유사한 정의를 따르고 있습니다. 즉 경계 관계는 최소 1개 이상의 외부 경계선을 갖추어야 하며, 월경지나 위요지[1]는 부가 경계선을 사용하여 정의한다는 뜻입니다.

관계로 표현되는 경계는 위상적, 논리적인 면에서 서로 중복될 수 있습니다. 예를 들어, 한 국가의 주(州)는 국가의 국경을 일부 공유하고, 다른 주와도 서로 간의 경계를 공유합니다. 따라서 하나의 경계선은 여러 경계 관계(예: 국가, 주, 시군구, 기초자치단체)에 동시에 묶일 수 있습니다. 이러한 접근 방식을 통해 경계의 모든 부분을 쉽게 연결하고 중복된 경계선이 여러 개 생성되는 것을 방지할 수 있습니다.

일부 경계는 강과 같은 실제 지형지물에 명확하게 표시되거나 그것을 따르고 있어 실체를 확인할 수 있지만, 현장에서 검증할 수 없는 경계도 많으므로 외부 출처에서 가져와야 하는 경우가 많습니다. 그러나 경계를 숲이나 강과 같은 실제 지형지물에 직접 연결하거나 이러한 지형지물의 흔적을 경계로 재사용하는 것은 피해야 합니다 (하나의 지형지물에는 하나나 요소만 사용하기). 이러한 지형지물은 시간이 지남에 따라 현실에서 변화하고 오픈스트리트맵에서도 업데이트되지만, 일반적으로 경계의 형태는 그대로 유지되기 떄문입니다. 단, 법령 등으로 경계 자체가 해당 ​​지형지물로 정의된 경우에는 예외적으로 허용될 수 있습니다.

관계로 구현

경계가 존재하는 구역은 type=boundary 관계로 나타내는 것이 좋습니다. 그 관계의 구성원을 이루는 은 태그가 없는 상태로 둘 수 있으며, 필요에 따라 role outerrole inner의 역할을 매길 수도 있습니다. 다만 예전에 등록된 데이터의 처리를 위해, 닫힌 길 가운데 boundary=* 태그가 달린 것도 지원하는 데이터 활용처가 많습니다. 과거에는 type=multipolygon 관계를 쓰거나 name:left=*name:right=* 태그를 길에 매긴다던가 하는 다른 편집 방식도 존재하였으나 지금은 대부분 사용되지 않습니다.

관련 태그 현황은 다음과 같습니다.

관계 태그

입력값 설명
type boundary type=multipolygon도 사용할 수는 있지만 경계 관계 자체에는 더 이상 쓰지 않습니다. (소프트웨어 지원을 참고해 주세요).
boundary administrative 행정구역 경계에 사용되며, 강의 중심선이나 해안선으로부터 12해리, 즉 22km 떨어진 영해 기준선에도 사용됩니다. 다른 유형의 경계에 대해선 boundary=*를 참고해 주세요.
name (이름)
admin_level (행정구역 단계 참고)

2에서 10까지의 숫자값을 입력합니다. 입력값의 기준은 각 나라의 행정구역 단계마다 다릅니다.

관계 구성원

요소 역할 개수 설명
way role outer ! 1+ 구역의 외부 경계를 이룹니다. 외부 경계를 이루는 길은 하나로 합쳤을 때 하나의 닫힌 고리를 형성하고 있어야 합니다. 특정 영역이 분리되어 있는 경우(예: 군도)에는 여러 개의 고리를 형성할 수도 있습니다.
닫히지 않은 선형 경계에 대해서는 Relations/Proposed/boundary segment를 참고하세요.
way role inner ? 0+ 구역의 내부 경계 (월경지 등)를 이룹니다.
way <empty>  0 더 이상 쓰지 않음

경계의 역할에는 role outerrole inner를 꼭 매겨 주시기 바랍니다. 구성원의 역할을 공란으로 비워둘 경우, role outer이 매겨진 것으로 처리하는 툴도 있지만, 기하학적 형태를 어떻게든 정의하기 위해 복잡한 연산을 거치는 툴도 있으므로 주의해야 합니다.

node role admin_centre ? 0–1 행정 중심지 (수도와 시도청 소재지 등)을 나타내는 마디에 해당됩니다. 일반적으로 도시와 읍내, 마을 (경계 수준에 따라 다르며 자세한 것은 place=*를 참조하세요)에 적용됩니다. 특정 영토의 수도를 나타내는 데에 쓰일 뿐, 그 영토를 관할하는 지방 청사에는 해당되지 않습니다.
node role label ? 0–1 지명을 나타내는 마디에 해당됩니다. 해당 지역의 이름을 나타내는 지점에 배치하는 것이 일반적입니다. 레이블 (label)이라는 말 자체는 이름표라는 뜻이지만, 그 배치를 어떻게 해야 할지 통상적인 매커니즘이 따로 있지는 않으므로, 경계의 '문화적 중심지'나 '논리적 중심점'을 생각해볼 수 있습니다. 마디를 배치할 때 지역의 경계가 무엇인지 모르거나 불분명한 경우, 그 마디를 점 지물로서 매핑할 필요가 있으므로 위치를 어디로 할 지 고려할 필요가 있습니다. 도시의 중심은 경계의 지리적 중심점이 아니라 시청이나 도심 광장, 주요 가로망이 하나로 모인 지점인 것으로 생각할 수 있습니다. 일례로 미국 시카고의 이름을 나타내는 마디는 도시가 내륙으로 확장해 나갔음에도 불구하고 여전히 호숫가와 인접한 도심지에 붙어 있습니다. 한국의 지방 도시에서도 관청이 위치한 지점에 이름표 마디를 배치한 경우를 많이 볼 수 있습니다.

경계의 일부가 좁고 움푹 들어간 형태를 취하거나, 고립된 지역이 있을 경우에도 유용합니다. 전자의 경우 기본적으로 경계 테두리 중앙에 레이블을 배치하게 되면 경계 영역 밖으로 완전히 벗어날 수 있기 때문이고, 후자의 경우 본토와 같은 이름임을 밝여야 하기 때문입니다.

지도 스타일마다 이름표가 배치되는 위치가 다르다는 점도 유의해 주세요. 각 스타일에 따라 표시되는 객체도 다르고, 이름표의 언어도 다르고, 양식도 다르고, 다른 객체를 가리지 않도록 최적의 선후 관계를 어떻게 채택했는지도 다릅니다 (예컨대 일반 지도에서는 해안 도시의 이름표를 바다 위에 배치하게 되고, 해로를 나타내는 지도는 내륙에 배치하게 됩니다). 따라서 이러한 노드의 배치가 특정 지도의 스타일만 보고 이루어지진 않았는지, 렌더러에 맞춰 배치하진 않았는지 살펴야 합니다.

role label 마디 자체에는 place=* 태그를 달 수 있으며, 행정 구역의 유형에 따른 태그값 (place=country, place=state, place=county)을 넣을 수 있습니다. 국가 태그가 달린 프랑스의 이름표가 그 예시입니다.

relation role subarea ? 0+ 선택 사항 / 논란의 여지[2] / 중복 가능성 있음

본 관계보다 아랫 단계의 구역으로 속해 있는 관계에 해당됩니다. 중복 가능성의 경우, 다른 관계에서도 똑같은 관계가 똑같은 역할로 참조될 수 있다는 뜻입니다 (유사한 세부 구역 간에 중복 사항이 없다면, 공간 쿼리로도 하위 단계의 참조 사항을 조회할 수 있습니다). 그리고 경우에 따라 다른 관계를 참조하는 것 자체로 편집이 더 복잡해질 수도 있습니다.

길로 구현

관계 대신 (way) 요소를 사용하기도 합니다. 이때 길 자체는 닫힌 상태(출발점과 도착점이 같은 상태)여야 하고 boundary=* 태그가 붙어야 합니다. 아직 공식적으로 사용이 금지된 것은 아니지만, 월경지 등을 표현할 때 모호하다는 문제점이 있으므로 새 객체에 대해서는 쓰지 않는 것이 좋습니다.[3] 또한 다른 지역과 경계를 공유할 수 없다는 한계가 존재합니다.

경계를 관계로 나타내면 다중다각형에서처럼 길 자체에는 태그가 없는 상태로 둘 수 있습니다.[3] 간혹boundary=administrativeadmin_level=* 태그를 붙이기도 합니다. 후자의 경우 그 경계를 윤곽선으로 삼는 최상위 단계의 행정구역을 입력값으로 삼습니다 (국가, 시도, 시군구가 걸려 있다면 admin_level은 국가에 해당되는 2로 입력합니다). 다만 이러한 태그 역시 선택 사항에 해당되는데, 데이터 활용처의 입장에서 그 길이 속해 있는 관계로부터 이미 정보를 추출할 수 있기 때문입니다.

과거에는 경계형 길에 name:left=*, name:right=*, nation:right=*, region:right=* 등의 태그를 추가하여 경계선 좌우측으로 맞닿은 행정구역을 정의하기도 했습니다. 하지만 이런 태그 방식은 편집하기가 번거롭고 오류 발생 가능성이 높으므로, 현재는 국가와 시도, 시군구별로 관계를 설정하는 방식으로 대체되었습니다. 따라서 길에 달려 있는 name:left=*/name:right=* 등의 태그는 제거하여도 무방합니다.

태그 예제

<relation id="1">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="light green country A excluding C" />
  <member type="way" id="AB" role="outer" />
  <member type="way" id="AC" role="inner" />
</relation>
<relation id="2">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="dark green country B also including C" />
  <member type="way" id="AB" role="outer" />
  <member type="way" id="AC" role="outer" />
</relation>
C는 A의 위요지이고 B의 월경지입니다.
<relation id="1">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="light green country A" />
  <member type="way" id="AB" role="outer" />
  <member type="way" id="AC1" role="outer" />
  <member type="way" id="AD" role="outer" />
  <member type="way" id="AC2" role="outer" />
</relation>
<relation id="2">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="dark green country B also including D" />
  <member type="way" id="AB" role="outer" />
  <member type="way" id="BC" role="outer" />
  <member type="way" id="AD" role="outer" />
  <member type="way" id="CD" role="outer" />
</relation>
<relation id="3">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="purple country C" />
  <member type="way" id="AC1" role="outer" />
  <member type="way" id="CD" role="outer" />
  <member type="way" id="AC2" role="outer" />
  <member type="way" id="BC" role="outer" />
</relation>
D는 B의 월경지이지만, C와 경계를 맞닿고 있으므로 A의 위요지는 아닙니다.
  • 네덜란드와 벨기에의 국경지대인 바를러는 월경지와 위요지가 복잡하게 얽혀 있다는 점에서 좋은 사례입니다. 기본적으로 네덜란드의 영토 안에 벨기에의 영토가 있고, 그 벨기에 영토 안에 네덜란드 영토가 다시 존재합니다. 벨기에 영토 안에 위치한 네덜란드 영토는 네덜란드 (국가), 노르트브라반트 (주), 바를러나사우 (마을)의 경계 관계로 각각 지정할 수 있습니다.
  • 더 많은 예시는 이곳에서 찾아보세요!

소프트웨어 지원

다음은 사용이 중단되었지만 데이터베이스 상에서 완전히 사라질 때까지 소프트웨어에서 지원해 주어야 하는 데이터 유형입니다.

  • type=boundary 대신 type=multipolygon을 쓴 데이터 (행정구역 경계는 기존의 boundary=* 태그로 명확한 식별이 가능합니다)
  • role outer로 지정되어야 할 경계를 빈 역할로 둔 데이터 (참고로 빈 역할은 다중다각형에서도 더 이상 사용해서는 안 되는 것으로 규정되어 있지만, 외선으로 기본 설정되는 경우가 일반적입니다.)

다음은 role labelrole admin_centre의 역할을 어떻게 출력하는가를 나타낸 각 데이터 활용처의 현황입니다.

소프트웨어 role label role admin_centre
CoMaps 행정구역 이름의 위치를 지정 [1][2]
Cosmogony 다국어 지명 태그와 동기화 [3]
Freemap Slovakia WikiPois N/A 행정구역의 위치를 지정 [4]
libpostal [5] [6]
Nominatim 장소의 지점과 영역 메타데이터를 연결 [7] N/A
OpenHistoricalMap 벡터 타일 행정구역 이름의 위치를 지정 [8] N/A
OpenTopoMap N/A [9]
Organic Maps 행정구역 이름의 위치를 지정 [10][11]
OsmAnd 행정구역 이름의 위치를 지정 [12][13]
OSMNames 동일 장소의 지점과 영역 표현이 중복되면 제거함 [14]
OSMPoliticalMap N/A [15]
Pelias pbf2json N/A 행정구역의 중심점을 지정 [16]

도구

다운로드

각주

  1. 월경지 (越境地, exclave)는 특정 영토와 같은 소속이지만 이어져 있지 않고 동떨어진 영토를 말하고, 위요지 (圍繞地, enclave)는 특정 영토로 둘러싸여 있지만 다른 소속인 영토를 말합니다.
  2. 각 국가에 따라서 이 역할을 사용하지 않을 수도 있습니다. 미국의 경우 커뮤니티 합의에 따라 완전히 제거되었습니다.
  3. 3.0 3.1 Mateusz Konieczny, February 2021 Archives by thread : (Tagging) boundary=administrative on ways, Feb 5 2021.