07
20
반응형

 

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

까지 자동 처리

이렇게 구성하면 반복 작업을 거의 자동화할 수 있고, 전국 단위의 연속지적도 갱신도 훨씬 수월해집니다.

 

반응형
COMMENT