1. 내용
(a) vector map 을 만들때 mapsforge-map-writer 라는 java 라이브러리를 사용 합니다.
(b) map 작성할때 option 중 tag-values=true/false 에서 true 인경우 map version (v5)
https://github.com/mapsforge/mapsforge/blob/master/docs/Getting-Started-Map-Writer.md
(c) tag-mapping.xml 내용중
pois, ways 부분에 아래와 같이 가변 자료 입력 가능
<pois>
<osm-tag key="poi_숫자" value='%f' zoom-appear = "14" />
<osm-tag key="지하철출구번호" value='%f' zoom-appear = "14" />
<osm-tag key="poi_문자" value='%s' zoom-appear = "14" />
<osm-tag key="poi_색갈:colour" value='%f' zoom-appear = "14" />
</pois>
< ways >
<osm-tag key=" way _숫자" value='%f' zoom-appear = "14" />
<osm-tag key=" 지하철출구번호 " value='%f' zoom-appear = "14" />
<osm-tag key=" way _문자" value='%s' zoom-appear = "14" />
<osm-tag key=" way _색갈:colour" value='%f' zoom-appear = "14" />
</ ways >
(d) Osm 내용 (아래는 pois 견본만 있음)
<node id='3504541599' timestamp='2026-04-01T11:39:28Z' version='2' lat='37.55157192619' lon='127.19402548949'>
<tag k='name' v='미사역' />
<tag k=' 지하철출구번호 ' v="1" />
</node>
<node id='3504541599' timestamp='2026-04-01T11:39:28Z' version='2' lat='37.55157192619' lon='127.19402548949'>
<tag k='name' v='미사역' />
<tag k=' 지하철출구번호 ' v="2" />
</node>
(e) 테마를 버전을 5 로 하고 아래와 같이 지정하면 출구번호를 1 부터 10 까지 가변
(tag-mapping 에 모든 자료를 입력하는것이 아님)으로 지정가능
<rule e="node" k=" 지하철출구번호 " v="*" >
<caption fill="#4040FF" font-size="24" font-style="bold" k=" 지하철출구번호 " stroke="#FFFFFF" stroke-width="2.0" />
</rule>
(중요: 현재 문제점) https://github.com/mapsforge/mapsforge/releases/tag/0.27.0
에서 map을 만들면 자동으로
지하철출구번호=%b (내용 : 1 byte 의 숫자 로 음수 양수가 표시되는 숫자로 1 byte 로 표현이 되어야 하는데
pois 에는 2 Byte 로 표현 되고 있으며, ways 는 정상적으로 1 byte 로 표현되고 있음.
(회원님께 요청) https://github.com/mapsforge
에 위와 같은 내용을 입력하고 수정 요청을 하면 될것 같고
jar 소스를 (완전하개 확인 못함) 확인해보니 write 하는쪽이 아니라 osm 에서 읽을때 pois 는 2 byte 로 읽는것 같음(?)
혹시 가능하시다면 카페회원님중 "돌포"님께서 많이 알고 계신것 같아 가능 하시다면 부탁드림니다.
(작업 방향)
위의 jar 이 수정 되기 전까지는 Cvm 에서는 다른 방법으로 Cvm 에서 만드는 모든 Map 은 pois 안에 %b 를 1 byute 로 수정하는
과정을 작업되도롤 프로그램 하고 있는중입니다.
혹시 아이디어나 의견은 댓글을 부탁드림니다.
첫댓글 저는 poi의 %b가 2바이트로 인코딩되고 있다는 특이점을 발견은 했지만 왜 그런 현상이 일어 나는 지에 대해서는 잘 알지 못합니다.
다만, 지도는 보아야 하는 것이 현실이므로 편법으로 다음과 같은 방법을 사용하고 있습니다.
1 byte인 %b가 2 byte로 인코딩되어 있으므로, 태그 이름을 tag=%b에서 2 byte인 tag=%h로 변경하는 것입니다.
hex 에디터로 맵 파일을 열어, header의 poi tags 부분에서 “%b”를 “%h” (또는 0x62 를 0x68)로 변경 저장하면 끝입니다.
생각하지 못했던 방법 입니다.
음수, 양수에 관계없이 처리도 되고, %b => %h 로 변경해도 중복되더라도 관계없고..
정말로 좋은 아이디어 입니다.
Cvm 에서 는 map 을 format 방식으로 읽어서 header의 %b 는 유지하고 자료를 2 byte 를 1 byte 로 변환 했는데.
정반대 방법 으로 처리하는것이 좀더 빠를것(?) 같군요.
1. map 의 길이를 알아낸다.
2. header 에서 %b 의 갯수와 위치를 확인
3, map 을 갯수와 자료수만큼 map 을 hex 로 읽어서 변환...
4. 2 가지 방법을 사용하여 작업시간을 비교 해 보고 방법을 결정하면 될것 같음니다.