G.I.S Developer, 개발자 김형준(Dip2K)  
Front Page
Notice | Keyword | Tag | E-Mail | Guestbook | Admin | Write Article   
 
2007/08/08 19:56 2007/08/08 19:56
Density(밀도) Analysis
밀도맵에 대해 고민을 본격적으로 해보고 있는데, 먼저 내가 알고 있는 밀도맵이라는 개념은 틀린 것임을 알았다. 밀도맵이 아닌 밀도분석에 의한 결과라고 해야 옳겠다. 밀도맵은 아래처럼 지도의 영역을 통계수치값에 따라 다른 색상으로 구분해 놓은 맵을 말한다.

밀도 분석에 대해 관심을 가지게 된 이유는 이 밀도 분석을 구현해보고자 함이다. 그러기 위해서는 정확히 밀도 분석이라는 것이 무엇인가 부터 정확히 파악해야 어떤식으로 구현을 할지 알 수 있을 것이기 때문이다.

밀도 분석은 어떤 지점의 현상에 대한 측정된 수량(예를들어 인구수)을 지도 전체에 걸쳐 측정된 수량을 재분배를 해주는 것이다. 재분배는 지도를 일정한 간격의 Grid의 Cell의 값으로써 이루어진다. 아래의 그림이 포인트에 대한 밀도분석의 결과를 나타낸 화면이다.

이런 밀도 분석의 목적에 대해서 알아보자. 밀도 분석에 의한 결과를 Density Surface, 즉 밀도폴리곤이라고 하면... 밀도폴리곤은 측정값을 속성으로 하는 포인트나 라인 피쳐가 어디에 집중되었는가를 보여준다. 예를들어서 하나의 포인트가 어떤 마을을 의미하고 그 포인트 속성으로 마을의 전체 주민수를 나타낸다고 해보자. 여기서 우리는 이 주민수 포인트 데이터로부터 지도 전체에 걸친 주민의 분포수를 알고자 하는 것이다. 이 주민의 분포수를 얻는 방법이 바로 밀도 계산인데, 지도 전체에 걸친 인구의 예측 분포를 보여주는 밀도 폴리곤을 생성할 수 있는 것이 바로 밀도 분석, 밀도 계산이다.

여기서 중요한 것은 밀도 폴리곤은 벡터가 아닌 라스터라는 점이다. 밀도 분석에 의해 라스터를 구성하는 각 Cell에 측정된 값들이 계산되어져 입력되는데, 모든 Cell의 값들을 합한값과 입력 데이터로써의 벡터 데이터의 측정값들의 합은 같다.

밀도 분석을 위해 필요한 입력값은 무엇일까? 앞의 설명으로부터 유추가 가능한데.. 한번 정리를 해보면 아래와 같다.

  • 측정값이 들어가 있는 포인트나 폴리라인 벡터 데이터(여기서는 포인트에 관심을 둠)
  • 측값값이 저장된 속성 데이터에 대한 필드명
  • 밀도 분석 방법(Kernel과 Simple 방법이 있음)
  • 검색 반경
  • 셀의 크기
위의 지식을 기반으로 밀도 분석을 구현해 그 결과를 제시해 보겠다.

먼저 입력 데이터는 아래와 같다. 직관적으로 결과를 보이기 위해 하나의 포인트는 1의 값을 갖는다고 했다.
대략 9500개의 포인트를 사용했다. 화면의 가운데 부분에 5000개의 포인트를 밀집 시켰고 이를 중심으로 2000개의 포인트와 2500개의 포인트를 밀집시켰다. 직접 구현한 밀도 분석은 아래와 같다. 처음 이미지는 Simple 방법이고 두번째는 Kernel 방법이다.

Kernel 방법이 훨씬 정확한 결과를 제시하고 있다는 것을 알 수 있다. 아직은 속도나 퀄러티(밀도의 단계가 10단계로 표출되어야하나 그 이하로 표출(위의 경우 9단계)되는 문제가 발생하는 문제가 있다.

기회가 닿는다면 밀도분석에 대한 Simple 방법과 Kernel 방법에 대한 구현 로직에 대해 설명해 보도록 하겠다.
이 글이 도움이 되셨다면, 짧은 댓글이라도 달아주시길, 큰 힘이 됩니다. ^^*

Track this back : http://www.gisdeveloper.co.kr/trackback/274

[로그인][오픈아이디란?]
name    password    homepage
 hidden
BLOG main image
 Notice
[DuraMap-Xr] 소개 및 다운로드
[DuraMap-Xr] FAQ
개발과 관련한 질문은..
OpenGL Tutorials
운영자(Dip2K)에 대해
 Category
전체 (387)
GIS 개발 (82)
프로그래밍 (180)
스치는 생각들 (116)
번역 또는 집필 (3)
 TAGS
GIS OpenGL Shader Xr Algorithm Map Engine WPF ArcObjects ArcGIS C++
 Calendar
«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 Recent Entries
XrGeocoder - 주소를 좌표... (1)
XrProjection, 좌표계 변... (19)
[Java] 파생 클래스가 아...
[Java] 정적 초기화 블럭(...
[DuraMap-Xr] 그리드 레이...
 Recent Comments
감사합니다!!! 이렇게 직...
김지훈 - 07/29
감사 감사~ 근데.. 이글은...
김형준 - 07/29
친절한 해석 감사드려요^^
안토니오 - 07/29
별말씀을요.. ^^ 댓글에...
김형준 - 07/28
최근에 XrGeocoder라는 툴...
김형준 - 07/28
네, 요즘은 바로 도움을...
김형준 - 07/28
이래 저러 경황이 없어 댓...
김형준 - 07/28
잘 봤습니다. 큰 도움이...
gekko - 07/27
혹시 주소를 좌표로 변환...
김지훈 - 07/25
감사드립니다.. 바빠서 몇...
임은섭 - 07/23
 Archive
2010/07
2010/06
2010/05
2010/04
2010/03
2010/02
2010/01
2009/12
2009/11
2009/10
2009/09
2009/08
 Link Site
Adobe Flex 3 Help
Cartograph 2.0
GIS 위키디피아
GIS 프로그래밍 연구소
MapTools.org
OGC
OGRE3D
OSGeo 한국 지부
Wikipedia
국가수자원관리 정보시스템
국립지리원
국토연구원
국토해양부
네이버 과학
대한측량협회
류광님의 블로그
비지니스 GIS
이민파님의 공간분석과 리...
 Visitor Statistics
Total : 659265
Today : 81
Yesterday : 451
태터툴즈 배너
rss