리버스 지오코딩(Reverse Geocode) 서비스

GPS 좌표, 즉 WGS84 경위도 좌표를 도로기반의 신주소로 변환하는 OpenAPI 입니다. 만약 (36.63922, 127.478317)에 해당하는 주소를 얻고자 한다면 다음처럼 호출하면 됩니다.

http://222.237.78.208:8080/Gp?command=revgc;v=36.63922;h=127.478317

이를 웹브라우져에서 호출해 보면 다음과 같은 결과를 얻을 수 있습니다.

사용자 삽입 이미지

결과 내용 중 ADDRESSDATE는 주소데이터에 대한 갱신 날짜를 의미하고 DISTANCE는 좌표에서 결과주소에 해당하는 건물까지의 거리를 의미합니다. 실제 다음(Daum) 지도 서비스에서 해당 좌표에 대한 위치를 확인해 보면 다음과 같습니다.

사용자 삽입 이미지

이 서비스는 쿼리 요청에 대한 횟수 제한이 없습니다. 아울러 이 서비스는 비상업적인 용도에 한해서 자유롭게 사용하실 수 있으며 상업적인 용도로 사용하고자 할 경우 (주)지오서비스로 문의하시기 바랍니다.

[Java] AES 암호화

자바에서 문자열에 대한 암호화 방법입니다. 문자열이므로 특정한 데이터 형식, 즉 바이너리까지 포함하여 암호화가 가능합니다. 사용방법은 다음과 같습니다.

public static void main(String[] args) {
    try {
        String e = StringCrypto.encrypt(
            "GEOSERVICE", 
            "안녕하세요, 2014년 새해 복 많이 받으세요!"
        );

        System.out.println(e);
        String d = StringCrypto.decrypt("GEOSERVICE", e);
        System.out.println(d);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

문자열에 대한 암호화를 작업시에 간단히 할 수 있도록 StringCrypto라는 클래스로 묶었습니다. 이 클래스는 Java에서 이미 구현한 암호화 알고리즘 중에 AES를 사용합니다. 실행 결과는 다음과 같습니다.

사용자 삽입 이미지
첫줄은 ‘안녕하세요, 2014년 새해 복 많이 받으세요!’에 대한 문자열을 암호화하여 HEX 코드로 표시한 것이고 다음 줄은 HEX 코드로 암호화된 것을 다시 복원한 것입니다. 아래는 위의 코드와 함께 StringCrypto 클래스에 대한 소스의 다운로드입니다.

2014년, 새해 복 많이 받으시고 좋은 일만 가득하시기 바랍니다. ㅡ !

지적 DXF 파일을 SHP 파일로 변환하는 툴 ㅡ ExtractDXF

지적도 DXF 파일이 있습니다. 이 DXF 파일 안에는 JIBUN, JIJUK이라는 레이어로 구성됩니다. JIBUN은 지적도의 필지 속성값이며 JINUK는 지적 필지를 구성하는 좌표입니다. 이러한 지적 DXF를 GIS에서 많이 사용하는 SHP 파일로 손쉽게 변환해주는 툴입니다.

사용자 삽입 이미지
위의 화면은 실행화면입니다. 변환할 DXF 파일을 지정하고 생성할 SHP 파일명과 임시 작업 폴더를 지정해 주시면 됩니다. 아래는 예로써 DXF를 SHP로 변환한 결과에 대한 화면입니다.

사용자 삽입 이미지
이 프로그램에 대한 설치 파일은 다음 URL을 통해 받으실 수 있습니다. 설치 파일 형태로 제공되므로 설치와 깔끔한 제거가 가능합니다.

GIS 분야에서 실무자들이 기계적인 반복 작업으로 보다 생산적인 일을 하지 못하는 경우가 많습니다. 이러한 어려움에 대해서 직접 경험했고 이에 대해서 조금이나마 도움을 드리고자 제작한 툴입니다.

프록시 서버(Proxy Server)

보안에 대한 이슈로 인해 특정 서버에 어떤 요청을 해도 응답을 하지 않는 다음 그림과 같은 상황이 있습니다. 이런 경우는 방확벽에 막혀 있거나.. 서버에서 특정 IP에 대해서 응답을 하지 않는 경우입니다.

사용자 삽입 이미지

이러한 상황이 발생하는 이유는 서버단에서 클라이언트인 사용자를 차단하기 때문입니다. 이럴 경우 서버가 차단하지 않는 별도의 서버로 우회하여 사용자가 요청에 대한 원하는 결과를 받을 수 있는데요. 이러한 구성은 다음과 같습니다.

사용자 삽입 이미지즉, 사용자(User)가 직접적으로 Server에 요청을 날리지 않고 Server가 안전하다고 판단되는 Proxy Server를 통해 간접적으로 요청을 날리면 Proxy Server는 User 대신 실제 Server에게 요청을 날리고 그 결과를 대신 받아 다시 User에게 날려주는 것 입니다.

이게 상당히 쓸모가 있습니다. 저 같은 경우 어떤 프로젝트를 진행하면서 실제 서버가 특정한 장소 안에서만 접근할 수 있음으로 해서.. 결국 작업을 하려면 지정된 장소에 가서 작업을 해야할 상황이였는데요. 이에 대해서 Proxy Server를 두고 실제 서버에서 Proxy Server에 대해서 방화벽 차단을 해제해줄 것을 요청한뒤 어떠한 장소에서든 이 Proxy Server를 통해 실제 서버에 접근하여 작업을 할 수 있었습니다.

그 당시 제가 사용했던 Proxy Server는 GeoService-Xr이라는 공간서버였습니다. GeroService-Xr은 기본적으로 Proxy Server 기능을 가지고 있습니다.

아래의 코드는 실제 서버의 IP가 44.44.44.44이고 Proxy Server의 IP는 77.77.77.77일때를 예로 든 경우입니다. 즉, 저와 같은 경우 GeoService-Xr이 77.77.77.77에 설치되어 있는 것입니다.

var svc:XrRequestURLProxy = new XrRequestURLProxy("77.77.77.77", 
    onRequestComplete, onRequestError);
var url:String = "http://44.44.44.44/doAction.jsp";
var queryString:String = "param=100";
svc.run({url:url, queryString:queryString});

호출이 성공적으로 완료되면 onRequestComplete 함수가 호출되고 실패하면 onRequestError 함수가 호출됩니다. onRequestComplete 함수는 다음과 같은 형태입니다.

private function onRequestComplete(result:String):void
{
    var obj:Object = JSON.parse(result);
    //..
}

위의 코드는 요청 결과가 JSON 형태일 경우에 대한 예입니다. 그리고 onRequestError 함수는 다음과 같은 형태입니다.

private function onRequestError():void
{
    //..
}

이상으로 프록시 서버에 대한 간단한 설명과 저와 같은 상황에서 어떤식으로 프록시 서버를 활용했지에 대한 예 였습니다.

OpenGL Tutorials

OpenGL을 처음 접하는 분들에게 단계적으로 쉽고 빠르게 OpenGL을 익힐 수 있는 튜토리얼입니다. OpenGL을 이미 알고 계시는 분들에게도 Reference로써 활용될 수 있습니다. 개인적으로도 OpenGL을 이용한 개발을 할때 이 자료를 참고자료로 많이 활용하고 있습니다. OpenGL 초기화와 Display List 튜토리얼은 NeHe의 강좌를 번역한 것임을 밝힙니다. 그럼 좋은 성과가 있으시길 바랍니다.


OpenGL 초기화


Displaying Points, Lines, Polygons


Translate, Rotate and Scale Objects


Color


Lighting


Texture Mapping


Output String on the Screen(Bitmap)


Output String on the Screen(Outline)


Using the Quadrics


Transparent by The Blending


Sprite Processing by The Blending


Fog


Selection


TESSELLATION


Composition Objects


Display List


Bill-board(빌보드) 기법