| |
|
|
|
|
|
| 먼저 블랙포인트를 이용해 구로구의 행정동 SHP 파일을 통해 레이어를 추가합니다. 레이어 추가 코드는 아래와 같습니다.
단지 레이어를 추가한 상태인지라.. 실행을 해도 화면 상에는 아무것도 표현되지 않습니다. 필요한 것은 현재 화면에 보여질 지도 영역을 지정해 주는 것입니다. 먼저 지도 이동 및 지도 축척 지정에 대한 코드입니다.
지도 좌표 (298722, 544094)를 화면 중심으로 위치하고 지도 축척을 1:200000으로 지정해 주는 코드입니다. 실행 결과는 아래와 같습니다.
위의 코드 대신에 아래의 코드는 지도를 110% 확대하는 코드입니다. 결과는 아래와 같습니다.
이와 대응하는 함수로써 90%로 축소시키는 코드는 ZoomOut 입니다. 다음 코드는 보고자 하는 지도 영역을 지정하는 코드입니다. 결과는 아래와 같습니다.
여기서 주의할 점은 지정한 지도 영역과 화면상에 실제로 표시된 지도 영역이 정확히 일치하지 않는다는 점입니다. 이는 지정한 지도 영역과 실제 화면의 가로/세로 비율이 일치하지 않기 때문입니다.
끝으로 지도를 회전시키는 코드입니다. 시계 방향으로 45도 회전시키는 코드는 아래와 같습니다.
반시계 방향은 마이너스(-) 값을 주면 됩니다. 위 코드의 실행 결과는 아래와 같습니다.
또한 현재 회전된 각도 값을 알기 위해서는 CoordMapper의 getRotationAngle 함수를 통해 얻을 수 있습니다.
|
김형준(Dip2K)
2011/12/28 09:16
2011/12/28 09:16
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/790 |
|
|
|
|
|
|
|
| 자바에서 서버가 제공하는 바이너리 데이터를 받아 저장해 주는 코드입니다. 필요할 때 찾아 보기 쉽도록 정리해 봅니다.
위의 코드는 사용해 보니 문제가 있습니다. 이유는 6번 코드를 통해 서버로부터 받은 데이터의 크기가 항상 옳바르지 않다는 것입니다. 예를 들어 데이터가 클 경우.. -1이 반환되기도 합니다. 이러한 이유로 위의 코드는 사용하면 않되고.. 아래의 코드를 사용하시기 바랍니다.
|
김형준(Dip2K)
2011/12/27 10:22
2011/12/27 10:22
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/789 |
|
|
|
|
|
|
|
블랙포인트에서 ShapeLayer는 SHP 파일 또는 공간서버에서 받은 좌표값 리스트와 속성 데이터를 통해 도형과 라벨을 화면상에 표시할 수 있습니다. 이러한 도형과 라벨에 대해 지도의 축척에 따라 보일지 않보일지를 지정하는 코드의 예는 아래와 같습니다.
1~2번 코드는 지도 컨트롤의 LayerManager를 통해 레이어를 추가하는 일반적인 코드입니다. 그리고 4~7번 코드는 라벨을 표시하기 위해 사용될 데이터 테이블의 필드명과 라벨의 사용 여부 및 라벨의 폰트 크기를 지정하고 있는 코드입니다.
9~12번 코드가 바로 도형에 대해서 원하는 축척 범위 안에서 보이도록 하는 코드로써 1/1 ~ 1/100000의 범위에서만 도형을 보이도록 지정하고 있습니다. 그리고 14~17번 코드가 라벨에 대해서 원하는 축척 범위안에서 보이도록 하는 코드로써 1/1 ~ 1/20000의 범위에서만 라벨을 보이도록 지정하고 있습니다.
결국 위의 코드는 아래의 이미지처럼 지정된 축척 범위에서만 도형과 라벨을 표시하게 됩니다.
|
김형준(Dip2K)
2011/12/27 07:29
2011/12/27 07:29
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/788 |
|
|
|
|
|
|
|
블랙포인트의 지도의 배경 색상은 기본적으로 검정색(Black)입니다. 이 기본 색상을 사용자가 원하는 색상으로 변경하는 코드는 다음과 같습니다.
위의 코드를 통해 변경된 지도의 배경색상이 반영된 화면은 다음과 같습니다.
기본값인 검정색보다.. 좀더 운치있는 색상을 적용하면 좋을듯합니다.
|
김형준(Dip2K)
2011/12/22 19:28
2011/12/22 19:28
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/787 |
|
|
|
|
|
|
|
블랙포인트는 안드로이드 기반의 GIS 엔진으로써 디바이스의 GPS를 통해 현재 위치를 지도 상에 쉽게 찾아 갈 수 있습니다. GPS는 기본적으로 WGS84 타원체의 경위도 좌표계입니다. 만약 사용하는 지도 데이터가 WGS84 경위도 좌표계라면 별 문제가 없지만 지도 데이터가 WGS84 경위도 좌표계가 아닌 다른 좌표계인 경우 좌표계 변환을 해주어야 합니다.
아래의 코드는 수신받은 GPS 좌표를 카텍(Katec) 좌표계로 변환해 사용하겠다는 의미의 코드입니다.
이렇게 하면 GPS에서 수신받은 WGS84 경위도 좌표가 카텍(Katec)으로 변환되어 개발자(사용자)가 사용할 수 있습니다.
블랙포인트는 GPS의 기능을 XrMap의 LocationManager라는 타입의 클래스를 통해 접근할 수 있습니다. 위의 코드에서 getLocationManager() 라는 매서드를 통해 얻을 수 있는 바로 그 클래스입니다.
아래의 코드는 GPS로 부터 수신받은 좌표를 통해 지도를 이동시키는 코드의 예입니다.
물론 위의 코드가 제대로 작동하기 위해서는 모바일 디바이스의 GPS가 활성화되어야 하며 LocationManager의 start() 매서드가 호출되어져야 합니다. start()와 반대로 stop()은 GPS로부터 위치값을 받기를 멈춥니다.
또한 블랙포인트는 트래킹 모드(Tracking Mode) 기능을 지원하여 위의 코드처럼 직접 위치를 이동시켜주지 않고 자동으로 위치를 항상 화면 중앙으로 맞춰주도록 하는 기능이 있습니다. 이 기능을 활성화 시키는 코드는 아래와 같습니다.
|
김형준(Dip2K)
2011/12/21 13:40
2011/12/21 13:40
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/786 |
|
|
|
|
|
|
|
실제 PNU 값은 자주 변경되며 행안부의 주민등록주소코드 자료실을 통해 다운로드 받으실 수 있습니다.
|
김형준(Dip2K)
2011/12/20 16:47
2011/12/20 16:47
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/785 |
|
|
|
|
|
|
|
그래픽 레이어나 SHP 파일을 통한 레이어에서 MBR을 구하는 코드는 다음과 같습니다.
주의할 점은 레이어의 MBR을 얻기 위해서는 먼저 LayerManager의 addLayer 매서드를 통해 레이어로 추가된 후여야 한다는 점입니다. 이는 addLayer 매서드가 수행되어야 해당 Layer의 MBR 정보를 데이터 소스로부터 읽어 오기 때문입니다. 또한 모든 레이어에 대한 MBR을 합한 전체 MBR을 얻어 오는 코드는 다음과 같습니다.
MBR의 중심점은 다음 코드로 쉽게 얻을 수 있습니다.
|
김형준(Dip2K)
2011/12/20 09:10
2011/12/20 09:10
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/784 |
|
|
|
|
|
|
|
| 안드로이드 기반의 범용 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을 통해 전체 소스 코드를 다운로드해 다시 살펴보시기 바랍니다.
|
김형준(Dip2K)
2011/12/18 00:50
2011/12/18 00:50
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/783 |
|
|
|
|
|
|
|
블랙포인트(BlackPoint-Xr)는 안드로이드 기반의 범용 GIS 엔진으로 지오서비스(www.geoservice.co.kr)에서 개발한 제품입니다. 범용 GIS 엔진으로써 갖춰야 하는 기능 중.. 공간 연산 기능에 대한 예입니다. 공간연산 기능은 다양하며.. 그 다양한 기능 중 버퍼(buffer) 기능에 대한 예를 통해 블랙포인트의 공간연산기능을 소개하겠습니다.
먼저 터치를 통해 화면상에 폴리라인을 스케치 합니다. 터치를 통해 폴리라인을 그리면 아래의 화면처럼 폴리라인이 추가됩니다.
이 폴리라인에 버퍼(Buffer) 연산을 수행해 보는 코드는 다음과 같습니다.
위의 코드에 대한 결과에 대한 화면은 다음과 같습니다.
|
김형준(Dip2K)
2011/12/17 15:47
2011/12/17 15:47
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/779 |
|
|
|
|
|
|
|
크롬에서 플래시 빌더를 통해 개발을 할때 디버깅이 않되는 문제가 있습니다. 이에 대한 해결책입니다. 먼저 크롬을 실행하고 주소창에 about:plugins 을 입력하여 아래 창을 표시합니다.
Flash라고 되어 있는 부분에서 사용 중지를 클릭하여 해당 플러그인의 사용을 비활성화 시킨 후.. 다시 Flash PlugIn Debug를 다운받아 설치합니다. 요지는.. 개발자에게 잇어서 Flash는 2가지 버전이 있는데 하나는 Release용이고 하나는 Debug용입니다. 이중 Release는 사용하지 않고 오직 Debug용만 사용한다는 것입니다. 이렇게 하면 Flash Builder에서도 Chrome을 통해 디버깅이 가능해 집니다.
|
김형준(Dip2K)
2011/12/17 15:13
2011/12/17 15:13
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/782 |
|
|
|
|
|
|
|
그래픽 레이어의 구성 항목을 모두 제거하는 코드는 다음과 같습니다.
아래의 코드는 특정한 ID 값을 갖는 항목을 제거하는 코드입니다.
아래는 위의 기능과 동일한 특정한 ID값을 갖는 그래픽 항목을 제거하는 좀 더 간단한 다른 코드입니다.
|
김형준(Dip2K)
2011/12/15 15:52
2011/12/15 15:52
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/781 |
|
|
|
|
|
|
|
핑거아이즈는 지오서비스에서 개발한 RIA 맵엔진입니다. 기존에 PC 기반의 견고한 GIS 시스템 개발에 안정적으로 활용되어 왔습니다.
최근 플래시를 개발한 Adobe에서 RIA를 통해 한번의 개발로 Android, iOS, BlackBerry 기반의 디바이스에서 구동이 가능한 앱 개발을 적극 지원함으로써 이에 대해 핑거아이즈를 활용하여 안드로이드에서 지도를 볼 수 있는 앱을 간단히 만들어 공개해 봅니다.
어도비의 AIR의 성능이 향상됨에 따라 모바일 디바이스에서 핑거아이즈의 지도 표출 속도 역시 매우 향상되었습니다. 다음은 위의 앱에 대한 안드로이드 설치 파일(APK)입니다. 안드로이드 디바이스를 가지고 계시는 분들은 받아서 설치해 테스트 해보시기 바랍니다.
핑거아이즈(FingerEyes-Xr)는 지오서비스(www.geoservice.co.kr)에서 개발한 GIS 엔진입니다. LGPL 기반의 오픈소스(OpenSource)이며 전체 소스코드는 지오서비스 홈페이지 자료실을 통해 다운로드 받으실 수 있습니다.
|
김형준(Dip2K)
2011/12/14 19:07
2011/12/14 19:07
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/780 |
|
|
|
|
|
|
|
블랙포인트는 사용자가 원하는 그래픽 요소를 구성하기 위한 레이어로써 GraphicLayer 기능을 가지고 있습니다. GraphicLayer를 통해 Point, Polyline, Polygon, Rectangle, Circle, Ellipse, Text를 표현할 수 있습니다. 아래의 코드는 그래픽 레이어를 추가하고 이 그래픽 레이어에 Polyline을 추가하는 코드입니다.
결과는 아래와 같이 5개의 정점으로 구성된 폴리라인이 표시됩니다.
일단 그래픽 레이어에 폴리라인이 추가되면 폴리라인을 구성하는 정점과 심벌을 자유롭게 변경할 수 있습니다. 아래는 폴리라인을 구성하는 정점 리스트를 얻는 코드입니다.
정점의 인덱스가 1인, 즉 두번째 정점을 제거했으므로 다음과 같이 폴리라인의 변경됩니다.
여기서 주의할 점은 현재 폴리라인 그래픽 요소는 Single입니다. 현재 Multi Polyline 형태로 개선 중에 있으므로 지금은 ArrayList<PointD> 타입이지만 추후 ArrayList<ArrayList<PointD>> 타입으로 변경될 수 있습니다.
|
김형준(Dip2K)
2011/12/13 19:09
2011/12/13 19:09
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/778 |
|
|
|
|
|
|
|
모바일 웹에서 플래시를 더 이상 지원하지 않겠다고 했던 어도비가 안드로이드 디바이스에서는 아직도 여전히 웹 기반 플래시를 지원하고 있습니다. 어제 새롭게 릴리즈된 플래시 버전 11.1.111.5입니다.
또한 안드로이드나 iOS에서는 플래시를 이용해 앱으로 개발할 수 있는 AIR는 3.1로 버전업되었습니다. 버전업으로 향상된 기능을 살펴보면.. 속도 향상과 보안 및 안정성에 대한 버그 수정이 이뤄졌다고 하니... 한번 테스트 해봐야겠습니다.
단 한번의 개발로 PC에서.. 그리고 Android, iOS 그리고 BlackBerry에서 모두 구동 가능한 앱 개발이 가능한 어도비의 플래시입니다.
|
김형준(Dip2K)
2011/12/13 09:03
2011/12/13 09:03
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/777 |
|
|
|
|
|
|
|
플랙스에서 컴포넌트의 스킨을 디자인하는 가장 쉬운 방법은 이미지를 이용하는 것입니다. 예를 들어 버튼의 경우.. 버튼의 up, over, down, disabled 상태에 따라 각기 다른 이미지를 만들어 주고 지정해 주면 됩니다. 디자이너의 역량에 따라 매우 높은 퀄리티를 낼 수 있습니다.
이 글은 이미지를 이용하는 방식이 아닌.. 각 상태에 따라 직접 그려주는 방법에 대한 설명입니다. 이렇게 이미지가 아닌 직접 버튼의 스킨을 그려주는 방식에 대한 장점은... 버튼의 크기가 변경이 되어도 스킨이 깨지않고 자연스럽게 표현할 수 있다는 점입니다. 설명을 위해 제가 테스트 해 본 것은 버튼을 Aqua Style로 표현해 보는 것입니다. 위의 이미지가 실제 제 스스로 만들어본 버튼에 대한 Aqua 스킨입니다. SparkSkin 클래스의 파생 중에서 버튼에 대한 스킨은 SparkButtonSkin입니다.
일반적으로 SparkSkin은 레이어라는 개념으로 스킨을 입히게 됩니다. 여기서 직접 만들어 볼 버튼의 Aqua Style은 다음과 같은 레이어로 구성되어져 있으며 위의 이미지에 대한 버튼이 바로 아래의 레이어로 구성되어져 있습니다.
- border
- aqua
- labelDisplay
- blaze
좀더 고급스러운 Aqua 스타일을 제공하기 위해서는 더 많은 레이어가 필요하겠지만.. 간단이 이 정도의 레이어만을 구성해 봄으로써 Aqua 스타일의 스킨을 버튼에 입혀 보겠습니다. 위의 레이어 중 labelDisplay는 반드시 존재해야 하는 id 명으로써 버튼의 텍스트 라벨이 적용될 것으로 실제 Label 컴포넌트로 구성됩니다. 또한 위의 4개의 레이어의 순서 역시 중요합니다. 즉 가장 밑에 border가 존재하고 그 위에 aqua가.. 그리고 labelDisplay가 위치하며 가장 위에 blaze가 나타납니다.
먼저 실제 border 에 대한 FXG 코드입니다. 플렉스는 스킨에 대해 FXG(Flash XML Graphic)를 이용해 그려줍니다.
위의 FXG 코드는 다음과 같은 결과를 그려냅니다.
다음은 aqua 에 대한 FXG입니다.
위의 FXG 코드에 대한 결과는 다음과 같습니다.
그리고 라벨 텍스트를 표현할 코드는 다음과 같습니다.
텍스트를 표현해기 위해 Label 컴포넌트를 사용했습니다. 결과는 다음과 같습니다.
끝으로 blaze 레이어에 대한 FXG 코드는 다음과 같습니다.
이 레이어 만을 하얀색 배경의 화면상에서 보면 보이지 않는데요. 이 레이어는 버튼 위에 광택 효과를 주는 것으로 Aqua 버튼의 최정 결과를 보시면 딱! 아실 겁니다. ^^
뭐... 글로 아무리 길게 장황하게 써도.. 해당 스킨에 대한 전체 코드를 다음 url을 통해 다운로드 받으실 수 있으니 실제 플렉스에서 적용해 보시기 바랍니다.
참고로.. SparkSkin을 통한 스킨 적용은 Flash Builder 4.0 이상에서만 적용된다는 점에 유의하시기 바랍니다. 최근 4.6까지 나왔지요? 저는 4.5 버전을 쓰고 있습니다만.... 여튼.. 위의 스킨을 실제 버튼에 적용하기 위한 방법은 3가지가 있는데.. 그 중에 한가지에 대한 코드는 다음과 같습니다.
스킨을 만드는 작업은.. 코드의 길이에 비해 상당히 많은 시간이 소요되는 작업이라고 생각합니다. 또한 제대로 스킨을 만들려면 디자인 감각까지 갖춰야 하는 매우 고난위도의 작업입니다. 하지만 일단 한번만 만들어 놓으면 지속적으로 활용할 수 있으니... 스킨 제작 작업은 시간과 비용이 소요되더라도 꼭 제대로 해두는 것이 최종 프로젝트 산출물의 가치를 배가 시킬 수 있을 거라 확신합니다.
|
김형준(Dip2K)
2011/12/09 18:04
2011/12/09 18:04
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/774 |
|
|
|
|
|
|
|
플래시 빌더가 4.0으로 업그레이드 되면서 컴포넌트의 스킨을 SparkSkin 클래스를 통해 만들게 됩니다. 이때 컴포넌트의 모양을 그리기 위해 FXG(Flash XML Graphic Format)를 사용합니다. 컴포넌트의 모양 뿐만 아니라 채움이나 선 모양과 색상 등을 포함해 텍스트, 이미지 표현까지 모든 그리기에 대한 방법입니다.
좀더 체계적이고 정리된 프로젝트 진행을 위해 기존에 알고 있는 다소 돌아가는 방법이 아닌 표준화된 방법을 이용해 컴포넌트의 스킨을 세련되게 입히고자 하는 생각에서 FXG에 관심을 가지고 살펴보던 중에.. 실제 컴포넌트에 스킨으로 입힐 이미지를 FXG를 통해 표현하는 코드를 정리해 봅니다.
FXG에서 비트맵 이미지를 표현하기 위한 방법은 2가지입니다. 첫째는 BitmapImage를 이용해 이미지를 그대로 그리는 방법과 BitmapFill를 이용해 대상이 되는 도형에 비트맵을 채워 넣는 방법입니다. 아래의 코드가 바로 위의 2가지 방법에 대한 예제 코드입니다.
아래의 화면은 위의 코드를 통한 실제 결과 화면입니다.
|
김형준(Dip2K)
2011/12/08 13:12
2011/12/08 13:12
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/773 |
|
|
|
|
|
|
|
| GeoService-Xr은 DuraMap-Xr, FingerEyes-Xr, BlackPoint-Xr을 통해 공간 데이터를 서비스하는 공간 데이터 서버입니다. GeoService-Xr은 ArcSDE, MySQL 그리고 PostgreSQL을 통해 공간 데이터를 읽고 쓸 수 있습니다.
PostgreSQL은 PostGIS을 통해 공간 데이터를 질의하고 있으며 GeoService-Xr 역시 PostGIS를 사용합니다. 이러한 PostGIS을 통해 지오메트리를 읽는 GeoService-Xr의 기능 중 Multi-Polygon에 대해 옳바르게 도형을 표현하지 못하는 문제점이 있어서 이에 대한 버그를 해결하였습니다.
버그 대상이 되는 폴리곤은 Ring을 여러개 가지는 폴리곤으로써.. 예를 들어 구멍이 뚫린 폴리곤의 경우입니다. 아래의 그림은 버그가 해결된 상태에서 PostGIS를 통해 공간 데이터를 가져와 FingerEyes에서 표출한 화면입니다. 클릭하면 원본 크기로 볼 수 있습니다.
해결된 부분에 대한 GeoService-Xr의 소스 코드 부분은 다음과 같습니다. 문제의 근본적인 원인은 PostGIS에서 폴리곤에 대한 Geometry Type에 대한 제 스스로에 대한 이해 부족입니다. 혹... PostGIS를 통해 공간 데이터를 쿼리하고 결과를 받아 좌표를 뽑아 낼때 아래의 코드가 조금이나마 도움이 되시길 바랍니다.
주의 할점은 멀티폴리곤은 Polygon으로 구성되며 Polygon은 다시 LinearRing으로 구성된다는 점입니다. Polygon이 다시 LinearRing으로 구성되는 이유는 구멍이 뚫린 폴리곤 등을 나타내기 위함입니다.
|
김형준(Dip2K)
2011/12/05 14:27
2011/12/05 14:27
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/772 |
|
|
|
|
|
|
|
블랙포인트는 안드로이드 기반의 범용 GIS 엔진입니다. 별도의 맵 컴포넌트를 View 형태로 제공함으로써 개발하고자 하는 시스템에 쉽게 사용할 수 있습니다. 블랙포인트는 현장에서 데이터를 취득하기 위한 앱 개발을 위해 현장에서 공간 데이터를 쉽게 편집할 수 있는 공간 데이터 편집 기능을 제공합니다.
위의 화면은 블랙포인트에서 편집 기능에 대한 데모 화면으로 공간 데이터로써 폴리곤을 그릴때 스냅핑 기능을 실행하고 있는 화면입니다. 블랙포인트의 스냅핑 대상은 정점(Vertex)와 세그먼트(Segment)입니다. 이외에도 공간 데이터 편집에 대한 Undo/Redo 기능을 제공하여 보다 정확하고 편리하게 공간 데이터를 편집할 수 있습니다.
다음은 블랙포인트(BlackPoint-Xr)의 편집에 대한 기능 목록 중 일부입니다.- 폴리곤/폴리라인/포인트에 대한 Simple Feature Type에 대한 편집
- 사각형, 원, 타원, 텍스트에 대한 도형 편집
- 정점 추가 및 삭제 편집
- 편집 이력에 대한 Undo/Redo 지원
- 정점과 세그먼트에 대한 스냅핑 기능
블랙포인트에 대해 보다 구체적인 기능이 궁금하시면 언제든 지오서비스(hjkim@geoservice.co.kr)에 문의 하시면 직접 방문하여 시연을 통해 소개해 드리도록 하겠습니다.
|
김형준(Dip2K)
2011/12/05 09:57
2011/12/05 09:57
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/771 |
|
|
|
|
|
|
|
|
|
김형준(Dip2K)
2011/12/02 17:45
2011/12/02 17:45
|
|
| Track this back : http://www.gisdeveloper.co.kr/trackback/770 |
|
|
|
|
Total : 937820
Today : 306
Yesterday : 583 |
|
|
|