겹치는 선 렌더링


24

버스, 전차 등 대중 교통에 대한 정보가 포함 된지도를 만들고 있습니다.지도에는 전차 선이 포함 된 레이어가 있습니다. 각 선은 고유 한 색상을 가지며 선 문자열 형상으로 표시됩니다.

문제는 많은 라인이 겹치는 부분을 가지고 있으며, 하나 이상의 트램 라인이 동일한 섹션을 커버한다는 것입니다. 이것을 사용자에게 보여주기 위해 선이 서로 그려지지 않고 서로 평행하게 실행되기를 원합니다. 예를 들어, Google지도가 뉴욕 지하철 노선을 표시하는 방법을 참조하십시오.

나는 이것이지도 제작에서 매우 일반적인 문제라고 생각하지만, 어떤 용어를 검색해야하는지 모른다.

PostGIS / GeoServer / OpenLayers를 내 스택으로 사용하고 있지만 모든 오픈 소스 솔루션이 허용됩니다.


지하철 노선과 같은 문제가 있습니다. 수용 가능한 솔루션을 찾거나 구현 했습니까?
Geert-Jan

불행하게도. 고객은 우선 순위를 정하지 않았으며 중복을 방지하기 위해 매우 심하게 해킹했습니다.
Liedman

답변:


7

이 영역에 대해 더 자세히 알고 싶은 경우 문제는 지도 제작 변위지도 제작 일반화 의 한 측면입니다 .

문제를 다루기위한 변위와 접근 방식을 설명하는 몇 가지 기사 :


"배수량"! 그것은 내가 기억하려고하는 다른 용어였습니다. 우리는 FME (미안하지만 오픈 소스가 아님) 도구를 사용하여 "Nickerson 변위 알고리즘의 변형을 사용하여 피처 간의 근접성 충돌을 해결합니다."
마크 아일랜드

scholar.google.com/… 원본 기사 (슬프게 지불)와 많은 사람들이이를 참조하는 링크를 제공합니다. 관련 기사 중 일부는 무료이며 흥미로워 보입니다.
Ian Turton

4

이 문제는지도 제작 일반화에서 매우 일반적인 문제입니다. 이를 위해 자동화 된 메소드가 존재하지만 아직 구현이 없습니다.

" beams "및 " Snakes "를 기반으로하는 방법 은 네트워크 데이터의 이러한지도상의 충돌을 해결하기위한 효율적인 결과를 제공합니다 ( scw에서 제공 한 참조 참조 ). 도로 데이터에 대한 빔 알고리즘의 결과는 다음과 같습니다.

전에:

대체 텍스트

후:

대체 텍스트

이 변환 을 수행하는 방법을 설명하는 이 문서 와이 프레젠테이션 을 참조하십시오 .

편집 : 나는 그것을 테스트 한 적이 없지만 GRASS에는 뱀과 관련이있는 것 같습니다. 여기를 참조 하십시오 .


1
두 개의 선분 (버스 트랙)이 정확히 동일한 지오메트리를 가지고있는 경우에도 작동합니까?
underdark

1
너무 닫힌 선에는 적용되며 정확하게 겹치는 선에는 제대로 작동하지 않아야합니다. 적응이 필요합니다.
줄리앙

1

나는 해결책을 모른다. 그러나 당신이 찾고있는 용어는 "충돌 해결"-지도 일반화의 주제라고 생각한다. "맵 일반화 충돌"에 대한 Google 검색에서 흥미로운 정보가 표시되지만 실용성이 많이 있는지는 잘 모르겠습니다.


1

현재 구현에서 "오프셋"또는 "디스 톨"을 찾을 수 있습니다. 현재 스택을 사용하면 병렬 라인을 자동으로 얻는 것이 약간 어려워 보입니다.

요약하자면 가장 쉬운 방법은 UMN Mapserver와 오프셋 값을 사용하는 것입니다. 맵 파일의 스타일 예 :

STYLE
 SYMBOL 7
 OUTLINECOLOR 160 160 160
 SIZE 5
 OFFSET 2 -99 # <-- This will offset the line to the right.
 ANTIALIAS FALSE
END # STYLE

0

겹치는 선 레이어를 그리는 경우 뷰어가 모든 선을 볼 수 있도록 몇 가지 옵션이 있습니다.

  1. 너비-레이어 사이의 선 너비를 변경하고 더 넓은 선을 아래쪽에 놓습니다.
  2. 불투명도 / 투명도-개별 선 레이어를 부분적으로 불투명하게 만들 수 있으므로 개별 레이어를 볼 수 있습니다.
  3. 오프셋-실제 선 형상을 나타내는 선 기호를 선의 실제 형상의 한쪽으로 오프셋 할 수 있습니다. 개별 레이어는 모든 레이어를 볼 수 있도록 다른 양과 다른 방향으로 오프셋 될 수 있습니다.
  4. 선은 기호 사이에 간격이 정의 된 일련의 점 기호로 표시 될 수 있습니다. 서로 다른 선 레이어 사이의 기호, 기호 색상, 기호 크기 및 간격을 변경하여 각 개별 선 레이어를 구별 할 수 있도록해야합니다.

GeoServer를 사용하지 않지만 MapServer에는 이러한 모든 작업을 수행 할 수있는 기능이 있습니다. GeoServer도 마찬가지입니다.


우리가 3 번 원하는 것처럼 들리지만 중복되는 기능에만 해당됩니다. 가능합니까?
mwalker

2
MapServer와 다른 웹 맵 서버 및 GIS는 레이블에 대한 충돌 해결을 수행하지만이 작업을 즉시 수행 할 수있는 기능은 알 수 없습니다. 물론 데이터가 상당히 정적 인 경우 데이터를 사전 처리하여 다른 레이어의 선이 교차하는 곳 (또는 공차 내에있는)을 식별하고이를 기반으로 데이터를 분류 할 수 있습니다. 그런 다음지도 렌더링 엔진은 데이터의 속성을 기반으로 '변위'기호를 적용 할 수 있습니다.
DavidF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.