Ko:길

From OpenStreetMap Wiki
Jump to navigation Jump to search
Osm element way.svg

길(way)은 오픈스트리트맵의 기본 요소 중 하나입니다. 일상 용어로는 선(line)이라고 합니다. 길은 보통 선형 지물(도로, 벽, 강)을 나타내는 데 사용합니다.

기술적으로 길은 여러 정점(노드)의 목록으로, 하나 이상의 태그가 달려 있거나 관계에 속해 있습니다. 최소 2개에서 최대 2,000개의 정점으로 길을 구성할 수 있습니다. 정점 0개 또는 1개만으로 길을 구성하는 것도 가능하기는 하지만 올바른 형태의 길이 아닙니다. 모든 길은 열린 길닫힌 길로 분류할 수 있습니다.

2020년 8월 기준으로 오픈스트리트맵에는 약 6억 8900만 개의 길이 존재합니다.

길의 유형

열린 길(열려 있는 선) 길

'열린 길(open way, 지물을 선형으로 표현한 것)'은 첫 번째 정점과 마지막 정점이 같지 않은 길입니다. 출발점과 도착점이 다른 도로, 하천, 철로와 같은 일반적인 선형 지물을 보통 열린 길로 나타냅니다.

오픈스트리트맵 데이터베이스의 길은 방향이 있습니다. 양방향 지물(쌍방통행 도로 등)을 표현하는 길, 방향이 없는 지물(벽 등)을 표현하는 길도 마찬가지로 방향이 있습니다. 선의 방향을 보는 방법은 여기를 참고하세요.

닫힌 길(닫혀 있는 선) 닫힌 길

'닫힌 길(closed way)'은 첫 번째 정점과 마지막 정점이 같은 길입니다. 닫힌 길은 닫힌 선형 지물을 나타낼 수도 있고, 영역을 나타낼 수도 있고, 두 가지를 한꺼번에 나타낼 수도 있습니다. 닫힌 길을 해석하는 방식은 길에 달려 있는 태그나 길이 속한 관계에 따라 달라집니다.

아래 목록은 닫힌 길을 닫힌 선형 지물로 해석하는 사례 중 일부입니다.

  • highway=* – 원형 교차로나 원형 보도를 나타낼 때
  • barrier=* – 특정 구역을 완전히 둘러싸는 장벽(울타리나 벽 등)을 나타낼 때

area=yes 태그가 붙어 있는 닫힌 선은 항상 영역으로 해석합니다(다만 일반적으로 area=yes 태그를 명시적으로 붙일 필요는 없습니다. 아래의 '영역' 단락을 참고하세요).

Overpass 질의어 매개변수/연산자인 is_closed로 닫힌 길과 열린 길을 구별할 수 있습니다(Overpass_QL#Geometry_Related_Operators, Overpass_API/Overpass_API_by_Example#Limit_results_to_areas_only 참고).

영역 영역

주요 문서: Area

'영역'('다각형'이라고도 함)은 속이 차 있는 닫힌 영역입니다. 영역은 닫힌 길로 정의합니다. 대부분의 닫힌 길은 area=yes 태그가 붙어 있지 않아도 영역으로 취급합니다(상술되었다시피 일부 예외도 있습니다). 닫힌 길을 영역으로 해석하는 사례 중 일부는 다음과 같습니다.

닫힌 선형 지물로 해석되는 태그와 함께 area=yes 태그를 붙이면 해당 개체는 영역으로 해석됩니다.

다중 다각형 관계를 이용하면 하나 이상의 길로 영역을 구성할 수 있습니다.

지물을 선형으로 표현하는 것과 영역으로 표현하는 것의 차이점

오픈스트리트맵에서는 하나의 지물도 다양한 방법으로 표현할 수 있습니다. 예를 들어 도로를 선형 길 으로 표현하는 것은 일반적입니다. 그러나 이는 지리 정보를 표현하는 방법 중 하나일 뿐이며, 실제 도로의 모습을 정확히 표현하는 것보다 경로 탐색이 가능한 도로 네트워크를 만드는 것이 더 적합한 경우도 많습니다.

  • 도로와 같은 현실 세계의 지물은 일정한 폭을 가지고 있으며, 지점에 따라 점진적으로 폭이 변할 수도 있습니다. 그러나 지물을 선형으로 표현할 때는 (각 지점의) 도로 폭을 정점 node 으로 일일이 나타내지 않습니다(도로의 평균 너비를 나타내는 태그를 길에 붙일 수는 있습니다). 따라서 선형 표현으로 지도를 그릴 때는 (특히 선형 지물의 형상 자체가 비대칭적일 때) 지물을 나타낼 중심선을 선택해야 합니다. 중심선은 차도의 중심, 차도 + 인도의 중심, 혹은 차도 노면 화살표가 그려진 위치 등으로 잡을 수 있습니다.
  • 또한 자갈 도로와 아스팔트 도로가 교차하는 지점을 지도로 그렸을 때 교차점의 포장재가 아스팔트인지, 자갈인지 모호할 수 있습니다.
  • 실제 세계에서 도로가 별도의 물리적인 실체로 존재하지 않고, 공간을 연결하는 기능만 남아 있는 경우에도 오픈스트리트맵에서는 도로를 선형으로 표현하는 방식을 계속해서 사용하는 경향이 있습니다. 얕은 강바닥을 자동차로 가로지르는 도로(물리적으로는 도로가 끊겨 있음)나 돌 사이 공간이 돌의 크기보다 더 클 수도 있는 징검다리(물리적으로 도로가 '점선'임)가 여기에 해당합니다.

이는 동일한 기능의 면적 표현과 근본적인 차이이며, 여기서 영역의 (변화는) 너비가 노드로 설명되고 고속도로의 면적 표현(및 고속도로 역할을 하는 디딤돌)은 선형 표현이 계속되는 위의 예에서 끝납니다.

똑같은 지물을 선으로 표현하는 것과 '영역' 영역 으로 표현하는 것은 근본적으로 다릅니다. 지물을 영역으로 표현하게 되면 (위치에 따라 변하는) 영역의 폭을 정점 node 의 위치로 직접 표현할 수 있지만, 위 예시에서 도로 역할을 하는 징검다리를 도로 영역으로 표현하는 행위는 그리 바람직하지 않습니다.

두 방법 중에서 원하는 방법을 골라서 사용할 수 있습니다. 지물을 선형으로 표현하면 빈 공간에 지도를 처음 그릴 때 편하고, 경로 탐색이 가능한 네트워크를 나타낼 수 있습니다. 지물을 영역으로 표현하면 지물의 실제 형상을 더 정확하게 나타낼 수 있습니다.

닫힌 선과 영역의 혼합

일부 태그 조합을 닫힌 길에 붙이면 길이 닫힌 선과 영역으로 동시에 해석됩니다.

예를 들어 잔디밭을 둘러싸는 회전교차로를 한번에 나타내려면

태그를 함께 붙이면 됩니다.

예시

벡터로 나타낸 도로

일방통행 주거 도로는 highway=residential + name=<도로명> + oneway=yes로 나타낼 수 있습니다.

  <way id="5090250" visible="true" timestamp="2009-01-19T19:07:25Z" version="8" changeset="816806" user="Blumpsy" uid="64226">
    <nd ref="822403"/>
    <nd ref="21533912"/>
    <nd ref="821601"/>
    <nd ref="21533910"/>
    <nd ref="135791608"/>
    <nd ref="333725784"/>
    <nd ref="333725781"/>
    <nd ref="333725774"/>
    <nd ref="333725776"/>
    <nd ref="823771"/>
    <tag k="highway" v="residential"/>
    <tag k="name" v="Clipstone Street"/>
    <tag k="oneway" v="yes"/>
  </way>

길의 형상을 정의하는 정점은 올바른 순서로 나열되며, 고유한 식별자를 이용해 참조로만 나타냅니다. 나열된 정점들은 별도로 정의가 되어 있어야 하며, 정의에는 정점의 위치를 나타내는 좌표 값을 포함해야 합니다.

수학 관련 참고 사항

오픈스트리트맵의 길은 정점의 모음이며, 각 정점을 잇는 '길 조각(way segment)'으로 길이 구성됩니다. 각 조각은 두 정점을 지구 표면에서 연결하는 가장 짧은 선(지형의 높낮이는 고려하지 않음), 즉 여기에서 사용된 지구 구면체(figure of the Earth) 위의 측지선(geodesic)으로 가정합니다. 구면체는 원형(웹 메르카토르 도법에서 사용됨, 구면 삼각형 참고)을 사용할 수도 있고, 지구의 형상을 더 정확히 표현하기 위해 타원체(타원체 위에서의 측지학 참고)를 사용할 수도 있습니다. 지구 구면체가 최종 사용자와 프로그래머에게 미치는 주요한 영향은 다음과 같습니다.

  • 메르카토르 도법에서 긴 조각이 구부러져 보입니다.
  • 긴 조각 길이를 정확히 재려면 측지학을 고려한 알고리즘을 이용해야 합니다.

실제로 오픈스트리트맵의 정점들은 서로 가까이 붙어 있기 때문에 이러한 걱정을 할 필요는 없지만, 영역의 넓이를 측정하는 일은 또 그렇지 않습니다. JOSM/Plugins/measurement 플러그인을 이용하면 길의 길이나 영역의 넓이 등을 정확히 잴 수 있습니다.