반응형
shape 파일을 postgis 테이블로 변환하는 과정에서 몇 가지 예외가 발생했던 적이 있었다. 그중에서 2D, 3D일 때 어떻게 처리해야 하는지에 대해 알아보고자 한다.
shape 파일 속성을 수정하거나, spatial function을 이용해서 여러가지 기능들을 구현하기 위해 db table로 변환했었던 거 같다. 물론 geoserver로 wms 레이어로 사용해도 cqlfilter로도 앞서 말한 기능들을 구현할 수는 있다.
하지만 컨버팅하는 과정에서 예외가 발생했던 것 중 하나는 dimension이다.
shape 파일의 geometry가 2차원인지 3차원인지 체크하고 2D로 강제로 변환하는 방법이다.
shp2pgsql -t 2D 를 추가해주면 된다.
그런 다음 geotools로 shape 파일의 dimension에 대해 알아보도록 하겠다.
URL url = new File(dir+fileName).toURI().toURL();
ShapefileDataStore ds = new ShapefileDataStore(url);
Geometry geometryDim = (Geometry) ds.getFeatureSource().getFeatures().features().next().getDefaultGeometry();
LiteCoordinateSequence liteCoordi = new LiteCoordinateSequence(geometryDim.getCoordinates());
int dimension = liteCoordi.getDimension();
System.out.println("dimension : "+dimension);
geotools 버전은 26-snapshot 버전을 사용했다.
postgis에서 3 dimension도 지원해준다는 걸 본 적이 있었는데 이번 기회에 좀 더 자세히 알아봐야겠다.
반응형
'database > Postgresql' 카테고리의 다른 글
Postgresql 공간 쿼리 - envelope 구하기 (st_envelope), spatial query (0) | 2021.06.29 |
---|---|
우분투 postgis database 설치하기 (0) | 2021.06.06 |
pgsql2shp 을 활용해서 table을 shp파일 만들기 예제 (0) | 2021.04.20 |
shp2pgsql을 활용하여 Shapefile to postgis로 바꿔보자 (0) | 2021.04.14 |