OpenStreetMap(OSM)은 오픈 소스 무료 지도임.
유료 지도를 대체 할 수 있음.
비록 타사에 비해 부족한 감이 있지만 지도 기능만 필요하다면 괜찮음.
사용 예제나 관련 설치 파일들이나 뭐 그냥 보이는 것 마다 권장은 전부 Linux 환경에서 하라고 함.
하지만 굳이 Windows 환경에서 써야 하는 사람들이 있음(그게 나일거라곤 생각도 못함).
고생하다 발견한 글임.
이 글을 보고 있다면 (나에게도) 심심한 위로를 전하겠음.
아래 과정은 Ubuntu에서 진행하는 방법 예시를 참고하여 Windows에서 진행한 것임.
1. 환경
Windows 10
PostgrSQL 15.3
PostGIS 3.3.2
Node.js 18.16.0
south-korea-latest.osm.pb latest version
2. PostgreSQL 및 Postgis 설치
- PostgreSQL 설치
- Download PostgreSQL Binaries Link 에서 원하는 버전으로 선택하여 다운로드
- 2023.05.18 기준 최신은 15.3이기에 15.3으로 다운로드함.
- Download PostgreSQL 에서도 원하는 버전으로 다운로드 가능(.exe)
- 테스트를 목적으로 하거나 메인 서버를 구축하는 환경이라면 인스톨러(.exe) 추천
- DB설치 까지 포함된 솔루션을 제작한다면 binary로 설치 추천
- 본인은 Binary로 설치함. Binary 다운로드 완료 되면 압축 해제
- Binary 설치 시 단점 : 예제 찾기 힘들다.
- PostgreSQL 설치
- OSGeo Download 에서 원하는 버전으로 선택하여 다운로드
- PostgreSQL의 버전이 15이므로 Pg15 다운로드
- 다운로드 완료되면 압축해제 → 압축 풀린 상태의 폴더명 postgis로 변경
3. pgsql & postgis 폴더 압축하여 psqlgis.zip 만들기
추후 다운로드 편의를 위해 하는 작업이므로 안 해도 됨.
4. postgis 폴더 내 일부 파일을 pgsql 폴더로 이동
즉, 필요한 파일들을 옮겨야 함.(참고)
- postgis\share\extension 내에 있는 파일 전체를 pgsql\share\extension 옮김.
- postgis\share\contrib 에 있는 postgis-3.3 폴더 및 폴더 내 파일을 pgsql\share\contrib 에 넣음.
- postgis\lib 내에 있는 파일 전체를 pgsql\lib 에 옮김.
- postgis내에 있는 파일 전체를 pgsql에 옮김.
이 작업을 안 하면 확장 모듈이 설치 안 될 수 있음.
이와 관련하여 DB에 확장 모듈 생성 시 오류 발생 해결 과정 참고
5. 관리자 권한으로 CMD 열어 컴퓨터 사용자 계정 생성
net user user_name password /add
6. psql/bin 폴더로 이동
cd D:\PostgreSQL\pgsql\bin
또는
cd /d D:\PostgreSQL\pgsql\bin
7. DB 초기화 및 최고 권한 사용자 생성
initdb.exe -U postgres -A password -W -E utf8 -D D:\PostgreSQL\pgsql\data
- -U 뒤는 ID 이며 postgres로 됨
- -A 뒤는 비밀번호이며 초기 비밀번호는 password임. 이후 새 암호를 입력하게 되는데 임의로 입력함.
- 서버 가동은 위 이미지에서 확인 가능하듯 pg_ctl -D ^"D^:^\PostgreSQL^\pgsql^\data^" -l 로그파일 start임. 종료는 start가 아닌 stop으로 바꿔주면 됨.
8. 서비스 생성
pg_ctl.exe register -N pgsql -D D:\PostgreSQL\pgsql\data
- postgres에게 서비스 로그인 권한이 부여됨.
- 서비스 시작은 net start pgsql / 서비스 종료는 net stop pgsql
이 과정을 위해 참고한 블로그임.
9. Postgres shell 실행
psql -U postgres
Windows PowerShell에서 진행하는 경우
.\psql -U postgres
10. 사용자 osm 생성
CREATE USER osm;
11. osm이 소유주인 gis Database 생성
CREATE DATABASE gis OWNER osm ENCODING 'UTF-8';
12. gis DB 접속
\c gis
13. postgis 확장 모듈 설치
CREATE EXTENSION postgis;
CREATE EXTENSION hstore;
14. spatial_ref_sys 테이블 소유자를 osm으로 변경
ALTER TABLE spatial_ref_sys OWNER TO osm;
15. CartoCSS map stylesheets 받기
- 새로운 터미널창을 열어 PostgreSQL 폴더 내에 osm 폴더 생성
mkdir osm
- Osm 폴더로 이동
cd osm
- Git 으로 받기
git clone https://github.com/gravitystorm/openstreetmap-carto.git
16. osm 폴더에 PBF(ProtoBufBinary) format으로 된 지도 데이터 받기
나는 대한민국 지도가 필요해서 여기에서 받음.
17. osm 폴더에 Osm2pgsql 다운로드
- https://osm2pgsql.org/download/windows/ 에서 가장 최신 zip 파일 다운로드
- osm 폴더로 옮김
- 압축 해제
이 방법 외에 https://learnosm.org/en/osm-data/osm2pgsql/ 참고해도 됨.
18. osm2pgsql 환경 변수 등록
- 시스템 속성의 환경 변수 버튼 클릭
- 시스템 변수의 path 선택 후 편집 클릭
- 환경 변수 편집 창 상단의 새로 만들기 클릭
- osm2pgsql.exe 파일이 있는 폴더 경로 입력 후 확인 버튼 클릭
19. DB 내 superuser로 접속
psql -U postgres
20. 다른 powershell 혹은 cmd 열고 지도 데이터 교체 및 gis database에 로드
osm2pgsql -s -d gis -U osm --hstore --multi-geometry --number-processes 1 --style D:\PostgreSQL\osm\openstreetmap-carto\openstreetmap-carto.style -C 1600 D:\south-korea-latest.osm.pbf
-s : slim mode로 실행
-d gis: gis DB 선택
-U osm: osm user 선택
--hstore: 테이블에 추가 hstore(키/값) 열에 열 없이 태그 추가
--multi-geometry: postgresql 테이블에서 다중 기하학 기능을 생성
--number-processes: 서버의 CPU 코어 수
-C: 메가바이트 단위로 캐시 크기를 지정
위 명령어가 정상 실행되면 완료되기까지 꽤 오래 걸림.
... 생략 ...
에러 발생 시 지도 데이터 교체 및 gis database에 로드 시 오류 발생 해결 과정 참고
21. 데이터베이스의 모든 권한을 사용자에게 부여하기
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO osm;
이제 여기까지 하면 DB 설정은 끝임.
'project' 카테고리의 다른 글
[OpenStreetMap 활용하여 지도 사이트 만들기] pg_tileserv 설치하여 tile server 만들기 (0) | 2023.06.02 |
---|---|
[OpenStreetMap 활용하여 지도 사이트 만들기] 화면에 출력하기 (0) | 2023.05.31 |
PostgreSQL_DB에 확장 모듈 생성 시 오류 발생 해결 과정_The specified module could not be found (0) | 2023.05.26 |
지도 데이터 교체 및 gis database에 로드 시 오류 발생 해결 과정 (0) | 2023.05.23 |
[team Project] 하이브를 활용하여 데이터 분석 (0) | 2021.06.26 |