티스토리 뷰

OpenStreetMap(OSM)은 오픈 소스 무료 지도임.

OpenStreetMap site image

유료 지도를 대체 할 수 있음.

비록 타사에 비해 부족한 감이 있지만 지도 기능만 필요하다면 괜찮음.

 

사용 예제나 관련 설치 파일들이나 뭐 그냥 보이는 것 마다 권장은 전부 Linux 환경에서 하라고 함.

하지만 굳이 Windows 환경에서 써야 하는 사람들이 있음(그게 나일거라곤 생각도 못함).

고생하다 발견한 글임.

"Usin Windows for this will be a losin battle."

이 글을 보고 있다면 (나에게도) 심심한 위로를 전하겠음.

 

 

아래 과정은 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 폴더로 이동

, 필요한 파일들을 옮겨야 .(참고)

  1. postgis\share\extension 내에 있는 파일 전체를 pgsql\share\extension 옮김.
  2. postgis\share\contrib 있는 postgis-3.3 폴더 폴더 파일을 pgsql\share\contrib 넣음.
  3. postgis\lib 내에 있는 파일 전체를 pgsql\lib 옮김.
  4. 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://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 설정은 끝임.

반응형
LIST
댓글
링크
공지사항
최근에 올라온 글