개발공작소
article thumbnail
728x90

 

 

 

이번에 Geoserver의 특정 저장소에 있는 레이어들을 다른 저장소로 한번에 옮겨야 할 일이 있어서 정리해본다.

 

 

우선 geoserver의 저장소는 아래와 같은 구조인데

대충 이런 구조

geoserver에는 여러개의 작업공간이 있고, 그 작업공간에는 또 여러개의 저장소들이 있다. 그리고 그 저장소는

여러개의 레이어들을 포함하고 있다.

 

근데 만약 작업공간A에 있는 저장소a에 있는 모든 레이어들을 저장소b로 옮기고 싶다면 어떻게 해야 될까?

 

이런 느낌..

 

 

저장소a에 있는 레이어들을 저장소b로 옮기고 저장소a는 삭제해야 되는 상황..

(물론 다 옮기는게 아니라 몇개만 옮기는 상황도 포함됨)

 

 

 

특정 저장소에 있는 레이어들을 다른 저장소로 옮기는 방법 

 

 

geoserver의 workspaces디렉터리로 가자.

보통 D:\geoserver-2.21.1-bin\data_dir\workspaces 이 경로임.. ( 설치 경로만 환경에 따라 바꿔주면 된다.. )

 

 

 

이 경로에 있는게 작업공간인데, 본인이 이동을 원하는 저장소를 가진 작업공간에 들어가도록 하자.

나는 topp 작업공간에 들어가보도록 하겠다.

 

 

 

topp 작업공간에는 states_shapefile과 taz_shapes라는 저장소 2개가 있다. 그리고 그 아래에는 각각 레이어들을 포함한다.

 

 

 

이제 taz_shapes저장소에 있는 레이어들을 states_shapefile저장소로 옮겨보도록 하자.

 

 

1) taz_shapes저장소에 있는 레이어들을 states_shapefile저장소로 복사 붙여넣기를 한다.

 

 

2) 이동한 레이어들의 featuretype.xml을 열어 DataStoreInfoImpl를 수정해준다.

 

여기에서 가장 중요한 부분이다. 각 레이어 디렉터리에 가면 featuretype.xml이 있는데

이 친구가 비유하자면, "주민등록증" 같은 느낌이다. 이 레이어의 모든 정보가 들어있다.

그 중에 <store>태그는 이 레이어가 어느 저장소의 레이어인지를 나타낸다. 즉, 

taz_shapes저장소에 있는 레이어들을 states_shapefile저장소로 옮기긴 했지만, taz_shapes저장소에 있던 레이어들은

아직 states_shapefile저장소를 바라보고 있기 때문에 taz_shapes저장소를 바라보도록 수정해야 한다.

 

 

 

위의 <store>안에 있는 <id>값을 states_shapefile저장소의 DataStoreInfoImpl로 변경해준다.

해당 정보는 states_shapefile 디렉터리의 datastore.xml 파일에 있다. (datastore.xml은 저장소의 주민등록증 같은 느낌..)

 

datastore.xml

 

 

즉 여기에서는 이동한 레이어들의 featuretpye.xml에서

<id>DataStoreInfoImpl--570ae188:124761b8d78:-7fdc</id> 값을

<id>DataStoreInfoImpl--570ae188:124761b8d78:-7fd9</id> 로 변경해주면 된다.

 

레이어들이 많아서, featuretype.xml을 편집하기 힘들면 윈도우 환경에서 powershell을 이용해서 특정 경로의

모든 xml 내용을 편집 할 수도 있다. (편함) 아래 링크를 참조하도록 하자.

 

 

[기타] 특정 경로에 있는 모든 파일(XML)의 내용 변경하는 방법 (feat. PowerShell)

 

이렇게 변경을 해준 뒤, geoserver를 재구동 해주면 변경 된 저장소로 레이어들이 이동 된 것을 확인 할 수 있다.

 

 

ps. 레이어들을 옮긴 뒤 featuretype.xml를 수정하지 않아도 저장소 이동은 된다. 단

레이어들은 변경 된 저장소를 바라보고 있지 않기 때문에 새로 일일이 발행해줘야 한다. 그럴바에

xml파일을 변경하는게 더 편하다.

 

 

 

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!