[GIS] 개발 맵 엔진, Kernel Density 그림 개선

개발 맵 엔진의 확장 기능 중에 밀도 분석에 대한 기능이 있습니다. 지도 엔진을 설계할 당시에 파일럿 성격으로 만들고, 이를 별다른 고민이나 개선없이 확장 기능 단으로 수용을 해서인지… 여러가지로 문제가 있었나 봅니다. 문제가 꽤 되는데…. 그 중에 2가지만 언급한다면…

  • 적은 포인트의 개수에 대해 밀도 그림으로써 의미가 없는 결과를 냄
  • 기존에 존재 하는 GIS 밀도 분석 기능(ArcGIS)에 비해 속도가 매우 느림

먼저 첫번째에 대해서는 이런 저런 고민으로 절충안을 내어 개선을 했습니다. 실제로 이전의 개발 맵 엔진의 밀도분석에 대한 확장 기능으로 포인트 수가 10개정도 되는 공간을 대상으로 수행해 보면, 전혀 엉뚱한 결과가 도출되었습니다. 아래는 개선되기 이전의 결과 입니다.
사용자 삽입 이미지
그리고 아래는 동일한 해상도, 동일한 검색반경을 이용한 개선된 밀도 분석에 대한 결과 그림입니다.

사용자 삽입 이미지

그리고 아래의 두 그림은 개선된 밀도 분석 기능을 통해 만들어본 실제 의미있는 포인트에 대한 밀도 분석입니다. 여기서의 의미는 서울시에 존재하는 아파트 중 매매가가 6억 이상인 아파트에 대한 포인트로써, 데이터는 오픈메이트에서 보유하고 있는 데이터입니다. 실제로 국내에서 가장 정확하고 중요한 인문/사회에 대한 데이터와 특히 아파트에 대한 데이터는 오픈메이트가 보유하고 있는 데이터가 최고가 아닌가 싶습니다.

사용자 삽입 이미지
사용자 삽입 이미지
끝으로, 공간 상의 밀도 분석은 공간 상에 의미 있는 데이터가 어떤 분포 양상을 띠는지에 대한 경향을 분석하는 기능으로, 비지니스 분야의 GIS를 활용한 분석에서는 매우 큰 비중을 차지 하고 있는 분석 기능입니다.

아..! 그리고 속도에 대한 개선은 아직 이루지 못했습니다. 하지만 일단 개선할 곳을 찾기는 했는데.. 개선하기가 약간 복잡하여 추후 문제가 될 경우 개선할 예정입니다.

[GIS] 가중치 최소 비용 경로 분석을 이용한 차량 이동 시간

가중치 최소 비용 경로 분석을 이용하여 특정 위치에 대해 차량으로 이동할 경우 소요되는 시간에 대한 영역을 분석하는 기능에 적용해 보았습니다. 가중치는 차량이동속도로 하였습니다. 절차는 다음과 같습니다.

사용자 삽입 이미지
먼저 벡터 데이터로 도로망에 대한 폴리라인 데이터와 한강 수계에 대한 폴리곤 데이터를 추가합니다.

사용자 삽입 이미지
그리고, 이 두 벡터 데이터를 라스터 데이터로 변환합니다. 이때 도로망에 대한 셀값은 차량의 이동속도 값을 주는데, 여기서는 30km/h로 합니다. 그리고 수계는 차량이 들어갈 수 없으므로 NULL 값을 줍니다. 그리고 그 이외의 셀들은 도보 속도인 4km/h로 줍니다. 변환한 위의 화면을 확대해 보면 라스터로 변환된 것을 확인할 수 있습니다.

사용자 삽입 이미지
바로 파랑색이 차도이며 30의 값을 가지고, 회색은 4의 값을 가집니다.

사용자 삽입 이미지
이제 목적지가 되는 포인트를 먼저 추가하고 가중치 최소 비용 경로 분석을 수행합니다. 목적지 포인트는 화면상에 노란색 원이 그에 해당하고, 가중치 최소 비용 경로 분석에 대한 결과는 위처럼 회색계열의 새로운 라스터 데이터 레이어가 생성됩니다. 분석된 셀값에는 거리에 대한 값이 반영되어 있으므로 이 거리의 값을 제거하기 위해 셀의 크기로 나누어 시간 값만 남게 합니다.

최종적으로 등고선 추출 기능(개발 맵 엔진의 확장 기능 중의 하나)를 이용하여 15분과 35분에 대한 차량이동시간을 추출한 화면이 아래와 같습니다.

사용자 삽입 이미지
바로 위의 그림에서 추출된 영역이 목적지 포인트에 도달하는데 소요되는 최대 시간으로 각각 최대 15분이 소요되는 영역과 35분이 소요되는 영역을 나타내고 있습니다.

이 가중치 최소 비용 경로 분석은 적용하는 가중치에 따라 공간상의 이동에 대한 매우 다양한 분야에 적용할 수 있는 GIS 공간 분석 방법입니다.

[GIS] 개발 맵 엔진의 가중치 최소 비용 경로 분석 결과

개발 맵 엔진에 가중치 최소 비용 경로를 분석하는 확장 기능을 만들어 붙여 보았습니다. 이 글과 연결되는 이전의(클릭) 글을 먼저 참고하시길 권해 드립니다.
 사용자 삽입 이미지
목표지점을 설정하고.. 시작점을 지정하여, 각 시작점에서 목표지점까지 가는 최적의 경로를 분석해, 파랑색 선으로 나타낸 것입니다. 최적이 경로로 사용한 가중치 값은 경사도 입니다. 경사도를 비용으로 해 최소의 비용을 갖는 경로를 산출하는 것입니다

사실, 위의 개발된 결과에 대해 할말이 많을 듯 했습니다. 여러가지 어려움이 많았거든요. 이래 저래 해결하기 어려웠던 부분들로… 지지난주와 지난주 내내.. 머리속에서 이 문제들이 맴맴~ 거렸더랬습니다. 그런데 정작 마무리를 하니 뭘 써야할지 모르겠습니다.

4월 28일 Posted
비용 계산에 도로망을 이용해 보았습니다. 즉, 도로망이 지나가는 셀의 모든 값에 속도 40km/h로 주고 도로가 아닌 곳의 모든 셀에는 4km/h로 준 후, 이 속도를 기반으로 셀을 지나는데 소요되는 시간을 계산하여.. 이 시간을 비용으로 주고 최소 비용 경로를 뽑아 보았습니다. 아래가 그 결과의 일부를 보여주고 있는 이미지입니다. 노란색 작은 동그라미가 최종 목적지입니다. 도로를 따라 가장 시간이 적게 소요되는 경로를 뽑아 내고 있습니다. 비용을 무엇으로 주느냐에 따라, 이 분석 방법이 매우 다양한 곳에 적용될 수 있으리라는 생각이 듭니다.

사용자 삽입 이미지

[GIS] 가중치 최소 비용 경로 분석(Weighted Lowest Cost Path Analysis)

공간상의 어떤 지점을 통과하기 위해 드는 비용 값이 있다고 해 보겠습니다. 일단 어떤 지점을 통과한다는 것은 그 공간의 거리가 길수록 통과하는데 더 많은 비용이 들고, 거리가 짤을 수록 통과하는데 더 작은 비용이 듭니다.

여기에… 이 거리에 대한 비용은 기본적으로 반영하되, 그 지점을 통화하는데 드는 또 다른 비용을 추가적으로 고려하여, 임이의 지점에서 어떤 특정한 지점으로 이동할때 가장 최소의 비용이 드는 경로를 분석해 보는 것을 고민해 볼 필요가 있습니다.

여기서 또 다른 비용은 그 대상이 되는 분석에 따라 매우 다양한데, 쉽게 생각해볼 수 있는 것이 지형의 경사(Slope)입니다. 예를들어서, 노약자가 어느 지점에서 특정한 지점으로 이동할때… 단순히 가장 짧은 거리가 아닌 지형이 좀더 완만~한 경로를 선택해 가는것이 효율적이라 할 수 있겠습니다.

이 예에서 지형의 강사값이 바로 어느 지점을 통과하는데 드는 기본적인 비용인 거리에 대한 가중치로써의 역활을 한다는 점에서…. 이러한 분석을 “가중치 최소 비용 경로 분석(Weighted Lowest Cost  Path Analysis)”이라고 이름을 붙일 수 있겠습니다.

간단히 WLCP라고 하는 이 분석은 공간을 대상으로 하는 GIS 분석에서 매우 가치 있게 활용됩니다. 간단한 예로써 어떤 고객이 자신이 살고 있는 집에서 주위의 마트 중에 어느 마트에 갈것인지를 결정하거나 예측하는 경우를 생각해 보겠습니다.

사용자 삽입 이미지
위의 그림은 고객(화면 가운데의 용문동에 위치)이 갈 수 있는 주위의 4개의 마트를 표시한 것입니다. 고객과 마트의 거리만을 놓고 볼때 D 마트가 가장 가까워 고객은 D 마트로 방문할 가능성이 가장 큽니다.

하지만 고객은 이처럼 단순히 거리만 가깝다는 이유로 꼭 그 마트를 방문하지는 않습니다. 여기에는 다양한 변수가 존재하는데, 그 변수는 해당 마트까지 가는 것까지의 교통혼잡지수나 마트가 존재하는 지역의 문화 수준이나 생활 수준, 또는 해당 마트가 생필품을 주로 판매하는지, 아니면 고가의 사치품을 주로 판매하는지 등과 같은 변수가 작용하여, 고객은 자신이 방문할 방문할 마트를  결정하게 됩니다. 이러한 교통혼잡지수와 문화 수준, 생활 수준 등이 바로 WLCP 분석을 위한 가중치가 됩니다.

WLCP의 근본적인 필요성인, 최소의 경비가 소요되는 길을 찾는 것 뿐만 아니라.. 이 방법을 응용하여 길을 찾는 것이 아닌 반대로.. 어느 지점에 마트를 세워야 하는지 등과 같은 최적입지 분석이나 최적입지에 세워졌는지에 대한 검증 분석에도 충분히 활용될 수 있습니다. 문제는 얼마나 다양하고 정확하며, 꼭 필요한 가중치 변수를 사용하느냐가 문제이며.. 이 변수 선택의 몫은 이 변수들에 대해 가장 잘 알고 있는 해당 분야의 전문가의 몫일 것입니다.

만약 기회가 닿는다면, 개발 맵 엔진에 이 WLCP 분석을 확장기능으로써 개발하고, 간단히 어떤 지점에서 목적지까지  가장 경사가 완만한… 최단 거리를 구하는 예를 통해 검증해 보도록 하겠습니다.