[GIS] 정규표현식을 이용한 SHP 추출, ExpressionsSHP

개발자 피드백 : 포인트 타입의 SHP 파일에 대해 문제가 발생하는 것을 해결 하였습니다.

SHP 파일의 속성값을 기준으로 원하는 값과 일치하는 도형만을 추출해 새로운 SHP 파일로 추출해 내는 툴입니다. 일치하는 속성값의 기준은 정규표현식을 사용합니다.

지적도를 예로 들어 JIBUN이라는 필드값이 ‘도’로 끝나는 모든 도형을 추출하라는 정규 표현식은 ‘도$’가 됩니다. 참고로 ‘도’로 끝나는 경우 도로에 해당합니다. 아래의 실행 화면은 이와 같은 예에 대한 실행 예입니다.

사용자 삽입 이미지
보시는 것처럼 입력 SHP 파일을 지정하고 대상이 되는 필드, 정규표현식값.. 끝으로 조건과 일치하는 도형을 저장할 새로운 SHP 파일명을 지정하면 됩니다. 위의 실행에 대한 결과는 아래와 같습니다.

사용자 삽입 이미지
보시는 것처럼.. 도로만이 추출된 결과를 볼 수 있습니다. 이 프로그램은 듀라맵(http://www.gisdeveloper.co.kr/notice/574)을 이용해 개발되었으므로 듀라맵을 PC에 등록해줘야 합니다. 이 프로그램에 대한 소스 코드와 실행 파일을 아래 링크를 통해 다운받을 수 있습니다.

정규표현식을 통해 원하는 값을 선택해 내는 일은 매우 유연한 방법입니다. 원하는 경우와 상황에 대한 정규표현식에 대해서 댓글을 통해 알려주시면 성의껏 답변해 드리겠습니다.

[GIS] 하나의 SHP를 격자로 분리해 다수의 SHP로 만들어 주는 툴

개발자 피드백 : 2012년 6월 25일에 버전업되었습니다. 개선된 내용은 포인트 SHP 파일에 대해 더 이상 오류가 발생하지 않고 정상적으로 처리되도록 하였습니다.

제목을 좀더 풀어 설명드리면.. 하나의 SHP 파일을 사용자가 지정한 행과 열의 수로 격자를 만들고.. 이 격자의 수 만큼.. 도형을 분리해 다수의 SHP 파일로 만들어 주는 툴입니다. 격자에 따라 분리를 할뿐.. 격자에 맞춰 도형을 잘라내지 않습니다. 아래는 이 프로그램의 실행 화면입니다.

사용자 삽입 이미지
위의 화면은 하나의 SHP 파일을 불러들인 후 격자의 행 수를 3으로 하고 열의 수를 3으로 하여 총 9개의 SHP 파일로 뽑아 내는 경우입니다. 9개의 SHP 파일의 이름은 d:/shp로 시작하여 shp_0_0.shp, shp_0_1.shp 등으로 지정됩니다. 아래의 화면은 이렇게 만들어진 9개의 SHP 파일을 ArcMap에서 레이어로 불러와 표시한 화면입니다.

사용자 삽입 이미지
이 프로그램은 DuraMap-Xr를 통해 개발되었으므로 먼저 DuraMap-Xr를 다운로드(http://www.gisdeveloper.co.kr/notice/574) 받으신 후 실행하시기 바랍니다. 이 프로그램에 대한 소스 코드와 실행 파일(Release 폴더)은 다음 url을 통해 다운받으시기 바랍니다.

[GIS] 지도 디자인 및 타일맵 가공툴, Mr.Tiler-Xr v2.0

미스터타일러는 지오서비스에서 개발한 맵디자인툴입니다. 서비스에 맞는 지도를 디자인하고 이렇게 디자인된 지도를 인터넷 상에서 빠르게 서비스할 수 있도록 타일맵으로 가공해 주는 툴입니다.


위의 화면은 타일맵을 통해 4개의 수치지도레이어(SHP 파일형태)를 이용해 미스터타일러(Mr.Tiler-Xr)로 만들어본 지도입니다. 위의 지도를 디자인하는 과정에 대한 데모는 다음 URL을 통해 동영상으로 살펴보실 수 있습니다.

Mr.Tiler-Xr 실행 동영상(http://www.gisdeveloper.co.kr/Mr.Tiler-Xr/mrtiler_demo1)

미스터 타일러는 듀라맵(DuraMap-Xr)을 통해 개발되었습니다. 그리고 UI는 .NET 프레임워크인 C#으로 개발되어져 있으므로 .NET 프레임워크 2.0이 설치되어져 있어야 합니다. 미스터 타일러와 듀라맵은 지오서비스 홈페이지의 자료실을 통해 다운로드 받으실 수 있습니다.

SimpleSHP v0.1

SimpleSHP는 ESRI에서 정의한 SHP와 DBF 파일을 처리하기 위한 자바 클래스 모음입니다. 이 라이브러리는 사용하기 쉬우며 가볍고 매우 단순한 구조를 갖습니다. 아래의 UML은 SHP 파일 Access에 대한 Class Diagram 입니다.

사용자 삽입 이미지

SHP 파일에 대한 Access에 대한 예제 코드는 아래와 같습니다.

AccessSHP access = new AccessSHP("filename.shp");
RowSetSHP rowSet = access.getRowSet();
int rowCount = rowSet.getRowCount();
try {
    for(int fid=0; fid < rotCount; fid++) {
        RowSHP row = rowSet.getRow(fid+1);
        if(row.load()) {
            System.out.println(row.getFID());
            Geometry geom = row.getGeometry();
            System.out.println(geom.getEnvelopeInternal().toString());
            row.unload();
        }
    }

    access.release();
} catch (IOException e) {
    e.printStackTrace();
}  

사용자 삽입 이미지

DBF 파일에 대한 Access에 대한 예제 코드는 아래와 같습니다.

AccessDBF access = new AccessDBF("filename.dbf");
RowSetDBF rowSet = access.getRowSet();
int rowCount = rowSet.getRowCount();
try {
    for(int fid=0; fid < rowCount; ++fid) {       
        RowDBF row = rowSet.getRow(fid+1);
        if(row.load()) {
            System.out.println(row.getFID());
            FieldSet fieldSet = access.getFieldSet();
            for(int iField=0; iField                Field field = fieldSet.getField(iField);
                System.out.println(field.getFieldName() 
                    + ": " + row.getValueAsString(iField));
            }
  
            row.unload();
        }

        access.release();
    }
} catch (IOException e) {
    e.printStackTrace();
}  

버전 이력
           1.  v0.1 2011/05/20 최초 배포

라이브러리 소스코드 다운로드

상세 문서 URL

http://www.gisdeveloper.co.kr/download/simpleshp

외부 참조 라이브러리

JTS(Java Topology Suite, http://www.vividsolutions.com/jts/jtshome.htm)