Navteq navigation CD for RT3 structure 21/10/2006
1.
2. 3.
4.
Preliminary ......................................................................................................................... 3 1.1. Disclaimer .............................................................................................................. 3 1.2. Why this document................................................................................................. 3 1.3. CD version(s) described ......................................................................................... 3 Main contributors ............................................................................................................... 4 General information ........................................................................................................... 4 3.1. Localization by zones............................................................................................. 4 3.2. POI localization by country, region, department city and district. ........................ 7 File structure....................................................................................................................... 8 4.1. Files naming rules .................................................................................................. 8 4.2. Files in the tree structure under the root................................................................. 8 4.2.1. P_RR\CAT\ZZZDCP.CAT ................................................................................ 8 4.2.2. P_RR\IND\ZZZCOM.IND ................................................................................ 9 4.2.3. P_RR\INSCIV\LZWZZZ.S_C ......................................................................... 10 4.2.4. P_RR\LET\ZZZTOP.LET................................................................................ 10 4.2.5. P_RR\TOP\ LZWZZZ.TOP ............................................................................. 10 4.3. Files in the root..................................................................................................... 11 4.3.1. CONFIG.LOG.................................................................................................. 11 4.3.2. DB_DWNL.OUT ............................................................................................. 11 4.3.3. DCN.DAT ........................................................................................................ 11 4.3.4. FRANC002.DEG ............................................................................................. 11 4.3.5. FRANC002.DPL .............................................................................................. 12 4.3.6. FRANC002.DRL.............................................................................................. 12 4.3.7. FRANC100.DEG ............................................................................................. 12 4.3.8. FRANC100.DPL .............................................................................................. 13 4.3.9. FRANC100.DRL.............................................................................................. 13 4.3.10. FRANC.DEG ................................................................................................... 13 4.3.11. FRANCDET.DRS ............................................................................................ 14 4.3.12. FRANC_EX.DPS ............................................................................................. 14 4.3.13. FRANC_EX.DSS ............................................................................................. 14 4.3.14. FRANC_EX.RID ............................................................................................. 14 4.3.15. FRANC_XX.POI ............................................................................................. 14 4.3.16. FRANC_NOMSERV.DAT.............................................................................. 15 4.3.17. FRANC_NV.DAT............................................................................................ 15 4.3.18. FRANCCAT.POI ............................................................................................. 16 4.3.19. FRANCDPA.LZW ........................................................................................... 16 4.3.20. FRANCDSP.POI.............................................................................................. 16 4.3.21. FRANCPOI.DAT ............................................................................................. 17 4.3.22. FRANCXXX.DSC ........................................................................................... 18 4.3.23. FRANCXXX.DST ........................................................................................... 19 4.3.23.1. FRANCSCC.DST ........................................................................................ 20 4.3.24. FRANSCC.IMP................................................................................................ 20 4.3.25. GRUPPO2.DAT............................................................................................... 20 4.3.25.1. File header .................................................................................................... 20 4.3.25.2. CodNazGuidSX............................................................................................ 20 4.3.25.3. DIVIETI.DAT .............................................................................................. 21
5.
4.3.25.4. DPN.CAT..................................................................................................... 21 4.3.25.5. FRANC.Geo ................................................................................................. 21 4.3.25.6. FRANC.TiT.................................................................................................. 21 4.3.25.7. FRANC_EX.DMR ....................................................................................... 21 4.3.25.8. FRANC_EX.DSR ........................................................................................ 22 4.3.25.9. FRANC_UK.POI ......................................................................................... 23 4.3.25.10. FRANCCAT.POI ..................................................................................... 23 4.3.25.11. FRANCCHR.TXT.................................................................................... 23 4.3.25.12. FRANCOM.LET...................................................................................... 23 4.3.25.13. GENDET.DAT......................................................................................... 23 4.3.25.14. Label.txt.................................................................................................... 23 4.3.25.15. Map.ver .................................................................................................... 23 4.3.25.16. PrefInt....................................................................................................... 23 4.3.25.17. RdsTable................................................................................................... 23 4.3.25.18. RdsTableLibere ........................................................................................ 23 4.3.25.19. Release ..................................................................................................... 23 4.3.26. GUIDA_CHAMPERARD.POI........................................................................ 23 4.3.27. SCITTANAME.DAT ....................................................................................... 23 4.3.28. SIF.VER ........................................................................................................... 23 4.3.29. SW_VER.DAT................................................................................................. 23 4.4. Summary .............................................................................................................. 24 4.4.1. File size (TD3002900) ..................................................................................... 24 4.4.2. File link ............................................................................................................ 26 Comment ajouter un POI.................................................................................................. 27
1. Preliminary This is a draft version of the documentation. In red, missing information or not double checked.
1.1.
Disclaimer
Copyright (c) 2006,
[email protected],
[email protected] This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 2.0 France License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/2.0/fr/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. All of the information, instructions, and recommendations on this document are offered on a strictly "as is" basis. This material is offered without any warranty, expressed or implied. In particular, any and all warranties of fitness for use or merchantability are disclaimed. Neither the document writer nor any contributor shall be held responsible for any direct, indirect, incidental or consequential damages, that may result from anything that is viewed on this document, or anything you do as a result thereof. It is up to the reader to determine the suitability of any directions or information viewed here.
1.2.
Why this document
Since years, a lot of people wanted to add their own POI to those already included in the navigation CD for RT3. Most of people wanted to add radar or velocity camera, but some others wanted also to add various customized POI (friends, …) Starting with version 5.5/6.6, the RT3 software lets the user select radar as a kind of POI. But it is a useless option because there is no radar in the cartography itself. The main goal of this document is to describe the data structure of the cartography to be able to write a software which can customize POI known by they latitude/longitude and generate a new version of the cartography Another goal (perhaps more complex) would be to merge two (or more) CD for people (like me) living near a border. In a day to day usage, it’s a pity the Major Road of Europe cartography is totally blank after I cross the German border using a brand new bridge followed by a small road. And a lot of other usage may be found in the future…
1.3.
CD version(s) described
This document is based on a CD Navteq for RT3 France 2005/2006 2nde edition (TR3002900). These information don’t apply to “old” CD structure (2004 and before, 2005 for certain countries) without compressed files (if there is a LABEL.TXT file in the root or directories with name containing letters like C_00 or L_00, this is an “old” one).
Filenames used in CD for other countries may change (see 4.1 Files naming rules). Structures should be the same for newer versions as well as for other countries version. File size, number of record, exact content (see 4.4.1 File size (TD3002900)) depends of course of the cartography version and country.
2. Main contributors Phil95 : Many thanks to phil95 for all his work. complete description of localization by zones, the way to deflate compressed files, graphical representation of POI and maps… I’ve just renamed GC, MC, PC into LS, MS et SS to ease the english translation of this document. dkomputer : Thanks. Without you, I still find a regular pattern into FRANCXXX.DSC instead dividing it by 17. Janfi67 : I’m trying to collect all the available information and to summarize it in this document. Sorry for my poor English.
3. General information 3.1.
Localization by zones
Places, POIs, cartography elements are often localized in this way The European map is divided in a first level of 12 (horizontally) by 18 (vertically) large squares of 256Km by 256 Km called LS. Then each LS is divided into 256 medium squares (16 horizontally by 16 vertically) of 16Km by 16 Km called MS. Finally, each MS is divided into 256 small squares (16 horizontally by 16 vertically) of 1Km by 1Km called SS. Zones are numbered from 0x00 to 0xFF from West to East, then from South to North. North .. ..
.. ..
.. ..
.. 0x4E
.. 0xE3 .. .. 0xDF 0xD6 .. .. .. .. 0xED
.. ..
0x3f
0x40
0x41
0x42
..
0x33
0x34
0x35
0x36
..
South Inside a Small Square, a POI is fully localized by two coordinates, X and Y between 0 and 999. POI coordinates are LS, MS, SS, X and Y. Another way to express them using a common geodesic language is : Formulas to translate LS, MS, SS, X, Y into E, N: E = 256000 * LS mod 12 + 16000 * MS mod 16 + 1000 * SS mod 16 + X N = 256000 * LS div 12 + 16000 * MS div 16 + 1000 * SS div 16 + Y
Formulas to translate E, N into LS, MS, SS, X, Y: LS MS SS X Y
= = = = =
(E div 256000) mod 12 + 12 * (N div 256000) (E mod 256000) div 16000 + 16 * ((N mod 256000) div 16000) (E mod 16000) div 1000 + 16 * ((N mod 16000) div 1000) N mod 1000 E mod 1000
Formulas to translate LS, MS, into column and line: column = 16 * (LS mod 16) + MS mod 16 line = 16 * (LS div 16) + MS div 16
Where mod is modulo, div is the integer division. Due to the projection used for creating the planed map MS are not north – south oriented Column 0-120 Column 121 (10°2’) Column 122 – 191
: decreasing positive rotation : minimum rotation (origin in this column) : increasing negative rotation
This seems to indicate a kind of cylindrical projection with a center longitude of 10°2’ E (false East) and N (false North) should be in meters with the given definition. Sometimes coordinates are LS, MS, X, Y with X and Y from 0 to 15999
Metropolitan France plus Corse is divided in 18 zones from west to east then south to north: 0x2b : Corse sud 0x33 : Hendaye – Cambo les bains 0x34 : BAGNÈRES-DE-LUCHON – LAVAUR
0x35 : Cerberes – L’isle sur la sorgues 0x36 : SIX FOURS LES PLAGES - CASTELLANE 0x37 : Corse nord 0x3f : Bidard – MESSANGES 0x40 : AUCH - BEAUNE-LES-MINES 0x41 : GRAULHET – CHÉNAS 0x42 : PERNES-LES-FONTAINES - VILLE LA GRAND 0x4b 0x4c 0x4e 0x57 0x58 0x59 0x5a 0x65 : ÉQUIHEN-PLAGE – LEFFRINCKOUCKE
3.2.
POI localization by country, region, department city and district.
This is another way to localize POI and places : It is used on some of the files and directories of the navigation.
\P_RR\CAT\ P : country 1 : Italie 2 : France 3 : Allemagne 4 : Belgique … RR : Région (area? Something else?) in the country … 10 : Alsace … DEP : Départment in the area 001 : Bas-Rhin 002 : Haut-Rhin For example, the \P_RR\CAT\DEPDCP.CAT file describes cities of the department, identifying them by a number (after the name) and sometimes with one or more district number (after the city number, 0xFFFF if there is no district)
4. File structure The structure should be relevant for all versions with compression (to be verified)
4.1.
Files naming rules
The tree structure and the file names under the root don’t depend on the country. Of course, directory names depend on the country (see 3.2 POI localization by country, region, department city and district.) but because of the presence of Major Roads of Europe on all CD, the structure is still present on all CD. The only difference between CD is the content of the files (more details for the CD country) Some file names at the root level are always the same (they don’t depend on country): • • • • • • • •
CONFIG.LOG DB_DWNL.OUT DCN.DAT GRUPPO2.DAT GUIDA_CHAMPERARD.POI (not present on all CD) SCITTANAME.DAT SIF.VER SW_VER.DAT
Of course, the content is not the same. All the other file names start by the country name encoded in 5 characters: • • • • • • • •
BENEL for Benelux (to be confirmed) CEUR1 for MittelEuropa Süd (Switzerland, north of Italy) CEUR2 for MittelEuropa nord (Austria, south Germany EST_E for East Europe FRANC for France GERM for Germany ITALY for Italy SPAGN for Spain/Portugal
In the document, all file names are related to France but you can easily translate them for your own CD.
4.2.
Files in the tree structure under the root 4.2.1. P_RR\CAT\ZZZDCP.CAT
List of cities ands districts of the department. As many files as departments in the Area (RR) of country P
50 bytes records sorted by alphabetic order of “city name” field
Position 0 – 45 46-47 48-49
Content City name City number District number in the city (0xFFFF if not significant)
4.2.2. P_RR\IND\ZZZCOM.IND Points to the first POI (by category in the FRANCXXX.DSC files) related to city/district 52 bytes records (as many as entries in ZZDCP.CAT file, then 1 record per city or district)
Position 0-1 2-3 4-7 8 - 11 12 - 15 16 - 19 20 - 23 24 - 27 28 - 31 32 - 35 36 - 39 40 - 43 44 - 47 48 - 51
Content City number District number in the city (0xFFFF if not significant) Index (from 1) of the first record in LZWZZZ.TOP related to the city/district. (0xFFFFFFFF if not significant) Index (from 1) of the first record in ZZZTOP.LET related to the city/district. (0xFFFFFFFF if not significant) Index (from 1) of the first record in FRANCSEM.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSAF.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSHR.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSTU.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSSH.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSSP.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSTR.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSAU.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSCC.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCMIC.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. (to be verified)
Open Point : Ceci est valide en France; il semble que pour certaines catégories (SEM par exemple), il y ait des POIs en Italie (Pays 1) et que la numérotation recommence a 0 pou la France (point a vérifier). Pour d'autres catégories (SHR) la numérotation ne recommence pas a 0 pour la France. Ceci a pour conséquence que deux fichiers IND peuvent pointer a tort sur les mêmes POIs (a vérifier)
4.2.3. P_RR\INSCIV\LZWZZZ.S_C Compressed file.
4.2.4. P_RR\LET\ZZZTOP.LET 20 bytes records, several records par city, used to accelerate street finding in a city. Position 0-1 2-3 4 - 16 18-19 19
Content City number District number in the city (0xFFFF if not significant) successive characters frequently used et the beginning of a street name Index (starting from 1) of the first corresponding street for this city in LZWZZZ.TOP Number of streets beginning by the previous string (0xFF means more than 0xff)
4.2.5. P_RR\TOP\ LZWZZZ.TOP Compressed file. Contains the streets list of cities in the department ZZZ sorted by alphabetic order of “street name” field. A city descriptor is 48 bytes long, each street uses 48 bytes.
4.3.
Files in the root 4.3.1. CONFIG.LOG
ASCII file describing versions of maps and databases used for the CD. It also contains another information like: Tipo calcolo coordinate = File Geo MRE_Q4_04.GEO Longitudine = 10.200000 [gradi] Latitudine = 52.800000 [gradi]
4.3.2. DB_DWNL.OUT Binary file (ELF format?). Perhaps an executable file for « traffic info »
4.3.3. DCN.DAT List of cities (indexed in the cartography ?) 54 bytes records, sorted by alphabetic order of « city name » field.
Position 0 – 45 46 47 48 49 50-51 52-53
Content City name Index to the first significant character of the city name Country of the city Area of the city Department of the city City number District number in the city (0xFFFF if not significant)
4.3.4. FRANC002.DEG Contains other lines (like railway lines, river ...) in medium resolution with coordinates inside a MS. A succession of variable length records Position 0 1-2 3-5 3 – 3 + n*4 6 – 6 + n*4
Content Kind of line/drawing? 15 MSB bits indicating the number of points: n 1 LSB bit indicating the presence of the following optional 3 bytes header. See previous field for presence. ??? Succession of n points, 4 bytes per point : @ = 3+(p*4) or 6+(p*4) with p from 0 to n X : @ to @ + 1 Y : @ + 2 to @ + 3 with X and Y < 16000
4.3.5. FRANC002.DPL Index file to access MS data in FRANC002.DRL 0xd800 records (indexed by MS number) of 0x12 bytes Position 0-3 4-5 6-7 8-9 10 – 11 12 – 15 16 – 17
Content Index in FRANC002.DRL for this MS N1? N2? N3? N = N1 + N2 + N3 : records number for this LS in FRANC002.DRL Index in FRANC002.DEG for this MS ?
4.3.6. FRANC002.DRL Contains roads in medium resolution with coordinates inside a MS. Succession of 0x0E bytes records, each record describes a segment (2 ends, P0 and P1)
Position 0-3
4-7
8-9 10 - 11
Content P0 description X0 = P0 & 0x3fff (<16000) Y0 = (P0 >> 14) & 0x3fff (<16000) flag0 = (P0 >> 28) & 0x0f P1 description X0 = P1 & 0x3fff (<16000) Y0 = (P1 >> 14) & 0x3fff (<16000) flag1 = (P1 >> 28) & 0x0f section ? Index of associated name in FRANC_NV.DAT
4.3.7. FRANC100.DEG Contains other lines like border in low resolution with coordinates inside a LS. A succession of variable length records Position 0 1-2 3-5 3 – 3 + n*8 6 – 6 + n*8
Content Kind of line/drawing? 15 MSB bits indicating the number of points: n 1 LSB bit indicating the presence of the following optional 3 bytes header. See previous field for presence. ??? Succession of n points, 8 bytes per point: @ = 3+(p*8) or 6+(p*8) with p from 0 to n X : @ to @ + 3 Y : @ + 4 to @ + 7 with X and Y < 256000
4.3.8. FRANC100.DPL Index file to access LS data in FRANC100.DRL 0xd8 records (indexed by LS number) of 0x12 bytes Position 0-3 4-5 6-7 8-9 10 – 11 12 – 15 16 – 17
Content Index in FRANC100.DRL for this LS N1? N2? N3? N = N1 + N2 + N3 : records number for this LS in FRANC100.DRL Index in FRANC100.DEG for this LS ?
4.3.9. FRANC100.DRL Contains roads in low resolution with coordinates inside a LS. Succession of 0x17 bytes records Each record describes a segment (2 ends, X0, Y0 and X1, Y1) Position 0-3 4-7 8-11 12-15 16-17 18 19 - 22
4.3.10.
Content X0 (<256000) Y0 (<256000) X1 (<256000) Y1 (<256000) Section? Flag associated with the section? Pointer/index in FRANC_NV.DAT (associated name).
FRANC.DEG
Contain additional drawings in high resolution with coordinates in a SS. A succession of variable length records Position 0 1-2 3-5 3 – 3 + n*3 6 – 6 + n*3
Content Kind of line/drawing? 15 MSB bits indicating the number of points: n 1 LSB bit indicating the presence of the following optional 3 bytes header. See previous field for presence. ??? Succession of n points, 3 bytes per point: @ = 3+(p*3) or 6+(p*3) with p from 0 to n X = @ & 0x3ff Y = (@ >> 10) & 0x3ff flag = (@ >> 20) & 0x0f with X and Y < 999
4.3.11.
FRANCDET.DRS
4.3.12.
FRANC_EX.DPS
Europe is mapped on a 12*18 grid of LS, each LS contains 256 MS. In other words, on 12*18*256 MS = 55296 MS. MS = index in FRANC_EX.DPS mod 0xFF LS = index in FRANC_EX.DPS div 0xFF 55296 records of 20 bytes. Position 0-3 4-7 8-9
10 – 11
12 – 13 14-15
16 17
18-19
Content Index/pointer to FRANC_EX.DSS (0xFFFFFFFF if not significant or 19-20 = 0xFFFF) Index to FRANC_EX.RID (0xFFFFFFFF if not significant or 19-20 = 0xFFFF) Not zero only if previous pointers are valid. Same values as in 2-3 of FRANC_EX.DSR From 0 to 0x0150 (336)? Not zero only if previous pointers are valid. Same values as in 4-5 of FRANC_EX.DSR From 0 to 0x04CB (1227)? From 0 to 0x1133 (4403)?? Rotation to apply to a MS to align it to a North-South meridian. Negative at east of longitude 10°02’00’’, positive at west. 1 unit is approximately 0.058° From 0 to 0x057 (87)? This values seem to be related to geographical coordinates of the MS Seems to be a signed number From 0xFD (-3) to 0x047 (71)? This values seem to be related to geographical coordinates of the MS (max values at northwest, min values at south) Kind of index (starting from 0) into FRANCDPA.LZW if the MS contains something, 0xFFFF otherwise. The record identifies a LS,MS. Data of a SS (belonging to this LS,MS) in FRANCDPA.LZW can be found at value*256+SS
4.3.13.
FRANC_EX.DSS
4.3.14.
FRANC_EX.RID
4.3.15.
FRANC_XX.POI
9 files, XX = DA, DE, ES, FR, IT, NL, PO, SW, UK Description per language (9) of the kind and category of P0I.
In each file, 70 records of 50 bytes sorted by alphabetical order of “POI name” field except for the 2 lasts, BORGATE et RADAR_CONTROL (probably added lately) Position 0 – 40 41 – 42 43 – 44 45 - 48 49
4.3.16.
Content POI name in language XX POI type (70 différent types différents. ex 0x11E4 for public sport airport, 23A1 pour city hall) Number of POI in this type (in FRANCXX.DST) Category of the POI in ASCII (3 characters followed by 0x00, see next field) Category of the POI in hexadecimal 1 : SEM 2 : SAF 3 : SHR 4 : STU 5 : SSH 6 : SSP 7 : STR 8 : SAU 9 : SCC A : MIC
FRANC_NOMSERV.DAT
Contains the name of all the POI.. 37 bytes records, sorted by alphabetical order of “POI name” field. Position 0 – 35
36
4.3.17.
Content POI name. A same name may appear several times: Index 1B02B : DE LA KIBITZENAU PISCINE Index 317C8 : KIBITZENAU PISCINE DE LA Index 376A4 : LA KIBITZENAU PISCINE DE Index 55598 : PISCINE DE LA KIBITZENAU (canonical name) Index in the previous field (name) : 18 DE LA KIBITZENAU PISCINE 12 KIBITZENAU PISCINE DE LA 15 LA KIBITZENAU PISCINE DE 1 PISCINE DE LA KIBITZENAU (canonical name) The canonical name (also contained in FRANCXX.DST) is obtained by writing it from index to end, then from start to index-1
FRANC_NV.DAT
Contains the names referenced in the cartography (Names from all Europe) Variable length records not sorted. Position 0–n
Content Name ended by 0x00
4.3.18.
FRANCCAT.POI
Contains the brands or generic names (TOTAL, SHERATON, HONDA…)… of the POI. 23 bytes records sorted by increasing « number » field . Position 0 – 20 21-22
Content Brand name ended by 0x00 Brand number, from 0x0001 to 0x0484 (some are missing like0x0C, 0x13… Did they pay enough money this year? Don’t panic, if you’re looking for a McDonald’s you’ll find it!!!)
Records after 1023 don’t seems to be used (10 bits index only in FRANCPOI.DAT)
4.3.19.
FRANCDPA.LZW
7479040 (0x721F00) records of 16 bytes. Each record represents a SS (coordinates LS, MS, SS are given by the access table FRANC_EX.DPS) Position 0-3 4 5-7 8-9 10 - 13 14 - 15
4.3.20.
Content Pointer/offset in FRANCDET.DRS. 0x00000000 if not significant Flag : values 0x00, 0x3F, 0x40 ??? Index in FRANCDSP.POI to the first POI inside this SS (0xFFFFFF if not significant) POI number in this SS Offset/pointer to FRANC.DEG If n is the value, 3*n represents the increment of the previous field ???
FRANCDSP.POI
For each POI contains information used by the display process (coordinates in a MS, pointer in FRANCPOI.DAT, scale…) 12 bytes records sorted by increasing LS, MS ands SS. FRANCDSP.POI contains: All records of FRANCPOI.DAT Records with type 0x115C (NAMED PLACE / CENTRE VILLE) contrary to FRANCPOI.DAT which doesn’t contain such record. Records of this type point to random records of FRANCPOI.DAT
Remark : This file is used for display but doesn’t contain full coordinates of POI. Pointers to this file exist in FRANCDPA.LZW (thanks again phil95). Data pointed in FRANCPOI.DAT are not all used during display. For example, the city name is not used even if you are looking for information for this place.
Position 0–1
Content 12 LSB bits : POI type (ex 0x11E4 for public sport airport, 23A1 pour city hall, 0x16A8 for a restaurant) 4 MSB bits : 0x04 if this POI has an entry in the « guide Champérard » (a restaurant in the guide has 0x56A8 for value) 0x08 if ??? (seems to be used with 0x1F04 sports complex, 0x1F3C amusement park) POI X-coordinate in its MS (0 to 15999) POI Y-coordinate in its MS (0 to 15999) Pointer (to obtain the real address in the file, decrease the value by 1) to the POI record in FRANCPOI.DAT. not significant for type = 0x115C Display flags? Max scale to display the POI?
2-3 4–5 6-9 10 - 11
4.3.21.
FRANCPOI.DAT
Contains address, type phone number and localization of all POI. 293780 variable length records: a variable length string (at least 0x00) followed by 27 bytes. No obvious sort. Records seem to be grouped by set of SS, MS et LS, but some are at other place in the file and the same LS, MS et SS can be found elsewhere in the file.
Position 0–n n+1 n+2 n+3 n+4 – n+5
n+6 – n+9 n+10 – n+13 n+14 – n+15
Content POI address (a same address may appear several time, but there are separates POI) SS where the POI is. MS where the POI is. LS where the POI is. 12 LSB bits : POI type (ex 0x11E4 for public sport airport, 23A1 pour city hall, 0x16A8 for a restaurant) 4 MSB bits : 0x04 if this POI has an entry in the « guide Champérard » (a restaurant in the guide has 0x56A8 for value) 0x08 if ??? (seems to be used with 0x1F04 sports complex, 0x1F3C amusement park) Index (starting from 1) of the canonical name of the POI in FRANC_NOMSERV.DAT Pointer in SCITTANAME.DAT to the city where the POI is. Display flags? Max scale to display the POI?
n+16 – n+19
These for bytes are bits fields : Bits 0..6 of n+16, bits 4..7 of n+17 : Y-coordinates of the POI in its SS Y = (n+17 >> 4) + ((n+16 & 0x3f) << 4) Bits 0..3 of n+17, bits 2..7 of n+17 : X, X-coordinates of the POI in its SS X = ((n+17 & 0x0f) << 6) + (n+18 >> 2) Bits 6,7 of n+16, bits 0..7 of N+19 : index (starting from 0 !) in FRANCCAT.POI if the POI has a « brand name » like SHELL, BALLADINS, AGIP… Index in FRANCCAT.POI slightly exceed 1024, but remaining bits of this field don’t seems to be include into the index. idxFRANCCAT = n+19 + ((n+18 & 0x03) << 8)
n+20 - n+27
Bits 0,1 of n+18 : ?? take the value 0 or 2 Phone number (0x0F if no significant digit, 9 bytes, MSB and LSB part of each byte swapped)
4.3.22.
FRANCXXX.DSC
8 files, XXX = SAF, SAU, SEM, SHR, SSH, SSP, STR, STU There is one file per category, except for MIC « restaurant: Michelin » (POI number = 0) and SCC (NAMED PLACE/centre ville). These files are used during a search, not for a simple display on the map. 17 bytes records. Records number is not coherent with the POI number in FRANC_XX.POI Position 0–1
2 3 4 5–6 7-8 9 - 12
Content 12 LSB bits : POI type (ex 0x11E4 for public sport airport, 23A1 pour city hall, 0x16A8 for a restaurant) 4 MSB bits : 0x04 if this POI has an entry in the « guide Champérard » (a restaurant in the guide has 0x56A8 for value) 0x08 if ??? (seems to be used with 0x1F04 sports complex, 0x1F3C amusement park) Country where the POI is. Area where the POI is. Department where the POI is. City where the POI is. District where the POI is. Pointer (to obtain the real address in the file, decrease the value by 1) to the
POI record in FRANCPOI.DAT. If the same pointer appears several times (synonyms), all the other values in the records are the same except of course for the next field Index (starting from 1) of the POI name in FRANC_NOMSERV.DAT. There is one record for each name, not only for the canonical name. For each synonym, the other fields of the record are the same. Sometimes, 2 canonical names have identical records (except this field). It can be : The same POI with 2 canonical names (ex : complexe sportif de l’ill, centre sportif d’ill) Different POI with the same “generic”name (ex 13846 CLUB MUNICIPAL DE TENNIS). There are some exceptions : In FRANCSSP.DSC, there is one record with this field set to 0 (index start at 1). Does it mean no name? 10B in FRANCSSP.DSC (which doesn’t seem to be a canonical name)
13 - 16
French CD contains POI in Monaco et Andorre (zone 1 0x0A and 0x0D)
4.3.23.
FRANCXXX.DST
9 files, XXX = SAF, SAU, SCC, SEM, SHR, SSH, SSP, STR, STU There is one file per category, except for MIC « restaurant: Michelin » (POI number = 0). These files are used during a search, not for a simple display on the map. 49 bytes records, sorted by increasing values of LS, then MS then SS. Record number per POI type in coherent with POI number in FRANC_XX.POI Position 0–1
2 – 37 38 39 40 41 - 42 43– 44 45 – 48
Content 12 LSB bits : POI type (ex 0x11E4 for public sport airport, 23A1 pour city hall, 0x16A8 for a restaurant) 4 MSB bits : 0x04 if this POI has an entry in the « guide Champérard » (a restaurant in the guide has 0x56A8 for value) 0x08 if ??? (seems to be used with 0x1F04 sports complex, 0x1F3C amusement park) Canonical POI name (the same name may appear several times, but there are different POI) SS where the POI is. MS where the POI is. LS where the POI is. POI X-coordinate in its SS (0 to 999) POI Y-coordinate in its SS (0 to 999) Pointer (to obtain the real address in the file, decrease the value by 1) to the POI record in FRANCPOI.DAT.
4.3.23.1. FRANCSCC.DST Structure of FRANCSCC.DST is simpler than FRANCXXX.DST one, probably because there is only one POI type in this category, NAMED PLACE/centre-ville 44 bytes records, sorted by decreasing order of « city magnitude ». Position 0 – 35
Content Canonical POI name (the same name may appear several times, but there are different POI) SS where the POI is. MS where the POI is. LS where the POI is. POI X-coordinate in its SS (0 to 999) POI Y-coordinate in its SS (0 to 999) Values from 1 to 8. « magnitude » of the city (8 for capitals, 7 for Marseille and Lyon, 1 pour les Paris districts). Luxemburg is 5, Dublin is 3
36 37 38 39 – 40 41 – 42 43
4.3.24.
FRANSCC.IMP
Structure is identical to FRANCSCC.DST one, but there is far less records.
4.3.25.
GRUPPO2.DAT
Set of files grouped into a unique one, probably to load them quicker in memory
4.3.25.1. File header 23 bytes records, describing the files embedded in GRUPPO_2.DAT
Position 0 – 14 15 - 18 19 - 22
Content File name ending by \0 Pointer in GRUPPO_2.DAT to the beginning of the embedded file Length in byte of the embedded file.
4.3.25.2. CodNazGuidSX Binary file with something like 0E 15 16 17 19 1F 20
Same values for France and Germany
4.3.25.3. DIVIETI.DAT 3 bytes records? If records are 3bytes long words, sorted in ascending order. Position 0 1 2
Content From 0x10 (16) to 0xff (255) ? From 0 to 0x21 (33) ? From 0 to 0x3e (62) ?
4.3.25.4. DPN.CAT List of city , department ... names 54 bytes records, sorted by alphabetic order of « city name » field. Same structure as DCN.DAT
4.3.25.5. FRANC.Geo 49 bytes long file Position 0 - 13 14 - 15 16 - 36 31 – 37 39 - 44 46 – 48
Content Hex values (same for FRANC & GERM) FF 7B 01 50 00 66 01 4C 02 D4 02 10 00 2E Hex values 71 97 for FRANC 6D CE for GERM Hex values (same for FRANC & GERM) 00 44 0F 21 00 08 6A FF 00 36 E2 FC 12 0C D8 Map version ended by \0x00 (TMP54.01) Code of the map country (ended by \0x00) FRANC, GERM, … 0x03 0xE8 0x01 (at least for FRANC and GERM) 4.3.25.6. FRANC.TiT
4.3.25.7. FRANC_EX.DMR 216 (12*18) records of 68 bytes describing a SS.
Position 0-3 4-5 6-7 8 - 11 12 - 15
Content Index/Pointer in FRANC_EX.RID
Index (from 1) of the first record in FRANCSEM.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSAF.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district.
16 - 19 20 - 23 24 - 27 28 - 31 32 - 35 36 - 39 40 - 43 44 - 47
48 – 49 50 - 51 52 – 53 54 – 55 56 – 57 58 – 59 60 – 61 62 – 63 64 – 65 66 – 67
Index (from 1) of the first record in FRANCSHR.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSTU.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSSH.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSSP.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSTR.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSAU.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCSCC.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. Index (from 1) of the first record in FRANCMIC.DSC related to the city/district. 0xFFFF if there is no POI of the type in the city/district. (to be verified) Number of SEM POI in this SS Number of SAF POI in this SS Number of SHR POI in this SS Number of STU POI in this SS Number of SSH POI in this SS Number of SSP POI in this SS Number of STR POI in this SS Number of SAU POI in this SS Number of SCC POI in this SS Number of MIC POI in this SS
4.3.25.8. FRANC_EX.DSR Contains data about MS which have a valid pointer/index to FRANC_EX.DSS and FRANC_EX.RID in FRANC_EX.DPS. 8 bytes records, sorted by ascending order of MS Position 0 -1 2-3 4-5 6-7
Content MS number (SS,MS) From 0 to 0x0150 (336)? Same values in 8-9 in FRANC_EX.DPS From 0 to 0x04CB (1227)? Same values in 10-11 in FRANC_EX.DPS From 0 to 0x563D (22077)? 0 for the first MS of a LS, increasing with MS number. Index or pointer to something related to SS (and sorted by increasing SS)?
4.3.25.9. FRANC_UK.POI 4.3.25.10. FRANCCAT.POI 4.3.25.11. FRANCCHR.TXT 4.3.25.12. FRANCOM.LET 4.3.25.13. GENDET.DAT 4.3.25.14. Label.txt
4.3.25.15.
Map.ver
ASCII file with something like TMP54.01. Map version ? 4.3.25.16. PrefInt 4.3.25.17. RdsTable 4.3.25.18. RdsTableLibere 4.3.25.19. Release
4.3.26.
GUIDA_CHAMPERARD.POI
4.3.27.
SCITTANAME.DAT
List of city containing a POI Variable length records, they seem to be geographically sorted by increasing value of LS, MS, SS (just a guess by reading the names) Position 0–n
4.3.28.
Content City name ended par 0x00
SIF.VER
ASCII file describing CD release.
4.3.29.
SW_VER.DAT
ASCII file (« 0210 ») ?
4.4.
Summary 4.4.1. File size (TD3002900) File name
File size
Record number
P_RR\CAT\ZZZDCP.CAT
P_RR\INSCIV\LZWZZZ.S_C P_RR\LET\ZZZTOP.LET
20 0x14 48 – 0x30 / city 48 – 0x30 / street
P_RR\TOP\ LZWZZZ.TOP
FRANC002.DEG FRANC002.DPL
114111
52296 0xd800
FRANC002.DRL FRANC100.DEG FRANC100.DPL
216 0xd8
FRANC100.DRL FRANC.DEG FRANCDET.DRS FRANC_EX.DPS FRANC_EX.DSS FRANC_EX.RID FRANC_XX.POI FRANC_NOMSERV.DAT FRANC_NV.DAT FRANCCAT.POI FRANCDPA.LZW FRANCDSP.POI FRANCPOI.DAT
52296 0xd800 52296 0xd800
70 0x46 4313154 0x41D042 49741 0xC24D 1053 0x041D 7479040 0x721F0 343095 0x53C37 293780 0x47B94
FRANCXXX.DSC FRANCXXX.DST FRANCSCC.DST
Sort
50 0x32 52 0x34
P_RR\IND\ZZZCOM.IND
CONFIG.LOG DB_DWNL.OUT DCN.DAT
Record size
49316 0xC4A
54 0x36 variable 18 0x12 14 0x0E variable 18 0x12 23 0x17 variable 20 0x14 20 0x14
City name
50 0x32 37 0x25 variable
POI name
23 0x17 16 0x10 12 0x0c Variable : min28 Variable : min 0xB 17 0x11 49 0x31 44 0x2C
MS
LS
POI name no number
LS, MS, SS ?
LS, MS, SS City magnitude
FRANSCC.IMP GRUPPO2.DAT
CodNazGuidSX DIVIETI.DAT DPN.CAT FRANC.Geo FRANC.TiT FRANC_EX.DMR FRANC_EX.DSR FRANC_UK.POI FRANCCAT.POI FRANCCHR.TXT FRANCOM.LET GENDET.DAT Label.txt Map.ver PrefInt RdsTable RdsTableLibere Release GUIDA_CHAMPERARD.POI SCITTANAME.DAT SIF.VER SW_VER.DAT
1617 0x0651 18 0x12
44 0x2C 23 0x17
1400 0x578 1784
3?
City magnitude
7
1
54 0x36 49 0x31
216 0xd8 9118 0x239e
68 0x44 8 0x08
3874?
4?
28355 0x6CE3
variable
LS, MS, SS ?
4.4.2. File link
Pointeurtovers Pointer a record Indice to Index vers access a record Fait référence Implicit reference à untoenregistrement a record
FRANCXXX.DST SCITTANAME.DAT
SEARCH
FRANCCAT.POI FRANCPOI.DAT
FRANCDSP.POI
FRANC_NOMSERV.DAT
FRANCXXX.DSC
SEARCH
FRANCDPA.LZW DCN.DAT
FRANCDET.DRS
FRANC.DEG P_RR\CAT\ZZZDCP.CAT
FRANC_EX.DSS
FRANC_EX.RID P_RR\TOP\ LZWZZZ.TOP
DISPLAY
P_RR\IND\ZZZCOM.IND
FRANC_EX.DPS P_RR\LET\ZZZTOP.LET
FRANC002.DEG FRANC002.DPL FRANC002.DRL FRANC_NV.DAT FRANC100.DRL FRANC100.DPL FRANC100.DEG
5. Comment ajouter un POI Si vous avez bien tout lu et tout compris, ce paragraphe est inutile… Mais ça fait toujours du bien de récapituler. 1. Calculate POI coordinates: LS, SS, MS, X et Y (both versions, with short and long X, ). How to do that? I don’t know… yet 2. I suppose the POI is already in a SS which has an entry in FRANCDPA.LZW. Otherwise it’s more complex. 3. Create a new entry in FRANCDSP.POI with the type, long X and Y, a pointer (already existing if you don’t need to shearch for this POI) to FRANCPOI.DAT, a scale and associated flags. Where to create this entry? I don’t know 4. in FRANCDPA.LZW a. increase by 1 the POI number located in LS, MS, SS. b. increase by 1 all the index to FRANCDSP.POI following the modified entry.
5. Pour permettre la recherche, il y a des étapes supplémentaires, insertion d’une entrée dans FRANCPOI.DAT, FRANCXXX.DST, FRANCXXX.DSC, FRANC_NOMSERV.DAT, SCITTANAME.DAT, ZZZCOM.IND … mais c’est une autre histoire. Et puis, si vous ajoutez les radars, je doute que vous soyez saisis du besoin irrépressible de vous diriger vers le plus proche ;-) Attention, ce document n’est qu’un draft, je ne garantis ni la méthode ni le résultat…