반응형

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도 지원해준다는 걸 본 적이 있었는데 이번 기회에 좀 더 자세히 알아봐야겠다.

 

반응형

+ Recent posts