반응형
이번 포스팅에서는 shapefile의 schema를 뜯어보도록 하겠다.
qgis에서 shp 파일 레이어를 추가하게 되면 우측 하단에 어떤 좌표계인지 바로 확인할 수 있었다.
prj 파일도 아니고 그냥 shp파일만 추가했는데 어떻게 srs 코드를 알 수 있을까 고민하던 중 geotools로 한번 구현해보고 싶었다.
역시 구글링 도움도 컷지만 인터페이스와 함수들에 대해 하나 하나 뜯어보니 쉽게 찾아 낼 수 있었다.
geotools 설치에 관련해서는 생략하겠다. 설치는 메이븐으로 진행했고 설치 관련해서 아래 링크를 참조하면 된다.
docs.geotools.org/stable/userguide/tutorial/quickstart/index.html
shape 파일의 스키마에 접근하는 거에 대한 자세한 설명은 아래 소스와 주석을 같이 참고하면 되겠다.
먼저 좌표계에 관한 데이터를 가져오고 shape 파일의 속성 인코딩을 알아보겠다.
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.feature.FeatureCollection;
import org.geotools.referencing.CRS;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
public class GetShapeSchemaInfo {
public static void main(String[] args) {
String dir="shape 파일 경로";
String fileName="파일명.shp";
try {
URL url = new File(dir+fileName).toURI().toURL();
//shapefiledatastore에 접근하면 featurecollection에서 스키마에 접근할 수 있다.
ShapefileDataStore ds = new ShapefileDataStore(url);
SimpleFeatureCollection fc = ds.getFeatureSource(ds.getTypeNames()[0]).getFeatures();
//proj4 정의를 스트링으로 가져온다.
String projWkt = fc.getSchema().getCoordinateReferenceSystem().toWkt();
//lookupEpsgCode는 CRS 좌표계 시스템을 epsg 코드를 찾아서 리턴한다.
int epgs_auth_code =CRS.lookupEpsgCode(fc.getSchema().getCoordinateReferenceSystem(), true);
//shape 파일 속성 인코딩 정보
String charsetStr = ds.getCharset().toString();
System.out.println("EPSG:"+codeInt);
System.out.println("PROJ="+projWkt);
System.out.println("Charset:"+charsetStr);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
이 작업을 하면서 CRS와 SRS에 대한 차이점이 있다는 걸 알게 되었다.
다음 포스팅에서는 두 차이점에 대해 알아보고자 한다.
반응형
'java > Geotools' 카테고리의 다른 글
java Geotools shape 속성 파일 dbf 인코딩 확인 (0) | 2021.07.15 |
---|---|
Geotools 지도에 csv 파일 레이어로 추가하기 (0) | 2021.04.18 |
Geotools로 shapefile dbf 파일 속성 읽기 (0) | 2021.04.12 |
Geotools shapefile PostGis 데이터로 바꾸기 (8) | 2021.04.12 |
Geotools를 활용한 geotiff to png 썸네일 생성 예제 (0) | 2021.04.09 |