연차별로 구축된 지형도를 PostGIS에 넣어 ST_GeoHash()함수를 이용해 지리적인 식별키를 생성하고 이를 이용해 각 객처별 변화를 탐지해 낸다. 이렇게 탐지한 변화정보를 이용해 지형도의 변화를 시계열적으로 구축하여, 원하는 시점의 자료를 조회하고, 변화내용을 분석하는 과정을 국토지리정보원의 실사례와 함께 설명한다.
6. 6
공간객체 식별자 문제점
UFID(34) = A(4) M(9) F(4) C(1) S(15) P(1)
• A(4) : 지형지물 관리 기관 코드로서 기본공간정보를 구축/관리하는
기관의 코드
• M(9) : 도엽번호 필드로, 전국을 포괄하는 수치지형도인 1/5,000을
기준으로 9자리 구성
• F(4) : 기본공간정보를 구성하는 모든 지형지물(예 : 도로경계)에 대해서
일련번호를 부여한 것으로 수치지형도Ver2.0 레이어 체계로 구성
• C(1) : 지형지물에 번호를 부여하는 S필드의 값을 결정하며, C가 1이면
도엽 내에서의 일련번호로 지형지물에 번호를 부여하고, C가 2이면
기관에서 사용하는 번호로서 지형지물에 번호를 부여
• S(15) : 도엽 내에서 지형지물의 일련번호
• P(1) : 오류 확인 코드
지형도가 갱신되면 일련번호(UFID)를 겹치지 않게 새로 부여
각 시기별 지형도간 일련번호(UFID)가 단 1건도 일치하지 않음!
공간적으로 대부분의 점들이 소수점 아래 5자리 이하에서 좌표변
8. 8
GeoHash란?
https://en.wikipedia.org/wiki/Geohash , http://geohash.org/wydm3fwt66xt
• Gustavo Niemeyer가 geohash.org 라는 Web 서비스를 만드는 동안 발명 한 경위도를
기반으로 한 지오코딩 방법의 하나이다.
• 누구나 쓸 수 있도록 알고리즘이 공개 되어있다.
• 계층 적 공간 데이터 구조이며, 공간을 분할 해 나감으로써 표현한다.
• 지오 해시는 임의의 정밀도로 표현할 수 있는데 문자열의 수를 줄일수록 정밀도가 떨어
지는 특징이 있다.
• 인근의 2 지점을 나타내는 코드는 비슷한 문자열로 구성되는 경우가 많다.
• 동시에 더 많은 문자열이 일치하면 해당 2 점이 더 가까운 것을 나타낸다.
• PostGIS, ArcGIS 등 유명 툴들에서 지원
select ST_GeoHash(ST_GeomFromText('POINT(127.0 37.5)', 4326), 12);
-- "wydm3fwt66xt"
select ST_GeoHash(ST_GeomFromText('POINT(127.00001 37.5)', 4326), 12);
-- "wydm3fwt6dxj"
select ST_GeoHash(ST_GeomFromText('POINT(127.0 37.50001)', 4326), 12);
-- "wydm3fwt6kx8"
select ST_GeoHash(ST_GeomFromText('POINT(127.1 37.50001)', 4326), 12);
-- "wydmk4xmkst0"
문자열 이기에 텍스트 색인적용으로 공간연산에 비해 비교속도 월등
적절한 수준으로 정밀도를 제어 가능해 작은 변화 무시 가능
객체의 중심위치와 면적을 이용하면 공간적 특성기반 ID로 사용 가능
9. 작업용 저장소
(PostGIS)
유지관리용 저장소
(ArcSDE,
Oracle Spatial,
PostGIS)
단방향 통신
단방향 통신
암호화 데이터파일
(승인 즉시 생산)
암호화 데이터파일
(고시즉시 생산)
복호화시 데이터 검증
복호화시 데이터 검증
외주업무 담당자 전산실외주 업체
필요시 최신자료
전체 덤프
기본데이터 편집
검수 리포트
시계열 관리지원 생산-관리단계 아키텍처
생산관리도구
10. 객체의 변화 탐지 방안
- 1단계 : Geohash를 이용하여 생성한 12자리 코드를 키(key)값으로 하여 객체의 일치 여부 확
인
- 2단계 : 객체에 대한 추가 및 삭제 여부, 동일한 객체에 대한 속성 변화 및 도형 변화 탐지
Geohash를 이용한 동일 객체 판단 기준
- 객체의 중심 위치에 대한 규칙적인 코드(숫자+문자)를 생성 ex) wyd1enczq9fd
- 중심점의 위치가 동일하면 같은 코드가 생성되고, 객체의 면적 또는 길이 기준을 함께 사용하
여 판단
▪ POLYGON : Geohash 코드 + 면적(± 5%)
▪ LINE : Geohash 코드 + 길이(± 5%)
▪ POINT : Geohash 코드
GeoHash : wydjwkdbg00j
면적 : 1129.3
GeoHash : wydjwkdbg00j
면적 : 1116.9
좌측의 실례와 같이 객체 자체
가 변화한 것이 아닌 경우에 같
은 객체로 판단해야 하므로, 객
체의 면적에 대한 ±5% 기준을
오차로 허용함
(Geohash + 면적 또는 길이의 오차) 판단 기준 적용
이유
생산관리도구의 GeoHash 사용
11. 제공한 원본자료와 수령자료의 변경을 탐지
각 변경사항을 하나씩 확인하여 승인하거나 거부하여 리포트와 유지관리용DB 반영용 자료 생
성
생산관리도구의 변경사항 탐지
12. 원천동 일대 1대5천 4개 도엽
도엽번호
- 37709082
- 37709083
- 37709092
- 37709093
지역특성
- 최근 수년간 대규모 개발행위가 있었음
- 구시가지, 신시가지가 모두 존재
- 고속도로, 국도, 세도로 등 다양한 도로
존재
- 하천, 호수 등 다양한 수계 존재
자료시기
- 2011, 2012, 2013, 2014, 2015
과거 지형도 시계열구축 테스트
13. 1. 연속수치지형도와 국가기본공간정보 테이블 연결 분
석
2. 2011~2014년도 연속수치지형도를 국가기본공간정
보 형식으로 변환(도형위주)
3. 2015년도는 국가기본공간정보 시범사업 데이터 이
용
4. 2014년 연속수치지형도와 2015년도 일치(유지)객
체 파악
5. GeoHash(12자리)가 일치하고 면적/길이가 5% 이
내차이면 일치로 판단
6. 일치하지 않는 것 중 2015년에만 있는 것은 생성으
로 기록
7. 일치하지 않는 것 중 2014년에만 있는 것은 삭제로
기록
8. 2013년과 2014년, 2012년과 2013년, 2011년과
2012년 분석 13
시계열 생성 테스트 데이터 구축과정
14. 2011년 2012년 2013년 2014년 2015년 2016년
2014년 7월 1일 시점
- 생성일이 14년 7월 1일 이전
- 소멸일이 없거나 14년 7월 1일 이후
시계열자료에서 원하는 시점자료 조회
15. 15
객체 최소범위 사각형 추출
중심점 추출
경위도 좌표계로 변환
GeoHash 생성
GeoHash가 일치하고 면적이 5%
이하 차이
지형도 객체 일치여부 판단 과정
16. 16
select s.ogc_fid s_fid, t.ogc_fid t_sid
from
(select ogc_fid,
ST_GeoHash(ST_Transform(st_centroid(st_envelope(wkb_g
eometry)), 4326), 12) as mbr_hash_12, st_area(wkb_geometry)
as geom_area
from nf_2014.nf_a_b01000) as s,
(select ogc_fid,
ST_GeoHash(ST_Transform(st_centroid(st_envelope(wkb_g
eometry)), 4326), 12) as mbr_hash_12, st_area(wkb_geometry)
as geom_area
from nf.nf_a_b01000) as t
where s.mbr_hash_12 = t.mbr_hash_12 and abs(s.geom_area-
t.geom_area)/t.geom_area < 0.05
지형도 객체 일치판단 SQL
Thank you for your attention to my presentation.
Do you have any questions?
Than, please keep it to yourself until you’re sitting in front of a computer, because I don’t understand English.
Please email me. Sorry~