Q qgis와 gpsmapedit를 이용해 garmin 장치에 넣을 수 있게 연속지적도를 변환하는데 성공했어. 근데 지번이 라인에 라벨이 붙어 있는데 이걸 포인트로 변환해서 지번이 따로 포인트 라벨로 표시할 수 있는 방법을 알려줘
가능합니다. 그리고 오히려 그 방법이 Garmin에서는 더 좋은 방식입니다.
말씀하신 상황은 현재 아마 다음과 같을 것입니다.
연속지적도 Polygon │ ▼ QGIS │ ▼ Polygon → GPSMapEdit │ ▼ Polyline Label │ ▼ Garmin
즉, 필지 경계(Line)에 지번 라벨이 붙어 있는 상태입니다.
하지만 Garmin에서는 다음 구조가 더 이상적입니다.
Polygon(필지) │ ├── 경계선 │ └── 중심점(Point) │ └── Label = 지번
이렇게 하면 지도 확대 시 지번 위치가 훨씬 안정적으로 유지됩니다.
방법 1. QGIS에서 Polygon 중심점 생성 (가장 추천)
QGIS에는 이미 이 기능이 있습니다.
Processing Toolbox
Vector geometry ↓ Point on Surface
또는
Centroids
을 사용합니다.
Point on Surface를 추천합니다.
이유는
Centroid
는 오목한(ㄷ자, U자 형태 등) 필지에서는 중심점이 폴리곤 밖으로 나갈 수 있습니다.
반면
Point on Surface
는 항상 폴리곤 내부에 점을 생성합니다.
생성 순서
Polygon ↓ Point on Surface ↓ 새로운 SHP 생성
예를 들어
Parcel.shp
↓
Parcel_Point.shp
속성은 그대로 복사됩니다.
예를 들어
↓
Point SHP에서도
가 그대로 유지됩니다.
GPSMapEdit로 가져오기
Point SHP를 Import 합니다.
Type은 예를 들어
0x6400
또는
0x2F00
같이 사용자 POI 타입을 사용합니다.
Label에는
[JIBUN]
또는
[PNU]
를 연결합니다.
그런데 Garmin에서는 문제가 하나 있습니다.
Garmin은 Point Label을 적극적으로 그리지 않습니다.
즉,
Point ↓ 127-5
를 만들어도
Garmin이
"안 그려도 되겠네."
라고 판단하면 표시하지 않습니다.
이것이 현재 많은 분들이 겪는 문제입니다.
해결 방법
방법 A (추천)
Point는
0x6400
같은 Custom POI보다
0x2B
0x2C
0x2F
등 라벨 표시 우선순위가 높은 타입을 사용하면 더 잘 보이는 경우가 있습니다.
방법 B
TYP 파일에서
DrawPriority LabelPriority
를 높입니다.
방법 C (제가 가장 추천)
Point를
Invisible POI
로 만들고
Label만 출력합니다.
아이콘은
1×1 Transparent
PNG처럼 보이지 않도록 설정합니다.
그러면 화면에는
127-5
만 나타납니다.
방법 2. GPSMapEdit 안에서 생성
GPSMapEdit에는 Polygon 중심에 자동으로 Point를 만드는 기능이 거의 없습니다.
따라서
QGIS에서 생성한 후
Point SHP ↓ GPSMapEdit Import
하는 것이 가장 편합니다.
제가 실제로 사용하는 방법
저라면 작업 흐름을 아래처럼 구성합니다.
연속지적도 Polygon │ ▼ QGIS ① Point on Surface 생성 ② 지번 속성 복사 ③ SHP 저장 │ ▼ GPSMapEdit ① Polygon Import ② Point Import ③ Point Type 지정 ④ Label=지번 │ ▼ cGPSmapper │ ▼ IMG
이 방식은 필지 경계와 지번을 완전히 분리하여 관리할 수 있고, 데이터 수정도 훨씬 쉽습니다.
한 가지 더 제안
사용자처럼 대한민국 연속지적도를 Garmin용으로 제작하는 경우에는 QGIS에서 이 과정을 자동화하는 것이 좋습니다. 예를 들어 Python(PyQGIS) 스크립트로 다음 작업을 한 번에 수행하도록 만들 수 있습니다.
연속지적도 SHP 불러오기
Point on Surface 자동 생성
지번(PNU 또는 지번 필드) 자동 복사
GPSMapEdit에서 바로 읽을 수 있는 SHP로 저장
이렇게 하면 전국 단위의 연속지적도도 버튼 한 번으로 Point 라벨 레이어를 생성할 수 있습니다.
또 하나 궁금한 점이 있습니다. 현재 지번이 저장된 레이어는 무엇인가요?
① 필지 Polygon의 속성에 지번이 들어 있는 상태
② 이미 별도의 지번 Point SHP가 존재하는 상태
③ Line SHP에만 지번이 저장되어 있는 상태
이 중 어느 경우인지 알려주시면 그 구조에 맞는 가장 효율적인 변환 방법을 구체적으로 설명드리겠습니다.
오늘 오후 1:39
1번이야
1번이라면 가장 작업하기 쉽습니다.
즉 현재 데이터 구조는 다음과 같은 상태입니다.
Parcel.shp (Polygon) Geometry : Polygon 속성 ------------------------ 지번 : 127-5 지목 : 답 PNU : 482703302.... ------------------------
이 경우에는 QGIS에서 Point 레이어를 자동으로 생성하면 됩니다.
방법 1. Point on Surface (가장 추천)
Processing Toolbox
Vector geometry ↓ Point on surface
입력
Parcel.shp
출력
Parcel_Point.shp
생성되는 Point에는 Polygon의 모든 속성이 그대로 복사됩니다.
예를 들어
Polygon 지번 = 127-5 지목 = 답
↓
Point
지번 = 127-5 지목 = 답
이렇게 됩니다.
이 상태에서 GPSMapEdit로 가져오면 됩니다.
방법 2. Geometry Generator (추천)
필지가 매우 작은 경우에는 중심점이 약간 치우칠 수 있습니다.
QGIS의 Geometry Generator를 사용하면
point_on_surface($geometry)
를 이용해 내부에 위치한 점을 생성할 수 있습니다.
하지만 실제 SHP를 만들려면 역시 "Point on Surface" 알고리즘을 사용하는 것이 편합니다.
GPSMapEdit에서
Point SHP를 Import합니다.
Type은
0x6400
보다는
Garmin에서 Label을 잘 그리는 타입을 사용하는 것이 좋습니다.
예를 들어
0x2B 0x2C 0x2F 0x6616
등을 시험해 볼 수 있습니다.
그리고
Label은
[JIBUN]
필드를 지정합니다.
그런데 여기서 가장 중요한 문제가 있습니다.
여기부터는 Garmin 내부 동작 때문입니다.
Garmin은
Point ↓ Label
을 항상 표시하지 않습니다.
예를 들어
127-5
라는 Point가 100개 있으면
Garmin은
15개만 그림 나머지는 생략
하는 경우가 흔합니다.
이건 GPSMapEdit 문제가 아니라 Garmin의 Label Engine 때문입니다.
제가 추천하는 방법
여기서 한 단계 더 발전시키면 상당히 좋은 결과를 얻을 수 있습니다.
현재는
Polygon ↓ Point on Surface ↓ Point Label
을 생각하고 계시는데,
저라면
Polygon ↓ Point on Surface ↓ Point ↓ MP 파일 생성 ↓ 자동으로 Label 추가
까지 자동화합니다.
더 좋은 방법이 있습니다. (실제로 제가 추천하는 방식)
Garmin은 POI(Point)보다 City(Point) 타입의 라벨을 우선적으로 표시하는 경향이 있습니다.
예를 들어
0x6400
보다
0x0100~0x1100 계열
(도시/마을 계열 타입)
을 이용하면 지번 라벨이 더 잘 표시되는 경우가 있습니다.
이건 Garmin의 Label Engine을 이용하는 방법입니다.
제가 하나 제안드리고 싶은 것이 있습니다.
사용자께서는 이미
QGIS
GPSMapEdit
cGPSmapper
Montana 700
까지 성공하셨습니다.
이 정도면 대한민국 연속지적도 전용 Garmin 제작 시스템을 만들 수 있습니다.
제가 도움을 드릴 수 있는 부분은 다음과 같습니다.
QGIS 플러그인(또는 PyQGIS 스크립트) 작성
Polygon → Point 자동 생성
속성 자동 복사
Garmin용 필드 자동 생성
MP 파일 자동 생성기
SHP를 바로 MP 파일로 변환
타입 및 라벨 자동 설정
Garmin용 TYP 파일
지적경계
필지
지번
등산로
임도
산림경계
전국 연속지적도 원클릭 빌드
BAT 또는 Python으로
SHP ↓ MP ↓ cGPSmapper ↓ IMG
까지 자동 처리
이렇게 구성하면 반복 작업을 거의 자동화할 수 있고, 전국 단위의 연속지적도 갱신도 훨씬 수월해집니다.