Zh-hans:Mkgmap
| Mkgmap |
|---|
| Help |
| Routing i18n Known issues |
| Development |
| Download maps |
此程序將OpenStreetMap數據轉換為可以加載到Garmin GPS設備上的地圖格式。它可以一步完成轉換,不需要其他輔助程序。
该项目的目标是在我的Garmin Legend Cx上顯示OpenStreetMap数据,以便在制图时了解那些已经完成和那些还未完成。另外,可以看到自己创建的地图是非常开心的。
报告BUG,提供建议或获得帮助,请阅读contact page, 或添加talk page.
Contents |
下载
目前提供zip(Windows环境下使用方便), 和压缩tar文件,内容完全一样。
- 当前稳定版本是1625
(建议使用最近/每日更新版本,不使用稳定版本)
自1188后的主要变更:
- 更好的Multipolygon和海洋支持
- 对Style文件由上而下的逻辑解析(而不是基于规则的复杂匹配)
- 针对MapSource生成NSIS安装器的能力
主要不足/缺陷
- Routing over several (more than 2) tiles in Mapsource
- Address index still not 100% correct (works in Mapsource, in the active tile only on "old-style" GPS like etrex/60CSx/edge, does not work at all on GPS like Nuvi, Oregon)
- Overview map for Mapsource empty (a non empty overview map would pan around quicker)
自1067后的主要变更:
- Shields are displayed on highways
- Extended/Marine types added, providing more line types
- make-cycleways to synthesise cycle ways on roads that have a separate cycle lane
- 更小的img文件
- Many bug fixes and routing improvements
- 下载
- 每日更新: mkgmap-latest.tar.gz (最近的, 一般可用,但可能存在问题)
- 每日快照和源程序 Snapshots
- 发行版1625: Zip文件 mkgmap-r1625.zip, tar文件 mkgmap-r1625.tar.gz
- 发行版1188: Zip文件mkgmap-r1188.zip, tar文件mkgmap-r1188.tar.gz ( 前一稳定板 )
It requires Java 1.6, with the last release that worked on 1.5 being r1195. If your operating system does not already have java then install it.
- Ubuntu
Since at least Jaunty mkgmap is available in the Ubuntu software repositories. Simply run the following at a command prompt to install. note that currently (April 2010) the version in the ubuntu-repository is very old, so you better use the current version from svn sudo aptitude install mkgmap
The program can then be run by typing mkgmap at the terminal.
生成地图
- Create a file containing OSM data. I do this by saving from JOSM. You can call the file anything you like — I'm using data.osm in the example. You can also get a larger map area by using XAPI like this (example for the UK Midlands area):
wget http://www.informationfreeway.org/api/0.6/*[bbox=-3.5,51.5,-1.0,53.5] -O data.osm
or
curl -L "http://www.informationfreeway.org/api/0.6/map?bbox=-3.5,51.5,-1.0,53.5" -o data.osm
- Then to make a Garmin map image file; open a command prompt and navigate to your Mkgmap directory. Then run the following command:
java -jar mkgmap.jar [options] data.osm
- This will produce a file called 63240001.img
It's possible that the application may crash out after a point, particularly if you're processing a large area, with Exception in thread "main" java.lang.OutOfMemoryError: Java heap space errors. If this happens, simply increase the size of your max heap space like this:
java -Xmx512M -jar mkgmap.jar [options] data.osm
which would allocate 512Mb of physical memory to the process.
命令行选项
For larger maps, you may want to alter some details of the default map. There are options you can set. If you want to set several options, it might be easier to put the options into a file and use the the -c option. For a complete list see the complete option list (which may be outdated) or run java -jar mkgmap.jar.
Usage: mkgmap [options...] <file.osm> Options:
- --help=topic
Print help on the given topic. If the topic is omitted, a list of
all the help topics is printed instead.
- -c filename
Specify a configuration file instead of command-line options.
In the file, each line is an option setting of the form
option=value, just like on the command line except that there is no
leading ';--'.
- -n name
- --mapname=name
Change the name of the map. Garmin maps are named by 8 digit numbers.
The default is 63240001. It is best to change the name if you are going
to be making a map for others to use so that it is unique and does not
clash with others.
NOTE: enter just the name, without the ".img" extension, otherwise the
tool will throw an exception. The tool won't warn you if you put in
something other than 8 digits but your Garmin may not show the map.
- --description=text
Sets the descriptive text for the map. This may be displayed in
QLandkarte, MapSource on on a GPS etc.
- --country-name
Sets the map's country name. The default is "UNITED KINGDOM".
- --country-abbr
Sets the map's abbreviated country name. The default is "GBR".
- --region-name
Sets the map's region name. By default, the map has no region name.
- --region-abbr
Sets the map's abbreviated region name. By default, the map has
no abbreviated region name.
Label options:
- --latin1
This option allows the use of non-ascii characters in street names. What
is actually supported is hardware-dependent. Some devices can only do
ASCII characters, for example.
Mkgmap goes to some length to convert un-displayable characters,
though, and by default (without this option), it will transliterate
characters to unaccented ASCII characters where possible.
- --charset=name
Use the specified character set.
- --code-page=number
Use the given code page.For example, use --code-page=936 to display the correct chinese character.
- --lower-case
Allow labels to contain lower-case letters. Note that this doesn't
work on many (most, all?) Garmin devices.
Style options:
Also see the custom style documentation.
- --style=name
Specify a different style name, rather than the default.
- --style-file=file
Specify an external file from which to obtain the style. "file" can be a
directory containing style directories (such as mkgmap/resources/styles)
or a zip file containing the style. It can also be a URL. If there is
more than one style in the zip file, then the ;--style argument can be used
to select the style that is used.
For backward compatibility, you can also supply a map-features.csv file
here. See the customization help.
- --list-styles
List the available styles.
- --levels=levels code
Change the way that the levels on the map correspond to the zoom levels
in the device. See customization help. The default is the equivalent
of "0=24, 1=22, 2=21, 3=19, 4=18, 5=16", although this may change.
- --name-tag-list
Specify the tag that will be used to supply the name. Useful for language
variations. You can supply a list and the first one found will be used
(e.g. ;--name-tag-list=name:en,int_name,name)
- --map-features=file
Outdated option. Use the ;--style-file option instead.
Product description options:
- --family-id
This is an integer that identifies a family of products.
- --product-id
This is an integer that identifies a product within a family. It
is often just 1.
- --series-name
- --family-name
- --area-name
- --overview-mapname
Misc options:
- --block-size=number
Changes the block size that is used in the generated map. There is no
general reason why you would want to do this.
- --net
Create output file that supports "lock to road" option.
- --gmapsupp
Write a gmapsupp.img file, possibly joining previous gmapsupp.img (you
need to copy in the Mkgmap's working directory), that can be uploaded
to a Garmin device in USB mode. When making maps to join give each a
unique 8 digit name with the flag --mapname.
java -jar mkgmap.jar --gmapsupp corsica.img cyprus.img mallorca.img malta.img tenerife.img
- --ignore-osm-bounds
When reading OSM files, ignore any "bounds" elements.
- --road-name-pois[=GarminCode]
Generate a POI for each named road. By default, the POIs'
Garmin type code is 0x640a. If desired, a different type code
can be specified with this option.
- --tdbfile
Write a .tdb file.
- --index
Write MDR and MDX index files.
- --nsis
Write a .nsi file for use with NSIS to generate an executable to install the map in MapSource on Windows.
- --draw-priority=25
When two maps cover the same area, this option controls what order they
are drawn in and therefore which map is on top of which. Higher
priorities are drawn "on top" of lower priorities.
- --transparent
Make the map transparent, so that if two maps are loaded that cover the
same area, you can see through this map and see the lower map too.
Useful for contour line maps among other things.
- --version
Output program version.
- --verbose
- --max-jobs
安装
- Load this onto your Garmin GPS device. Garmin models such as the Legend Cx can be set into USB mass storage mode, where they appear as just another drive letter (on Windows) or filesystem (on Unix/Linux type systems). In this case you can just copy the map to the file Garmin/gmapsupp.img. Create the folder Garmin if it does not already exist.
- User:Tms13: If your GPS uses removable memory cards, it may be quicker to remove the card and write to it in a card reader - most Garmin units are USB 1.1; a USB 2.0 card reader will write at least 5 times faster, in my experience.
- If you have an older serial connecting and map displaying Garmin device you can upload the .img file to your Garmin unit using Sendmap.
- You can also combine two or more maps to one map with Sendmap or gmaptool.
- The QLandkarte program can be used to upload to the GPSmap 60CSx and the latest version also works to my Legend Cx.
已知问题
This is a list of currently known problems with mkgmap.
地址搜索
Due to limitations in understanding of the Garmin file formats, we do not know how to make the map searchable for street names using the built-in Garmin street search. Hacks like making every street a POI have been created (see talk page).
Mapsource (6.16.2)应用
An address search in Mapsource only partly works:
- City search appears to works fine
- Feature search appears to work fine as long as you enter a name for the feature
- Address search works, but often cities are mismatched.
- Intersection search does not work
GPS设备
Address search works inconsistently, depending on GPS unit. Some units require you to enter a Province but nothing that is entered works. Others (GPSMap 76csx...) semi-work as long as you enter a fictitious housenumber.
没有基础地图
Work is needed to create a basemap, which will speed up map redraw when zoomed far out inside when using Basecamp/Mapsource/Qlandkarte GT. This will allow for more sensible resolutions.
Routing over tile boundaries broken in Mapsource/Basecamp
Routing inside Mapsource/Basecamp (though not on GPS) works inconsistently when the route crosses (several) tile boundaries.
Sea polygons
The --generate-sea option can be used to generate the sea polygons but is currently to be considered as "beta". There are two alternative ways of using --generate-sea: either with multipolygons (--generate-sea:multipolygon) or without multipolygons (--generate-sea:no-mp) combined with a TYP file.
No land polygon when --generate-sea:multipolygon is used
The no-mp version of --generate-sea will create a land polygon inside coastline, overwriting the default "Garmin yellow" with a land colour defined in a TYP file. However, the multipolygon version does not create a land polygon, meaning that maps created with this option will use the default Garmin yellow background for land cover.
Suggested solution: re-use the "generate land polygon" code from the --generate-sea:no-mp algorithms and add an option to create a land polygon when using the no-mp version of --generate-sea
No coastline when --generate-sea:no-mp is used
When --generate-sea:no-mp is used, the coastline way is lost.
Suggested solution: add further option to --generate-sea:no-mp that retains the coastline way
POIs
Too many POIs for a given area that has been split using multipolygon code
The --add-pois-to-area switch will create an appropriate POI for any polygon that has a definition in the style file. However, the processing of the --add-pois-to-area code happens after the multipolygon split. This means that any multipolygon that is split into distinct polygons by the multipolygon code ends up with multiple POIs when it should only really have one.
Suggested solution: process --add-pois-to-area before the multipolygon code
POIs created outside of polygon
When the --add-pois-to-area switch is applied to complex polygons (e.g. with strongly concave edges, such as beaches) the POI can be placed outside of the polygon with which it is associated. The calculation of what is "inside" a polygon is computationally complex, hence why no solution has yet been implemented.
Area too large
If you try to process an OSM file that is too large, mkgmap will error out due to memory limitations.
To resolve this, you will need to split the file into smaller files using splitter. Here is how to do it:
java -Xmx1000m -jar splitter.jar file.osm
- Run mkgmap on the resulting files, for instance
java -Xmx1000m -jar mkgmap.jar -c template.args
See here for more details (you will most likely need to change splitter's --max-nodes switch to a lower value than the default).
开发
维基页面 development, 主要基于OSM的使用
外部链接 mgkmap主页.
Licence
The software is licensed under the GPL version 2. The maps it produces are to be licensed according to the data they were derived from which is Creative Commons CC-BY-SA 2.0 for OSM data. There is therefore no licensing conflict that might exist with other approaches.
图形界面
There are currently at least four efforts to provide a GUI for mkgmap, so that users can click on controls rather than remember command line instructions:
- OSM Composer - a GUI built on top of mkgmap, for simplifying the process of creating Garmin map images from OSM and SRTM data.
- MkgmapGUI from freegeographytools - Windows-only, closed source, only provides access to osm->img conversion
- Mkgmapgui from activityworkshop - Java, open source, provides basic access to conversion and img file combination functions
- DoMyMaps - according to User:Lao this has been recently suspended
脚本
For Unix users: Python Script.
For windows users: A Batch HowTo.
帮助
If you need help then try the following:
- Ask a question in the mailing list. The mailing list can be accessed using any newsgroup reader (eg. Thunderbird) using the following:
- Server: news.gmane.org
- Group name: gmane.comp.gis.openstreetmap.mkgmap.devel
- There is also an archive of the mailing list.
The mailing list is very active and will usually produce the fastest response.
Alternatively:
- Ask a question on the Garmin maps section of the OSM forums
- Ask a question on the talk page
链接
- http://www.parabola.me.uk/mkgmap/ - Download and news
- mkgmap/dev - Page for mkgmap development
- mkgmap/routing - generating routable maps
- OSM Map On Garmin - General overview for creating maps for Garmin.
- OSM_Map_On_Garmin/POI_Types - List of different POI types and how they look on different devices
- OSM Map On Garmin/Download - Download img files created from OSM data.
- Image:Putney-on-gps.jpg - A map of Putney on a Venture Cx, created by User:Gravitystorm
- Image:Qlandkarte sueddeutschland.png - A map of Southern Germany viewed with QLandkarte
- mkgmap/i18n - The internationalization page.
- User:Computerteddy - The World ready to use with Garmin GPS, made with mkgmap from (mostly in German Language)
- OSM Map On Garmin/Cycle map - Making a cycle map with mkgmap.



