김형준 GIS 연구소 (for Developers)  
Front Page
Notice | E-Mail | Admin | Write Article   
 
GIS 개발/BlackPoint-Xr에 해당하는 글 24건
2012/05/04   BlackPoint를 이용한 모바일 GIS 개발 소개 자료 (1)
2012/04/27   [BlackPoint] 지오프로세싱(평균경사도, 단면도 측정) (2)
2012/03/28   블랙포인트 엔진을 이용한 '스마트 현장지원 시스템' 개발 완료 (2)
2012/03/03   [BlackPoint-Xr] 그룹 레이어(GroupLayer)
2012/02/21   [BlackPoint] SHP에서 원하는 도형을 하일라이팅 하기
2012/02/21   [Java] 특정 폴더에서 원하는 확장자를 가지는 파일 목록 구하기 (2)
2012/02/17   [BlackPoint-Xr] 레이어의 전체 Feature들의 속성 및 도형 정보 구하기
2012/01/09   [BlackPoint] 지도 축척 제한하는 방법에 대한 예제 코드
2011/12/28   [BlackPoint] 코드를 이용한 기본 지도뷰 조작
2011/12/27   [BlackPoint] 지도 축척에 따라 레이어 및 라벨 가시화 설정
2011/12/22   [BlackPoint] 지도 배경색상 변경
2011/12/21   [BlackPoint] GPS의 좌표계 설정
2011/12/20   [BlackPoint] 레이어의 MBR 얻기
2011/12/18   [BlackPoint] Identify 기능 구현
2011/12/17   [BlackPoint] 공간연산자 실행 예제
2011/12/15   [BlackPoint] 그래픽 레이어의 구성 요소 제거
2011/12/13   [BlackPoint] 폴리라인 그래픽의 좌표 변경하기
2011/12/05   [BlackPoint] 공간 데이터 편집 기능
2011/11/29   [BlackPoint] SHP 파일의 도형 좌표 구하기
2011/11/14   [BlackPoint] 축척 변경 이벤트 예제
2011/09/26   [BlackPoint] 레이어 추가
2011/09/23   [BlackPoint] 모바일 GIS 엔진, 블랙포인트의 GPS 연동 기능
2011/07/07   [BlackPoint] 항공영상 레이어 지원
2011/05/31   [BlackPoint] 블랙포인트 SHP 파일 로딩 및 뷰


2012/05/04 10:29 2012/05/04 10:29
BlackPoint를 이용한 모바일 GIS 개발 소개 자료
사용자 삽입 이미지
Tag : ,
2012/04/27 16:32 2012/04/27 16:32
[BlackPoint] 지오프로세싱(평균경사도, 단면도 측정)
블랙포인트라는 안드로이드 기반의 GIS 엔진을 이용해 화면에서 평균경사도와 단면도를 손쉽게 측정할 수 있는 기능을 개발할 수 있습니다. 이러한 기능 개발을 위해 DEM 데이터가 필요하며 블랙포인트는 DEM 데이터를 공간서버(GeoService-Xr)을 통해 빠르게 서비스 받을 수 있습니다.

먼저 평균경사도를 측정하기 위해 지도 화면에 터치를 통해 측정하고자 하는 영역을 폴리곤으로 지정합니다.

사용자 삽입 이미지

지정하고 화면을 더블터치를 해 폴리곤 지정을 마무리 하면 지정된 영역에 대한 경사도를 분석하여 아래와 같은 결과를 사용자에게 제공합니다.

사용자 삽입 이미지
 
그리고 횡단면도 측정의 경우에.. 지도 화면에서 터치를 통해 측정하고자 하는 횡단선을 그려줍니다.

사용자 삽입 이미지

그리고 화면을 더블터치를 해서 횡단선 지정을 마무리하면 다음과 같이 횡단면도 측정되어 결과가 화면상에 표시됩니다.

사용자 삽입 이미지

이처럼 블랙포인트를 이용해 모바일이라는 환경에서 단순히 터치를 통해 평균경사도와 횡단면도를 빠르게 측정할 수 있는 모바일 GIS 앱을 개발할 수 있습니다.
Tag :
2012/03/28 17:36 2012/03/28 17:36
블랙포인트 엔진을 이용한 '스마트 현장지원 시스템' 개발 완료
안드로이드 기반의 모바일 GIS 엔진인 블랙포인트를 이용해 개발한 스마트 현장지원 시스템 개발이 완료되었습니다. 개발 기간은 3월 1일부터 시작하여 정확히 1달 소요되었습니다.
사용자 삽입 이미지

25cm 급 항공영상을 해상도 손실 없이 그대로 사용하면서 지적도 역시 SHP 파일을 그대로 사용하는 시스템입니다. 장점은 역시.... 지도 표시 속도가 빠르다는 것.. 그리고 대용량의 공간 데이터를 메모리 제약 없이 사용할 수 있다는 것... 개인적으로는 기본에 충실했다는 것... 보다 자세한 내용은 지오서비스(www.geoservice.co.kr)의 자료실을 참고하시기 바랍니다.

현장이라는 특성상.. 통신이 않되는 상황에서도 지도를 살펴볼 수 있습니다.. 이번에 개발한 스마트 현장지원 시스템은 기본적인 GIS 기능을 담고 있고.. 추후 사용자의 요구사항에 대해 빠르게 커스커마이징 할 수 있도록 개발되었습니다.

오는 3월 31일에.. 네이버 GIS 프로그래밍 연구소(cafe.naver.com/gisdev)에서 개발자분들에게 블랙포인트 엔진에 대한 소개와 엔진을 개발할때 격었던 문제점과 해결책을 공유할 예정입니다. 관심있는 분들은 꼭 참석해 보시기 바랍니다. 이외에도 다른 GIS 개발자분들이 개발한 엔진에 대한 소개가 진행될 예정입니다. GIS 개발자분들에게는 소통의 장이 될 수 있을 거라 생각합니다..
Tag : , ,
2012/03/03 07:30 2012/03/03 07:30
[BlackPoint-Xr] 그룹 레이어(GroupLayer)

BlackPoint-Xr은 항공영상이나 수치지도를 레이어 개념으로 관리하고 화면상에 도시(Map Display)합니다. 이때 다수의 레이어를 하나의 레이어로 다룸으로써 많은 레이어를 일관적으로 관리할 수 있고 개발 편의성을 향상 시킬 수 있는 방법으로써 그룹 레이어(GroupLayer)를 지원합니다. 아래의 코드는 블랙포인트에서 그룹 레이어에 대한 코드 예입니다.

1번과 2번 코드를 통해 xrrLyr이라는 레이어 식별자자로써 이름을 지정한 그룹 레이어를 생성해 추가합니다. 그리고 4번 코드를 통해 xrrFiles라는 컨테이너에 다수의 공간 데이터 파일 이름 목록을 구하고 이 다수의 공간 데이터 파일을 통해 동일한 개수의 레이어를 생성합니다. 이 다수의 레이어를 1번 코드에서 생성한 그룹레이어에 추가합니다.

그룹 레이어의 사용에서 주의할점은 반드시 그룹 레이어를 먼저 맵 엔진에 먼저 추가하고 구성하고자 하는 레이어들을 그룹 레이어에 추가해야 합니다.

Tag : ,
2012/02/21 10:29 2012/02/21 10:29
[BlackPoint] SHP에서 원하는 도형을 하일라이팅 하기

SHP 파일로된 레이어에서 원하는 도형은 FID값을 통해 얻을 수 있습니다. 이렇게 얻은 도형을 선택되었다는 의미를 사용자에게 전달하기 위해 다른 색상으로 그려줄 필요가 있습니다. 아래의 코드는 이런 경우에 대한 예제입니다. 먼저 SHP 파일로된 레이어는 레이어의 이름을 통해 아래와 같은 방식으로 레이어를 얻을 수 있습니다.
2번 코드에서 공간 도형을 얻어내기 위해 ShapeAccess의 인스턴스를 얻고 있습니다. 그리고 FID가 100번인 공간 도형을 얻는 코드는 아래와 같습니다.
4번 코드에서 sr을 통해 공간 도형을 얻을 수 있고 6번 코드쯤에서 얻은 공간 도형을 하일라이팅 시키는 코드군이 위치합니다. 사실... 특별히 도형을 하일라이팅 시키는 코드를 블랙포이트에서 제공하지 않습니다. 다만 원하는 결과를 그래픽 레이어를 통해 얻을 수 있습니다. 즉, 앞서 얻은 공간 도형의 좌표를 통해 그래픽 레이어에 똑 같은 모양으로 추가하고.. 추가한 그래픽 항목의 색상을 원하는 하일라이팅 색상으로 지정만 해주면 됩니다. 위의 코드에서 6번 부분에 해당하는 코드는 아래와 같습니다.
그래픽 레이어는 앱이 처음 실행될때 레이어로써 추가되어져 있습니다. 이 그래픽 레이어의 이름을 hilight_gl이라고 지정해 주었으므로 어디에서나 이 그래픽 레이어를 참조할 수 있습니다. 위의 코드를 응용해서 앱의 실행 결과는 아래와 같습니다. 어떤 도형을 터치하면 터치된 도형이 하일라이팅 되도록 하는 경우입니다.

사용자 삽입 이미지

Tag : , ,
2012/02/21 10:14 2012/02/21 10:14
[Java] 특정 폴더에서 원하는 확장자를 가지는 파일 목록 구하기

원하는 폴더 안에.. 특정한 확장자를 가지는 파일 목록을 얻어야 할때가 있습니다. 예를 들어서 D:/TEMP라는 폴더안에 확장자가 SHP인 파일의 목록을 배열 형태로 반환하도록 하는 경우이지요. 이때 사용할만한 함수입니다.

제가 이 함수가 필요했던 이유는.. 특정 폴더에 존재하는 수백개의 항공영상이나 수백개의 SHP 파일을 한꺼번에 레이어로 추가하고자 하는 필요 때문이였습니다.

아래의 코드는 안드로이드 기반의 GIS 엔진인 블랙포인트에서 위의 함수를 사용해 25cm 해상도의 192개의 항공영상(GEOTIFF 기준으로 40GB 이상)과 일정한 격자로 나눈  SHP 파일 185개(전체 용량 85MB)를 올리는 코드예입니다.

아래는 위의 코드에 반영된 시스템에 대한 실행 화면입니다. 클릭하면 원본 크기로 볼 수 있습니다.

사용자 삽입 이미지

Tag : , , , , ,
2012/02/17 04:17 2012/02/17 04:17
[BlackPoint-Xr] 레이어의 전체 Feature들의 속성 및 도형 정보 구하기
속성과 도형 데이터를 하나로 묶은 것을 피쳐(Feature)라고 할때.. 대표적으로 SHP 파일과 DBF 파일의 쌍을 예로 들수 있겠습니다. 이 Feature의 공간 데이터와 속성 데이터를 읽는 예에 대한 전체 코드 구성입니다.

이 코드는 블랙포인트 2.0에서 제공하는 API입니다. 블랙포인트 1.0에서는 제공되지 않습니다.
Tag : , ,
2012/01/09 15:05 2012/01/09 15:05
[BlackPoint] 지도 축척 제한하는 방법에 대한 예제 코드
안드로이드 기반의 GIS 엔진인 블랙포인트은 사용자가 볼 수 있는 지도의 축척을 일정한 범위로 제한할 수 있습니다. 아래의 코드는 축척을 1:700000 ㅡ 1:500 사이에서만 지도를 볼 수 있도록 하는 예제입니다.

블랙포인트는 축척이 변경될때마다 축척 변경에 대한 이벤트가 발생합니다. 이 이벤트를 이용하는 방법인데요. 이 축척 변경 이벤트 안에서 축척값을 조사해 범위를 벗어나면 축척값을 다시 설정해 주면 원하는 결과를 얻을 수 있습니다.
Tag : ,
2011/12/28 09:16 2011/12/28 09:16
[BlackPoint] 코드를 이용한 기본 지도뷰 조작

먼저 블랙포인트를 이용해 구로구의 행정동 SHP 파일을 통해 레이어를 추가합니다. 레이어 추가 코드는 아래와 같습니다.

단지 레이어를 추가한 상태인지라.. 실행을 해도 화면 상에는 아무것도 표현되지 않습니다. 필요한 것은 현재 화면에 보여질 지도 영역을 지정해 주는 것입니다. 먼저 지도 이동 및 지도 축척 지정에 대한 코드입니다.

지도 좌표 (298722, 544094)를 화면 중심으로 위치하고 지도 축척을 1:200000으로 지정해 주는 코드입니다. 실행 결과는 아래와 같습니다.

사용자 삽입 이미지

위의 코드 대신에 아래의 코드는 지도를 110% 확대하는 코드입니다.
결과는 아래와 같습니다.

사용자 삽입 이미지

이와 대응하는 함수로써 90%로 축소시키는 코드는 ZoomOut 입니다. 다음 코드는 보고자 하는 지도 영역을 지정하는 코드입니다.
결과는 아래와 같습니다.

사용자 삽입 이미지

여기서 주의할 점은 지정한 지도 영역과 화면상에 실제로 표시된 지도 영역이 정확히 일치하지 않는다는 점입니다. 이는 지정한 지도 영역과 실제 화면의 가로/세로 비율이 일치하지 않기 때문입니다.

끝으로 지도를 회전시키는 코드입니다. 시계 방향으로 45도 회전시키는 코드는 아래와 같습니다.

반시계 방향은 마이너스(-) 값을 주면 됩니다. 위 코드의 실행 결과는 아래와 같습니다.

사용자 삽입 이미지

또한 현재 회전된 각도 값을 알기 위해서는 CoordMapper의 getRotationAngle 함수를 통해 얻을 수 있습니다.

Tag : , ,
2011/12/27 07:29 2011/12/27 07:29
[BlackPoint] 지도 축척에 따라 레이어 및 라벨 가시화 설정
블랙포인트에서 ShapeLayer는 SHP 파일 또는 공간서버에서 받은 좌표값 리스트와 속성 데이터를 통해 도형과 라벨을 화면상에 표시할 수 있습니다. 이러한 도형과 라벨에 대해 지도의 축척에 따라 보일지 않보일지를 지정하는 코드의 예는 아래와 같습니다.

1~2번 코드는 지도 컨트롤의 LayerManager를 통해 레이어를 추가하는 일반적인 코드입니다. 그리고 4~7번 코드는 라벨을 표시하기 위해 사용될 데이터 테이블의 필드명과 라벨의 사용 여부 및 라벨의 폰트 크기를 지정하고 있는 코드입니다.

9~12번 코드가 바로 도형에 대해서 원하는 축척 범위 안에서 보이도록 하는 코드로써 1/1 ~ 1/100000의 범위에서만 도형을 보이도록 지정하고 있습니다. 그리고 14~17번 코드가 라벨에 대해서 원하는 축척 범위안에서 보이도록 하는 코드로써 1/1 ~ 1/20000의 범위에서만 라벨을 보이도록 지정하고 있습니다.

결국 위의 코드는 아래의 이미지처럼 지정된 축척 범위에서만 도형과 라벨을 표시하게 됩니다.

사용자 삽입 이미지
Tag : , ,
2011/12/22 19:28 2011/12/22 19:28
[BlackPoint] 지도 배경색상 변경
블랙포인트의 지도의 배경 색상은 기본적으로 검정색(Black)입니다. 이 기본 색상을 사용자가 원하는 색상으로 변경하는 코드는 다음과 같습니다.

위의 코드를 통해 변경된 지도의 배경색상이 반영된 화면은 다음과 같습니다.

사용자 삽입 이미지

기본값인 검정색보다.. 좀더 운치있는 색상을 적용하면 좋을듯합니다.
Tag : , ,
2011/12/21 13:40 2011/12/21 13:40
[BlackPoint] GPS의 좌표계 설정
블랙포인트는 안드로이드 기반의 GIS 엔진으로써 디바이스의 GPS를 통해 현재 위치를 지도 상에 쉽게 찾아 갈 수 있습니다. GPS는 기본적으로 WGS84 타원체의 경위도 좌표계입니다. 만약 사용하는 지도 데이터가 WGS84 경위도 좌표계라면 별 문제가 없지만 지도 데이터가 WGS84 경위도 좌표계가 아닌 다른 좌표계인 경우 좌표계 변환을 해주어야 합니다.

아래의 코드는 수신받은 GPS 좌표를 카텍(Katec) 좌표계로 변환해 사용하겠다는 의미의 코드입니다.

이렇게 하면 GPS에서 수신받은 WGS84 경위도 좌표가 카텍(Katec)으로 변환되어 개발자(사용자)가 사용할 수 있습니다.

블랙포인트는 GPS의 기능을 XrMap의 LocationManager라는 타입의 클래스를 통해 접근할 수 있습니다. 위의 코드에서 getLocationManager() 라는 매서드를 통해 얻을 수 있는 바로 그 클래스입니다.

아래의 코드는 GPS로 부터 수신받은 좌표를 통해 지도를 이동시키는 코드의 예입니다.

물론 위의 코드가 제대로 작동하기 위해서는 모바일 디바이스의 GPS가 활성화되어야 하며 LocationManager의 start() 매서드가 호출되어져야 합니다. start()와 반대로 stop()은 GPS로부터 위치값을 받기를 멈춥니다.

또한 블랙포인트는 트래킹 모드(Tracking Mode) 기능을 지원하여 위의 코드처럼 직접 위치를 이동시켜주지 않고 자동으로 위치를 항상 화면 중앙으로 맞춰주도록 하는 기능이 있습니다. 이 기능을 활성화 시키는 코드는 아래와 같습니다.

Tag : , ,
2011/12/20 09:10 2011/12/20 09:10
[BlackPoint] 레이어의 MBR 얻기
그래픽 레이어나 SHP 파일을 통한 레이어에서 MBR을 구하는 코드는 다음과 같습니다.

주의할 점은 레이어의 MBR을 얻기 위해서는 먼저 LayerManager의 addLayer 매서드를 통해 레이어로 추가된 후여야 한다는 점입니다. 이는 addLayer 매서드가 수행되어야 해당 Layer의 MBR 정보를 데이터 소스로부터 읽어 오기 때문입니다. 또한 모든 레이어에 대한 MBR을 합한 전체 MBR을 얻어 오는 코드는 다음과 같습니다.

MBR의 중심점은 다음 코드로 쉽게 얻을 수 있습니다.

Tag : , ,
2011/12/18 00:50 2011/12/18 00:50
[BlackPoint] Identify 기능 구현

안드로이드 기반의 범용 GIS 엔진인 블랙포인트에서 SHP 파일을 화면에 표시한 뒤에 터치를 통해 도형의 속성을 확인하는 Identify 기능에 대한 API 사용 방법입니다.

먼저 터치를 통한 속성을 확인할 SHP 파일을 레이어로 추가하는 코드는 다음과 같습니다.

기억해야 할 것은 추가한 레이어의 이름을 7번 코드처럼 ri_layer로 지정했다는 것과 10번 코드를 통해 화면 상에 표시되는 도형에 대한 FID를 기억해 두라는 코드입니다. 10번 코드가 꼭 필요한 것은 아니지만 속도 향상을 위해서라면 추가해 주는 것이 좋습니다. 위의 코드를 통해 레이어가 추가된 화면은 다음과 같습니다.

사용자 삽입 이미지

다음 코드는 레이어를 추가한 후에 지도의 위치를 설정해 주는 코드입니다.

(145207, 263662) 좌표가 화면의 중심에 놓일 것이며 지도 축척은 1:740000이 될 것입니다. 위의 addLayer 함수와 moveMap 코드를 Activity의 onStart 함수에서 실행합니다.

12번과 13번 코드가 바로 레이어 추가와 지도 이동에 대한 함수입니다. 15번 코드는 블랙포인트의 맵 컴포넌트에서 터치 이벤트를 발생할 수 있도록 풀어주는 코드입니다. 15번 코드처럼 마우스 모드를 PickingMode로 지정하지 않으면 지도 조작(지도 확대/축소, 이동, 회전)으로 화면 터치 이벤트가 활용됩니다. PickingMode로 지정해 줌으로써 화면 터치가 더 이상 지도 조작 기능이 아닌 본래의 터치 이벤트 발생으로써 반응합니다. 16번 코드는 화면 터치에 대한 이벤트를 설정해 주기 위한 함수로 다음과 같습니다.

코드가... 졸라맨입니다.. ㅡ_ㅜ 어렵지 않은 코드이니.. 하나 하나 설명드리면 다음과 같습니다. 2번 코드는 일반적으로 안드로이드에서 터치에 대한 TapUp 이벤크 리스너를 할당하는 코드입니다. 4번 코드는 터치가 발생하는 순간에 지도가 그려지고 있는지를 상태를 저장해 둡니다. 5번 코드는 인자를 true로 줌으로써 강제로 지도 그리기를 멈추게 합니다. 만약 false를 주면 지도 그리기가 완료될때까지 대기합니다. 7~8번 코드는 앞서 레이어를 추가할때 지정해 둔 레이어 이름으로 레이어를 얻어옵니다. 11~13번 코드는 화면 좌표를 지도 좌표로 변환하는 코드입니다. 15번 코드가 터치된 위치의 도형의 ID 목록을 얻어오는 코드입니다. 19~26번 코드는 터치된 도형의 속성을 얻기 위한 객체를 준비하는 것이고 실제 24번 코드를 통해 파일에서 속성값을 로드(load)합니다. 28~38번 코드는 속성값으로 메세지로 표시할 문자열값을 구성합니다. 그리고 40~50번 코드를 통해 문자열을 화면에 대화창으로 표시합니다. 53~55번은 앞에서 저장해둔 터치 당시에 지도 그리기 중이였다면 다시 지도를 그리도록 합니다. 그리고 57번의 return문을 통해 함수를 종료합니다. 이후의 코드는 터치한 위치에 도형이 존재하지 않는다라는 메세지를 표시하는 코드입니다. 코드보다... 설명이 더 간단하군요... ㅡOㅡ; 아래의 결과는 실제 터치를 통해 속성값 정보가 표현된 화면입니다.

사용자 삽입 이미지

장황한 설명이였지만.. 실제 코드는 어렵지 않습니다. 아래 URL을 통해 전체 소스 코드를 다운로드해 다시 살펴보시기 바랍니다.

Tag : , ,
2011/12/17 15:47 2011/12/17 15:47
[BlackPoint] 공간연산자 실행 예제
블랙포인트(BlackPoint-Xr)는 안드로이드 기반의 범용 GIS 엔진으로 지오서비스(www.geoservice.co.kr)에서 개발한 제품입니다. 범용 GIS 엔진으로써 갖춰야 하는 기능 중.. 공간 연산 기능에 대한 예입니다. 공간연산 기능은 다양하며.. 그 다양한 기능 중 버퍼(buffer) 기능에 대한 예를 통해 블랙포인트의 공간연산기능을 소개하겠습니다.

먼저 터치를 통해 화면상에 폴리라인을 스케치 합니다. 터치를 통해 폴리라인을 그리면 아래의 화면처럼 폴리라인이 추가됩니다.
사용자 삽입 이미지

이 폴리라인에 버퍼(Buffer) 연산을 수행해 보는 코드는 다음과 같습니다.

위의 코드에 대한 결과에 대한 화면은 다음과 같습니다.

사용자 삽입 이미지
Tag : , ,
2011/12/15 15:52 2011/12/15 15:52
[BlackPoint] 그래픽 레이어의 구성 요소 제거
그래픽 레이어의 구성 항목을 모두 제거하는 코드는 다음과 같습니다.

아래의 코드는 특정한 ID 값을 갖는 항목을 제거하는 코드입니다.

아래는 위의 기능과 동일한 특정한 ID값을 갖는 그래픽 항목을 제거하는 좀 더 간단한 다른 코드입니다.


Tag : , ,
2011/12/13 19:09 2011/12/13 19:09
[BlackPoint] 폴리라인 그래픽의 좌표 변경하기
블랙포인트는 사용자가 원하는 그래픽 요소를 구성하기 위한 레이어로써 GraphicLayer 기능을 가지고 있습니다. GraphicLayer를 통해 Point, Polyline, Polygon, Rectangle, Circle, Ellipse, Text를 표현할 수 있습니다. 아래의 코드는 그래픽 레이어를 추가하고 이 그래픽 레이어에 Polyline을 추가하는 코드입니다.

결과는 아래와 같이 5개의 정점으로 구성된 폴리라인이 표시됩니다.

사용자 삽입 이미지

일단 그래픽 레이어에 폴리라인이 추가되면 폴리라인을 구성하는 정점과 심벌을 자유롭게 변경할 수 있습니다. 아래는 폴리라인을 구성하는 정점 리스트를 얻는 코드입니다.

정점의 인덱스가 1인, 즉 두번째 정점을 제거했으므로 다음과 같이 폴리라인의 변경됩니다.

사용자 삽입 이미지

여기서 주의할 점은 현재 폴리라인 그래픽 요소는 Single입니다. 현재 Multi Polyline 형태로 개선 중에 있으므로 지금은 ArrayList<PointD> 타입이지만 추후 ArrayList<ArrayList<PointD>> 타입으로 변경될 수 있습니다.
Tag :
2011/12/05 09:57 2011/12/05 09:57
[BlackPoint] 공간 데이터 편집 기능
블랙포인트는 안드로이드 기반의 범용 GIS 엔진입니다. 별도의 맵 컴포넌트를 View 형태로 제공함으로써 개발하고자 하는 시스템에 쉽게 사용할 수 있습니다. 블랙포인트는 현장에서 데이터를 취득하기 위한 앱 개발을 위해 현장에서 공간 데이터를 쉽게 편집할 수 있는 공간 데이터 편집 기능을 제공합니다.

사용자 삽입 이미지

위의 화면은 블랙포인트에서 편집 기능에 대한 데모 화면으로 공간 데이터로써 폴리곤을 그릴때 스냅핑 기능을 실행하고 있는 화면입니다. 블랙포인트의 스냅핑 대상은 정점(Vertex)와 세그먼트(Segment)입니다. 이외에도 공간 데이터 편집에 대한 Undo/Redo 기능을 제공하여 보다 정확하고 편리하게 공간 데이터를 편집할 수 있습니다.

다음은 블랙포인트(BlackPoint-Xr)의 편집에 대한 기능 목록 중 일부입니다.
  • 폴리곤/폴리라인/포인트에 대한 Simple Feature Type에 대한 편집
  • 사각형, 원, 타원, 텍스트에 대한 도형 편집
  • 정점 추가 및 삭제 편집
  • 편집 이력에 대한 Undo/Redo 지원
  • 정점과 세그먼트에 대한 스냅핑 기능

블랙포인트에 대해 보다 구체적인 기능이 궁금하시면 언제든 지오서비스(hjkim@geoservice.co.kr)에 문의 하시면 직접 방문하여 시연을 통해 소개해 드리도록 하겠습니다.

Tag : , ,
2011/11/29 21:00 2011/11/29 21:00
[BlackPoint] SHP 파일의 도형 좌표 구하기

다음 코드는 블랙포인트에서 SHP 파일을 통한 레이어에서 특정 FID에 해당하는 도형 정보와 속성 정보를 얻는 예입니다. 먼저 SHP 파일을 통한 레이어 추가는 다음과 같습니다. 레이어 추가에 대한 보다 더 자세한 내용은 http://www.gisdeveloper.co.kr/745 를 참고하시기 바랍니다.

이제 이 레이어에서 도형과 속성 정보에 접근할 수 있는 접근자(Access)를 얻는 코드는 다음과 같습니다.

SHP 파일은 공간 도형 데이터로 구성되므로 접근자가 ShapeAccess 클래스 타입입니다. 다음으로 FID를 알고 있다고 할때 해당 FID의 도형정보(MBR과 첫번째 구성 좌표)를 얻는 코드는 다음과 같습니다.

블랙포인트는 SHP 파일을 통해 레이어를 구성할때 안드로이드의 메모리 한계에 대한 제약을 받지 않도록 하기 위해 메모리를 사용하지 않습니다. 이러한 전제조건으로 인해 위와 같은 다소 특이한.... 코드 사용이 나타나고 있습니다. 1번 코드에서 loadById 매서드를 통해 Row를 메모리에 올립니다. getRow라는 매서드도 제공하는데.. SHP 파일의 경우 getRow는 언제나 null을 반환합니다. 앞서 설명드렸듯... 이는 SHP 파일을 통한 레이어는 메모리를 사용하지 않는다는 전제조건(제약) 때문입니다. 결국 loadById를 통해 Row를 얻고 해당 FID에 대한 Row가 존재하는지 2번 줄의 조건문에서 확인해서 3번 코드를 통해 MBR을 얻습니다. 그리고 도형의 구성 좌표를 얻기 위해 4번 코드처럼 ShapeRow로 형변환한 후.. 도형을 얻고(getShape 매서드) getVertex를 통해 도형을 구성하는 첫번째 좌표를 얻습니다. getVertex 매서드의 첫번째 인자는 파트(Part) 인덱스이고 두번째 인자는 정점 인덱스입니다. 파트라는 인자가 나오는 이유는 멀티 폴리곤, 멀티 폴리라인 등과 같이 여러개의 파트로 구성된 도형의 좌표를 구분하기 위함입니다.

끝으로... 오늘도 제가 가장 많이 달렸군요.........

사용자 삽입 이미지

Tag : , ,
2011/11/14 16:15 2011/11/14 16:15
[BlackPoint] 축척 변경 이벤트 예제
블랙포인트는 화면 상의 지도에 대한 축척이 변경했을 경우에 이벤트가 발생합니다. 아래의 코드는 블랙포인트의 지도 컴포넌트인 XrMap에 대해서 지도 축척에 대한 변경이 발생했을때 이벤트를 처리하기 위한 핸들러를 지정하는 코드입니다.

이 코드는 축척이 변경되었을때 축척변경이라는 메세지를 나타내도록 한 예입니다. 지도의 축척이 변경된 경우는 터치를 통한 지도 확대/축소가 가장 대표적인 경우입니다.
Tag : , ,
2011/09/26 09:35 2011/09/26 09:35
[BlackPoint] 레이어 추가

사용자 삽입 이미지
블랙포인트는 지오서비스(www.geoservice.co.kr)에서 개발한 안드로이드 기반의 GIS 엔진으로써 수치지도와 항공영상을 표시할 수 있으며 GPS로부터 위치를 받아 빠르게 자신의 위치를 지도 상에서 파악할 수 있습니다. 또한 사용자 정의 그래픽 요소를 화면 터치나 API를 통해 입력할 수 있으며 수치지도를 생성하고 편집할 수 있습니다.

아래의 코드는 블랙포인트에서 SHP 파일을 통한 레이어를 추가하는 코드입니다. SD 메모리에 존재하는 SHP 파일을 추가합니다. 레이어를 추가하고 색상 심벌과 라벨을 설정하는 전반적인 코드를 제시하고 있습니다.
1~4번 코드는 SD 메모리가 디바이스에 마운트된 상태인지를 판단하는 코드입니다. 안드로이드가 리눅스 기반이므로 외부 저장장치에 대한 사용 가능성은 마운트라는 개념으로 판단됩니다. 5번 코드의 map은 블랙포인트에서 제공하는 맵 뷰(View) 컴포넌트입니다. 안드로이드의 View 컴포넌트로부터 상속받습니다. 7~10번 코드가 실제 SHP 파일로부터 레이어를 생성하는 코드입니다. 12~16번은 레이어를 그리기 위한 색상 심벌을 지정하는 코드입니다. 18번 코드가 실제로 맵에 레이어를 추가하는 코드입니다. 20~23번 코드는 레이어에 라벨을 표시하도록 지정하는 코드로 반드시 맵에 레이어로 추가된 이후에 호출해야합니다. 이유는 라벨 표시를 위해 속성 정보를 필요로 하며 이 속성 정보의 사용가능 여부는 맵에 레이어로 추가되어 연결된(Connected) 상태여야 하기 때문입니다. 실행 결과는 아래와 같습니다.

사용자 삽입 이미지

다음 코드는 블랙포인트에서 위성영상에 해당하는 영상 레이어를 추가하는 코드입니다. 위의 코드와 마찬가지로 SD 메모리의 가능 여부를 체크할 필요가 있으나 위의 코드와 중복되므로 생략합니다.

항공영상 레이어는 TileImageLayer라는 클래스로 생성되는데 이는 항공영상의 빠른 화면 표출을 위해 피라미드 형태로 이미지를 가공하고 다시 일정한 크기의 타일 이미지로 가공되어 처리된 데이터 파일로부터 데이터를 읽어오기 때문입니다. 블랙포인트에서 사용하는 항공영상은 geotiff를 자체 포맷으로 변환한 XrR을 사용하며 변환툴은 http://www.gisdeveloper.co.kr/741 을 통해 다운로드 받을 수 있습니다. 5~8번은 축척에 따라 레이어가 보이고 않보이고의 여부를 지정하고 있는 코드입니다. 실행결과는 아래와 같습니다.

사용자 삽입 이미지

Tag : , ,
2011/09/23 14:31 2011/09/23 14:31
[BlackPoint] 모바일 GIS 엔진, 블랙포인트의 GPS 연동 기능
안드로이드 기반의 GIS 엔진인 블랙포인트의 GPS 연동 기능입니다. 사무실에서 창가에 모바일 기기를 위치해 놓고 캡춰한 화면입니다.

아이폰이라면 기본적인 기기자체의 화면 캡춰 기능으로 외부에서 테스트해 볼 수 있겠지만.. 이 안드로이드는 USB로 붙여 놔야 화면 캡춰가 가능한 관계로 사무실 안에서 테스트 해봅니다.

사용자 삽입 이미지

투명한 초록색이 오차 범위를 나타냅니다. 그리고 노란색 조막만한 애가 GPS가 보내는 위치입니다. 배경 지도는 강남쪽 일부에 대한 건물과 도로 SHP 파일을 올려 놓은 것이구요.

사무실이라 그런지.. 오차가.. 위의 캡춰한 이미지를 기준으로 30m 정도나네요.. 이건 좀 예외적인건데.. 실내에서 아무리 창가라고 해도 상당한 오차가 납니다. 근데 실외로 나가도 이 정도 오차는 납니다. 휴대용 GPS 오차가 있을테고.. 지도 자체의 좌표변환 오차가 있을테고 말입니다.

무척 오래전에 GPS Logger를 구입해 볼까했던 적이 있었습니다. 그때는 스마트폰이 활성화 되기 이전인데.. 가격이 싸게는 몇만에서 십만원 정도 했더랬습니다. GPS Logger는 내가 그날 하루 움직인 경로에 대한 좌표를 단순히 기록만 해주는 장치인데.. 이 기록을 USB에 연결해 파일로 받아 볼 수 있는 매우 단순한 기기입니다. 뭐.... 시간이 흘러서.. 이런 GPS Logger는 이제 돈주고 살필요가 없겠군요. 언제 기회가 닿으면 블랙포인트 솔루션으로 이 GPS Logger를 만들어 봐야겠습니다..
Tag : ,
2011/07/07 18:14 2011/07/07 18:14
[BlackPoint] 항공영상 레이어 지원
현재 지오서비스에서 개발중인 안드로이드 기반의 GIS 솔루션인 블랙포인트에서 대용량의 항공영상 파일을 빠르게 화면상에 표시할 수 있는 기능이 추가되었습니다. 블랙포인트는 모바일 GIS 엔진으로 현장 중심의 데이터 편집 시스템 개발을 주목적으로 합니다. 네트워크가 되지 않은 현장을 지원하기 위해 SHP, 항공영상 등을 SD 메모리에 담아 어디서든 화면상에 표시하고 GPS를 통해 현재의 위치를 쉽게 파악하여 시설물등에 대한 도형 데이터를 생성하여 SHP 파일등으로 생성할 수 있습니다.
사용자 삽입 이미지

블랙포인트의 항공영상 표시 기능은 다음과 같은 장점을 갖습니다.
  1. 메모리를 거의 사용하지 않아 모바일 디바이스의 리소스 제약에 영향을 전혀 받지 않는다.
  2. 항공영상 파일을 로딩할때 준비하는 과정 없이 바로 화면에 표시된다.
  3. 일반 PC에서 항공영상을 표시하는 것처럼 매우 빠르다.

다음은 블랙포인트에서 SHP 파일을 표시하는 기능에 대한 화면입니다. 블랙포인트에서 SHP 파일을 표시하는데 사용하는 SHP 라이브러리는 지오서비스에서 개발하여 오픈소스로 제공하고 있는 SimpleSHP 라이브러리(http://www.gisdeveloper.co.kr/notice/716)를 사용하였습니다.

사용자 삽입 이미지

Tag : ,
2011/05/31 14:26 2011/05/31 14:26
[BlackPoint] 블랙포인트 SHP 파일 로딩 및 뷰

블랙포인트라는 코드명으로 모바일 GIS 솔루션을 개발하고 있습니다. SHP 파일을 읽어 지도를 이동하고 회전 및 줌하는 기능에 대한 단위테스트를 구현해 보았는데요. SHP 파일 읽기는 예전에 오픈소스 형태로 공개한 SimpleSHP라는 오픈소스를 이용하였습니다. 일단.. 애뮬레이터에서 테스트 해보고 있는데... 애뮬레이터가 정말.. 정말.. 정말 느리네요.. 실제 프로젝트는 애뮬레이터 가지고는 어림없겠습니다.. 위의 시연 영상은 원래 속도를 몇배 더 빠르게 한 플레이니.. 참고하시기 바랍니다.
Tag : , ,
BLOG main image
 Notice
DuraMap-Xr 소개 및 다운로드
[오픈소스] SimpleSHP v0.1
FingerEyes-Xr 소개 및 다운로드
OpenGL Tutorials
 Category
전체 (552)
GIS 개발 (155)
프로그래밍 (240)
스치는 생각들 (128)
번역 또는 집필 (3)
영작학습 (6)
 TAGS
GIS Xr OpenGL Shader BlackPoint FingerEyes Algorithm Java Map Engine WPF
 Calendar
«   2012/05   »
    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
English Writing Study
English Writing Study
English Writing Study 4
English Writing Study 3
English Writing Study 2
 Recent Comments
안녕하세요~ 코봉히님....
김형준 - 05/15
동부->중부 좌표변환할 일...
코봉히 - 05/14
잘봤습니다.
지나가다 - 05/11
지금 사용하고 있는 dem...
김형준 - 05/04
단면도 측정 결과를 보고....
아무개 - 05/02
출처를 밝히시면 마음껏...
김형준(Dip2K) - 05/02
하나더 말씀을 안드렸네요...
Begginer - 05/02
고맙습니다. OpenGL으로...
Begginer - 05/02
네, 기존 버전에 대해 불...
김형준(Dip2K) - 05/01
정말 감사합니다..새로운...
조성각 - 05/01
 Archive
2012/05
2012/04
2012/03
2012/02
2012/01
2011/12
2011/11
2011/10
2011/09
2011/08
2011/07
2011/06
 Link Site
Adobe Flex 3 Help
Cartograph 2.0
GADM
GIS 위키디피아
GIS 프로그래밍 연구소
MapTools.org
OGC
OGRE3D
OSGeo 한국 지부
Paul Bourke Site
Wikipedia
국가수자원관리 정보시스템
국립지리원
국토연구원
국토해양부
네이버 과학
대한측량협회
류광님의 블로그
이민파님의 공간분석과 리...
지오서비스(GeoService)
 Visitor Statistics
Total : 982097
Today : 119
Yesterday : 582
태터툴즈 배너
rss