(주)아신테크

국토정보플랫폼 바로가기 국토지리정보원 바로가기

프로젝트 목록

로딩 중...

📁 클릭 또는 파일 드래그

여러 장 선택 가능

준비됨

레이어 목록

2024 도로대장 작성 지침

지침서 목차
  • 지침서 로딩 중...
0 / 0

사용 설명서

1. CAD 데이터 관리 (PC 프로그램)

PC 프로그램을 통해 CAD 데이터를 관리하고 웹과 연동하기 위한 데이터를 준비하는 과정입니다.

1-1. 데이터베이스 모드 선택

[CAD 관리] 탭 상단에서 작업 환경을 선택합니다.

  • ◉ Supabase (권장): 클라우드 DB와 R2 저장소를 사용합니다. 웹 캐드뷰어 및 사진 관리와 완벽하게 연동됩니다.
  • ○ PostgreSQL: PC에 설치된 로컬 데이터베이스를 사용합니다. 오프라인 작업이나 QGIS 연동에 특화되어 있습니다.
1-2. Supabase/R2 모드 작업 흐름 (웹 연동)
  1. 프로젝트 생성: [프로젝트 생성] 버튼으로 새 프로젝트를 만듭니다.
  2. 원본 DXF 업로드: 생성된 프로젝트를 선택하고 [DB 업로드] 버튼을 클릭하여 원본 .dxf 파일을 선택합니다. 이 파일은 R2 클라우드 저장소에 원본으로 보관됩니다.
  3. 웹 변환기 실행: 하단의 [파일변환] Colab 열기 버튼을 클릭하여 웹 기반 변환 페이지로 이동합니다.
  4. Colab에서 변환:
    • 작업할 프로젝트를 선택하고 [DXF 불러오기]를 클릭합니다.
    • 좌표계, 변환할 레이어, 출력 형식(PMTiles 필수), 캐시 정책을 선택합니다.
    • [변환 실행] 버튼을 누르면 웹 캐드뷰어용 데이터(PMTiles, GeoJSON 등)가 생성되어 R2에 업로드되고 정보가 Supabase DB에 기록됩니다.
1-3. PostgreSQL 모드 작업 흐름 (로컬/QGIS)
  • 리습(LISP)으로 JSON 추출: AutoCAD에서 리습(Export_Json.lsp)을 로드하고, ODB 또는 LDB 명령어로 .json 파일을 추출합니다. (기존 방식과 동일)
  • JSON 업로드: PC 프로그램에서 프로젝트 선택 후 [DB 업로드] 버튼을 눌러 추출된 .json 파일을 업로드합니다. 데이터는 로컬 PostgreSQL에 저장됩니다.
1-4. 캐시 설정

하단의 [캐시 설정] 버튼을 통해 R2 스토리지에 업로드되는 파일의 캐시 기간을 설정할 수 있습니다. 캐시를 사용하면 웹에서의 로딩 속도가 빨라지고 서버 요청 횟수가 줄어듭니다.

  • 캐시 안함: 파일을 수정하고 즉시 웹에서 확인해야 할 때 사용합니다. (예: 테스트 중인 사진)
  • 1일 ~ 1년: 파일 내용이 자주 바뀌지 않을 때 사용합니다. (예: 확정된 도면)
  • 참고: 캐시 기간이 남았더라도 파일을 수정 후 덮어쓰기 했다면, Cloudflare 대시보드에서 직접 Purge(캐시 비우기)를 해야 웹에서 즉시 변경 내용이 보입니다.

2. 웹 앱 사용법

PC 프로그램에서 준비된 데이터를 웹 브라우저에서 확인하고 관리하는 방법입니다.

2-1. 사진 관리 및 업로드
  • [사진 관리] 탭에서 프로젝트 목록을 확인합니다.
  • 원하는 프로젝트 우측의 [📷] 버튼을 클릭하여 사진 관리 화면으로 이동합니다.
  • [📤 추가] 버튼을 누르면 파일 업로드 화면으로 전환됩니다. 파일을 선택하거나 드래그 앤 드롭하여 업로드할 수 있습니다. 업로드된 사진은 R2 스토리지에 저장됩니다.
  • 사진 썸네일을 클릭하면 큰 이미지로 볼 수 있습니다.
2-2. 캐드뷰어
  • [캐드뷰어] 탭으로 이동합니다.
  • 드롭다운 메뉴에서 프로젝트를 선택하면, Colab에서 변환된 PMTiles 도면이 배경 지도 위에 렌더링됩니다.
  • 화면 좌측의 레이어 목록 패널에서 각 레이어의 색상을 변경하거나, 체크박스를 통해 켜고 끌 수 있습니다.

3. 초기 설정 가이드 (PostgreSQL)

PC 프로그램의 로컬 DB 모드(PostgreSQL)를 사용하기 위한 초기 설정 과정입니다. Supabase 모드만 사용 시에는 필요하지 않습니다.

1단계: PostgreSQL 설치 (기본 DB 엔진)
  1. PostgreSQL 공식 다운로드 페이지에 접속하여 Download the installer를 클릭하고 최신 버전(16.x 또는 17.x)을 다운로드합니다.
  2. 설치 파일을 실행하고 [Next]를 계속 누릅니다.
  3. 비밀번호 설정 (중요): Superuser (postgres) password 입력창이 나오면 비밀번호를 입력하고 반드시 기억해 두세요. (예: admin1234)
    ※ 이 비밀번호는 나중에 프로그램 연결 설정에 사용됩니다.
  4. Port는 기본값 5432를 유지합니다.
  5. 설치 마지막 화면에서 "Launch Stack Builder at exit?" 체크박스를 반드시 체크하고 [Finish]를 누릅니다. (PostGIS 설치를 위해 필요)
2단계: PostGIS 설치 (좌표/CAD 데이터용 필수 확장팩)
  1. Stack Builder가 실행되면 방금 설치한 PostgreSQL 서버(예: PostgreSQL 16 on port 5432)를 선택하고 [Next]를 누릅니다.
  2. Spatial Extensions 항목을 펼치고 PostGIS [버전] Bundle을 체크합니다.
  3. [Next]를 눌러 다운로드 및 설치를 진행합니다.
  4. PostGIS 설치 창이 뜨면 기본 설정대로 [Next] > [I Agree] > [Next]... > [Close] 하여 완료합니다.
  5. 질문 창("Would you like to register...")이 뜨면 "Yes"를 눌러 환경 변수나 이미지 드라이버를 등록하세요.
3단계: 데이터베이스 생성 (pgAdmin 사용)
  1. 윈도우 시작 메뉴에서 pgAdmin 4를 실행하고 접속합니다.
  2. 왼쪽 탐색기(Browser)에서 Servers > PostgreSQL [버전]을 더블 클릭하고, 설치할 때 정한 비밀번호를 입력합니다.
  3. Databases 항목에서 마우스 우클릭 > Create > Database... 선택.
  4. Database 이름에 (예:postgres)라고 입력하고 [Save]를 누릅니다.
    ※ 프로그램 기본 설정과 일치해야 합니다.
4단계: 테이블 생성 (SQL 실행)

프로그램이 사용할 테이블 구조를 생성합니다. 아래 과정을 정확히 따라주세요.

  1. pgAdmin 왼쪽 메뉴에서 방금 만든 postgres를 클릭하여 선택합니다.
  2. 상단 메뉴의 Tools > Query Tool (아이콘: DB에 재생 버튼 모양)을 클릭합니다.
  3. 나타나는 입력창에 아래 SQL 코드를 전체 복사/붙여넣기 합니다.
  4. 상단의 ▶ (재생 버튼/Execute)을 눌러 실행합니다. ("CREATE TABLE" 등의 메시지가 뜨면 성공)
-- ==================================================
-- [아신테크 프로그램용 DB 초기화 스크립트]
-- ==================================================

-- 1. PostGIS 확장 기능 활성화 (CAD 좌표 처리에 필수)
CREATE EXTENSION IF NOT EXISTS postgis;

-- 2. 일반 프로젝트 테이블 (사진 관리용)
CREATE TABLE IF NOT EXISTS projects (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    folder_id TEXT UNIQUE NOT NULL,  -- 구글 드라이브 폴더 ID
    project_name TEXT,
    status TEXT DEFAULT 'Active',
    created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 3. 사진 파일 테이블
CREATE TABLE IF NOT EXISTS photos (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    project_folder_id TEXT REFERENCES projects(folder_id) ON DELETE CASCADE,
    file_id TEXT UNIQUE NOT NULL,
    file_name TEXT,
    file_url TEXT,
    created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 4. CAD 프로젝트 테이블
CREATE TABLE IF NOT EXISTS cad_projects (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    name TEXT NOT NULL,
    created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 5. CAD 객체 테이블 (도면 데이터 저장)
CREATE TABLE IF NOT EXISTS cad_objects (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    project_id BIGINT REFERENCES cad_projects(id) ON DELETE CASCADE,
    handle TEXT,
    layer TEXT,
    block_name TEXT,
    text_content TEXT,
    x_coord FLOAT,
    y_coord FLOAT,
    rotation FLOAT,
    geom GEOMETRY(POINT, 4326), -- 좌표 데이터 (WGS84)
    created_at TIMESTAMPTZ DEFAULT NOW(),
    
    -- 중복 방지 (같은 프로젝트 내 같은 핸들)
    CONSTRAINT uq_cad_objects_handle UNIQUE (project_id, handle)
);

-- 조회 속도 향상을 위한 인덱스
CREATE INDEX IF NOT EXISTS idx_cad_objects_geom ON cad_objects USING GIST (geom);
CREATE INDEX IF NOT EXISTS idx_cad_objects_project_id ON cad_objects (project_id);

-- 6. SVG 라이브러리 테이블 (블록 미리보기 기능용)
CREATE TABLE IF NOT EXISTS svg_library (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    file_id TEXT UNIQUE NOT NULL,
    block_name TEXT,
    file_url TEXT,
    updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- 7. CAD 파일 메타데이터 테이블 (JSON/PMTiles 관리용)
CREATE TABLE IF NOT EXISTS cad_files (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    project_id BIGINT REFERENCES cad_projects(id) ON DELETE CASCADE,
    file_type TEXT NOT NULL, -- 'json' or 'pmtiles'
    file_path TEXT NOT NULL,
    file_size BIGINT,
    updated_at TIMESTAMPTZ DEFAULT NOW(),
    CONSTRAINT uq_cad_files_type UNIQUE (project_id, file_type)
);

-- RLS(Row Level Security) 비활성화 (권한 문제 방지)
ALTER TABLE cad_files DISABLE ROW LEVEL SECURITY;

-- 8. Storage 버킷 생성 및 권한 설정 (필수)
-- PMTiles 렌더링을 위해 버킷은 Public으로 설정하고, 파일에 대한 공개 읽기 권한 정책을 추가해야 합니다.
INSERT INTO storage.buckets (id, name, public) 
VALUES ('cad_layers', 'cad_layers', true)
ON CONFLICT (id) DO NOTHING;

-- 기존 정책이 있다면 삭제 후 새로 생성하는 것을 권장합니다.
CREATE POLICY "Public read access for cad_layers"
ON storage.objects FOR SELECT
USING ( bucket_id = 'cad_layers' );
5단계: 프로그램 연결 설정 (db_config.json)

PC 프로그램(exe)이 설치된 폴더에 db_config.json 파일을 생성하거나 수정하여 접속 정보를 입력해야 합니다.

  • 파일 위치: 프로그램 실행 파일(.exe)과 같은 폴더
  • 파일 이름: db_config.json
  • 내용: 아래 내용을 복사하여 메모장에 붙여넣고, password 부분만 1단계에서 설정한 비밀번호로 수정하여 저장하세요.
{ "host": "localhost", "port": "5432", "database": "postgres", "user": "postgres", "password": "여기에_설치할때_정한_비밀번호_입력" }

※ 주의: "password"의 값은 반드시 따옴표("") 안에 입력해야 합니다.