|
EBOOK Project
Programs
How To
Join Maps
Add/Modify POIs
Unknown MMO
Create Maps
Garmin to Magellan
Downloads
Contacts
• E-mail
|
POI DB specification
This document is an add-on to Specification_PA10 (S_PA10) , available at Mapsend_format group (this outstanding Specification_PA10 was written by members of the MapSend_Format group (every time I read the Specification I can not belive it was done from scratch! Such a smart people, many thanks to them, without the Specification none of the program here could be developed). 1. Structure of POI Database POI database is composed of the following files: Coordinates of the POIs (in terms of Cell# and X,Y offset) are located in 3 files in the MAP folder: MAP\all_poi.lay Text information is located in the Raima database tables: MAP\RaimaOUT\poi_data.dax There are also a few files (or sections in the files) that determine appearance of POIs on PC and GPSR screen: DATA\catscat.dat (names of categories (and subcategories) that will be shown in MapSend and will be exported to GPSR). When user select categories to be shown (with F9 or "Options-POI" menu) this file changes. MAP\poi.cfg (what icons will be used to show categories on PC screen and zoom properties) 2. Database Files
Content is similar, some of newer MapSends (e.g. DirectRoute USA) do not have all_poi.drc et all.) 2.2. all_poi.lay Structure of the header of the all_poi.lay is as in 4.10.6 section of S_PA10. If MapSend software have MAP\fast_lay.dta and MAP\fast_db.dta (almost all, except MMO), the headers are defined therein for the fast start. If all_poi.lay is created with custom header (coordinates, level, scale, etc), the files should be removed/renamed to force Mapsend use actual header from the all_poi.lay. Format of the file is described in the 4.10.6 (4.10.6.4) section of S_PA10, with the following corrections: STRUCT poi_object { Text_Slot: UNION vsize{ In the case of 3 bytes value for Text_Slot; it is useful to combine Text_Offset and Text_Slot in one ulong Text_reference= (Text_Offset << 24) | Text_slot or the same (Text_Offset<<24)+Text_Slot
2.3. poi_data.dpo This file contains records of major information on every POI: cell#, number in cell, category, subcategory, references to text info (all_poi.dtx): General structure of the file follows Raima DB rules, described in the 4.11 section of S_PA10 (see this section for more details): STRUCT page{ Page size is 0x200. structure poiPoint_ { Slot_number and Text_offset can be combined for convenience in one Text_Reference variable: ulong Text_reference= (Text_Offset << 24) | Text_slot ((Text_Offset<<24)+Text_slot) Number_in_Cell is a number of this POI's record in a map_object sequence defined in all_poi.lay (see 4.10.6 of S_PA10); 2.4. poi_data.dtx This file contains POI's names and auxiliary information (values for aux fields): STRUCT page{
Note: In contrast to many others Raima tables, there is no zero_padding structure auxText_ { char [248] is a continuous sequence of chars, containing POI's name and auxiliary information, aux field separator is 0x09, end of POI record is 0x07. Next POI record starts immediately after 0x07. Names are sorted alphabetically. Example (S&D Canada): 00000200: 12 2B 06 3C 03 00 01 00 │ 00 00 31 30 30 30 20 49 ↕+♠<♥ ☺ 1000 I
2.5. poi_data.dct Contains category names, references where character changed in all_poi.dtx (sorting) and references to slots where auxiliary field names are defined (in the all_poi.dax). STRUCT page{ Page size is 0x200. record categ_info_ { <need to be defined, not always correct> Number_of_SubCutFields – number of slots containing SubCategory field names (?). Normally should be equal to slotLast_SubCat-slotFirst_SubCat. Not always, not clear if this correct or not SlotFirst_SubCat: Slot number for the first entry in Sub category names chain in poi_data.dsc Number_of_ AuxFields; number of Aux Fileld slots=Last_AuxField-First_AuxField POI_count: number of POIs in the category firstChSlot: indicates slot number in the poi_data.dtx, where the first character of POI's name changed; 39 bytes of ulong values stand for the following ascending characters (case insensitive): [X,0,1,2,3,4,5,6,7,8,9,X,',a,b,c,d,......,z,X] X denotes unidentified characters (did not find). Comm_slot: Always zero; In some cases AUX fields are zeroes (For example Campground category in S&D USA): 00 00 00 00 ulong Number_of_ AuxFields; The two definitions can be mixed in one poi_data.dct, for some categories structure of the record is type A, for others is type B . If AUX fields are zeroes (type B), they are defined in the poi_data.dsc (see below) 2.6. poi_data.dax This file contains Auxiliary field names. STRUCT page{ Page size is 0x200; record categ_info_ { char [25] AuxField_Name SlotPrevious: Slot Number of the previous record in the chain; if SlotPrevious=00 00 00 00 this is the very first record in the chain; AuxField_Name: Name of the auxiliary field Field names can be: POI_Name: field for POI's name, the POI_Name field name ("POI_name") is not shown; 2.7 poi_data.dsc Contains subcategory names, references where character changed in all_poi.dtx (sorting) Page size is 0x200 record subcateg_info_ { 00 00 00 00 01 XX XX XX 01 00 00 00 | Catg_id ulong Number_of_ SubCatFields; type A: if Aux names slots are defined in poi_data.dct As was discussed in sec. 2.5 the two definitions can be mixed in one poi_data.dct file Catg_id Number of category to which this subcategory belong. <not always, to be defined> POI_count_SubCat number of POI for this subcategory FirstChSlot_SubCat: indicates slot number in the poi_data.dtx, where the first character of POI's name changed; 39 bytes of ulong values stand for ascending characters (case insensitive) (same as in 2.5). SubCat_Name : name for subcategory; If there is no subcategories (e.g. Topo USA or Australia) the record looks like: record subcateg_info_ { 3. INI, DAT and CFG files 3.1. map.ini There are 2 entries in the map.ini related to POIs. 1. [LAYERS] if RaimaOut\ext_db.dbd contains description of POI's tables POI_Index=0, and POIs can be incorporated into DataBase, otherwise POI_Index=-1 and MapSend can not accept POI information (text for names and aux, but POIs will be shown with icons). 2. [POI] Reference to poi.cfg file 3.2. poi.cfg Defines appearance on PC screen. [LAYERS] [ACLV_INFO] [LOCALOPTIONS] [ACLV_INFO] see S_PA10, section 4.10.1.7 for details [LOCALOPTIONS] 3.3 export.cfg Defines how POIs look on GPSR screen [POI] UNIT_PARAM define visibility at different zoom levels and map details settings. For more information see documents on zoom properties available at Mobilemapper and Magellan_Meridian yahoo groups. POI_INDEX index to the poi group in the *.img file, must be the next number to the last used in the [GROUPS] section of the export.cfg. CAT_NUMBER total number of categories N=Name, Bmp, NAME_GPSR N- category count number Name: name for category how it will be shown on GPSR screen. Custom names allowed. BMP- actually not used, some Mapsends has this name the same with defined in poi.cfg; recent MapSends (S&D USA, Canada, DR) use "a.bmp" for all categories. NAME_GPSR, name for the category in GPSR firmware, can not be changed. To my knowledge all Magellan firmware (GPS, Gold, Platinum, Color... v4-v5) contain the same set of 87 names. GPSR looking for this name to show appropriate icon. If there is no match, icon will be shown with default "crossed square" icon. Here is this complete set of names extracted from the firmware (in spite of some names are grammatically incorrect (RESTUARANTS), they must be used exactly how they are in the list) AERIAL 3.4 catscat.dat This file defines what categories (and subcategories) will be shown on the PC and GPSR screens. Every time we change visibility of categories with "F9" ("Options-POI" menu), we change this file. ulong CatSubCat_number ......... CatSubCat_number total number of category and subcategory names that will be shown/exported If there is no subcategories CatSubCat_number= total number of categories, in spite of formal NOSUBX used for subcategory names.
|