cmap-cvs Mailing List for cmap (Page 11)
Status: Beta
Brought to you by:
dyp
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(87) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
(5) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
(7) |
Mar
|
Apr
(5) |
May
|
Jun
(6) |
Jul
|
Aug
(13) |
Sep
(5) |
Oct
(5) |
Nov
|
Dec
(5) |
2006 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
(11) |
Nov
(4) |
Dec
(24) |
2007 |
Jan
(17) |
Feb
(9) |
Mar
(13) |
Apr
(3) |
May
(1) |
Jun
(7) |
Jul
(8) |
Aug
(17) |
Sep
(4) |
Oct
(2) |
Nov
(8) |
Dec
(7) |
2008 |
Jan
(2) |
Feb
(4) |
Mar
(32) |
Apr
(23) |
May
(19) |
Jun
(14) |
Jul
(15) |
Aug
(6) |
Sep
(5) |
Oct
(5) |
Nov
(2) |
Dec
|
From: Vladimir K. <b0...@us...> - 2004-05-08 08:40:15
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14230 Modified Files: Tag: CMAP_1_6b pol.txt Log Message: ïîïðàâêà Index: pol.txt =================================================================== RCS file: /cvsroot/cmap/cmap/pol.txt,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -u -d -r1.2.2.1 -r1.2.2.2 --- pol.txt 5 May 2004 22:25:46 -0000 1.2.2.1 +++ pol.txt 8 May 2004 08:40:03 -0000 1.2.2.2 @@ -9,7 +9,7 @@ 31120000 Îçåðà Åñëè ïåðèìåòð îçåðà > 50 êì òî LAYER_MAX=1 -Åñëè ïåðèìåòð îçåðà > 100 êì òî LAYER_MAX=1 +Åñëè ïåðèìåòð îçåðà > 100 êì òî LAYER_MAX=2 31410000 Ðåêè Åñëè èìååò èìÿ òî LAYER_MAX=LAYER_MAX+1 |
From: Vladimir K. <b0...@us...> - 2004-05-06 00:42:16
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29174 Modified Files: PolishFormat.cpp Log Message: èñïðàâëåíà îøèáêà, âíåñ¸ííàÿ â âåðñèè 1.12. áëîê ïðîâåðîê íà 'íå ýêñïîðò' ïåðåíåñ¸í ñíîâà â êîíåö ôóíêöèè, ïîñëå èíèöèàëèçàöèè ïðîâåðÿåìûõ ïåðåìåííûõ è ïîñëå îáðàáîòêè àòðèáóòîâ îáúåêòîâ Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- PolishFormat.cpp 5 May 2004 17:00:27 -0000 1.22 +++ PolishFormat.cpp 6 May 2004 00:42:06 -0000 1.23 @@ -126,25 +126,6 @@ if (DBF_line == -1) // òèï òåêóùåãî îáúåêòà íå íàéäåí â òàáëèöå ïðåîáðàçîâàíèÿ continue; - // Îòáðàñûâàíèå îáúåêòîâ, äëÿ êîòîðûõ íå çàïîëíåíû ïîëÿ TYPE_X â DBF - if (type_obj == 'P' && (RGN_point == -1 || Type_point == -1)) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå - if (!checkWarned(obj[NumObj].Cod)) - printf("Warning!!! Not exported: points of type %s\n", obj[NumObj].Cod); - continue; - } - - if (type_obj == 'A' && Type_poly == -1) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå - if (!checkWarned(obj[NumObj].Cod)) - printf("Warning!!! Not exported: polygons of type %s\n", obj[NumObj].Cod); - continue; - } - - if (type_obj == 'L' && Type_line == -1) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå - if (!checkWarned(obj[NumObj].Cod)) - printf("Warning!!! Not exported: polylines of type %s\n", obj[NumObj].Cod); - continue; - } - RGN_point = file_cod1[DBF_line].RGN_point; Type_point = file_cod1[DBF_line].TYPE_point; Type_line = file_cod1[DBF_line].TYPE_line; @@ -1506,6 +1487,25 @@ type_obj = obj[NumObj].Cod[0]; + // Îòáðàñûâàíèå îáúåêòîâ, äëÿ êîòîðûõ íå çàïîëíåíû ïîëÿ TYPE_X â DBF + if (type_obj == 'P' && (RGN_point == -1 || Type_point == -1)) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå + if (!checkWarned(obj[NumObj].Cod)) + printf("Warning!!! Not exported: points of type %s\n", obj[NumObj].Cod); + continue; + } + + if (type_obj == 'A' && Type_poly == -1) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå + if (!checkWarned(obj[NumObj].Cod)) + printf("Warning!!! Not exported: polygons of type %s\n", obj[NumObj].Cod); + continue; + } + + if (type_obj == 'L' && Type_line == -1) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå + if (!checkWarned(obj[NumObj].Cod)) + printf("Warning!!! Not exported: polylines of type %s\n", obj[NumObj].Cod); + continue; + } + // Âûâîä àòðèáóòîâ if (comm_atr != 0) { fprintf (outIMG, "; %s NUM_OBJ %i %s\n", |
From: Vladimir K. <b0...@us...> - 2004-05-06 00:39:52
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28814 Modified Files: Tag: CMAP_1_6b PolishFormat.cpp Log Message: èñïðàâëåíà îøèáêà, âíåñ¸ííàÿ â âåðñèè 1.12. áëîê ïðîâåðîê íà 'íå ýêñïîðò' ïåðåíåñ¸í ñíîâà â êîíåö ôóíêöèè, ïîñëå èíèöèàëèçàöèè ïðîâåðÿåìûõ ïåðåìåííûõ è ïîñëå îáðàáîòêè àòðèáóòîâ îáúåêòîâ Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.18 retrieving revision 1.18.2.1 diff -u -d -r1.18 -r1.18.2.1 --- PolishFormat.cpp 5 May 2004 11:46:36 -0000 1.18 +++ PolishFormat.cpp 6 May 2004 00:39:37 -0000 1.18.2.1 @@ -117,26 +117,6 @@ if(DBF_line == -1)// òèï òåêóùåãî îáúåêòà íå íàéäåí â òàáëèöå ïðåîáðàçîâàíèÿ continue; - //========================================================== - // Îòáðàñûâàíèå îáúåêòîâ, äëÿ êîòîðûõ íå çàïîëíåíû ïîëÿ TYPE_X â DBF - if(type_obj == 'P' && (RGN_point == -1 || Type_point == -1)) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå - if (!checkWarned(obj[NunObj].Cod)) - printf("Warning!!! Not exported: points of type %s\n", obj[NunObj].Cod); - continue; - } - - if(type_obj == 'A' && Type_poly == -1) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå - if (!checkWarned(obj[NunObj].Cod)) - printf("Warning!!! Not exported: polygons of type %s\n", obj[NunObj].Cod); - continue; - } - - if(type_obj == 'L' && Type_line == -1) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå - if (!checkWarned(obj[NunObj].Cod)) - printf("Warning!!! Not exported: polylines of type %s\n", obj[NunObj].Cod); - continue; - } - /* âûâîä çíà÷åíèé àòðèáóòîâ - íîâûé if (comm_atr != 0){ if (Len_code == 2) { @@ -1532,6 +1512,26 @@ type_obj = obj[NunObj].Cod[0]; //========================================================== + // Îòáðàñûâàíèå îáúåêòîâ, äëÿ êîòîðûõ íå çàïîëíåíû ïîëÿ TYPE_X â DBF + if(type_obj == 'P' && (RGN_point == -1 || Type_point == -1)) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå + if (!checkWarned(obj[NunObj].Cod)) + printf("Warning!!! Not exported: points of type %s\n", obj[NunObj].Cod); + continue; + } + + if(type_obj == 'A' && Type_poly == -1) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå + if (!checkWarned(obj[NunObj].Cod)) + printf("Warning!!! Not exported: polygons of type %s\n", obj[NunObj].Cod); + continue; + } + + if(type_obj == 'L' && Type_line == -1) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå + if (!checkWarned(obj[NunObj].Cod)) + printf("Warning!!! Not exported: polylines of type %s\n", obj[NunObj].Cod); + continue; + } + + //========================================================== // Âûâîä àòðèáóòîâ if (comm_atr != 0){ fprintf (outIMG,"; %s NUM_OBJ %i %s\n", |
From: Vladimir K. <b0...@us...> - 2004-05-05 22:51:46
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7592 Modified Files: TOPO.dbf Log Message: óáðàíà êðèâèçíà ïðåîáðàçîâàíèé òèïîâ â ðàñ÷¸òå íà eTrex. èçìåíåíû òèïû æåëåçíûõ äîðîã íà 0x14, ãîðîäîâ íà 0x1-0x3 Index: TOPO.dbf =================================================================== RCS file: /cvsroot/cmap/cmap/TOPO.dbf,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 Binary files /tmp/cvsZH4MAD and /tmp/cvsvlatpn differ |
From: Vladimir K. <b0...@us...> - 2004-05-05 22:51:24
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7554 Modified Files: Tag: CMAP_1_6b TOPO.dbf Log Message: óáðàíà êðèâèçíà ïðåîáðàçîâàíèé òèïîâ â ðàñ÷¸òå íà eTrex. èçìåíåíû òèïû æåëåçíûõ äîðîã íà 0x14, ãîðîäîâ íà 0x1-0x3 Index: TOPO.dbf =================================================================== RCS file: /cvsroot/cmap/cmap/TOPO.dbf,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -d -r1.5 -r1.5.2.1 Binary files /tmp/cvsLpbEqB and /tmp/cvsZ0yAC4 differ |
From: Vladimir K. <b0...@us...> - 2004-05-05 22:45:13
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6397 Modified Files: readme.txt Log Message: äîïîëíåíèå ïðî îòîáðàæåíèå òèïîâ íà ýêðàíå ïðèáîðîâ eTrex Index: readme.txt =================================================================== RCS file: /cvsroot/cmap/cmap/readme.txt,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- readme.txt 4 May 2004 23:30:16 -0000 1.3 +++ readme.txt 5 May 2004 22:45:05 -0000 1.4 @@ -147,6 +147,27 @@  çàâèñèìîñòè îò âàøèõ öåëåé ìîæíî îòêëþ÷èòü ýêñïîðò íåêîòîðûõ òèïîâ îáúåêòîâ. Íàïðèìåð, äëÿ ïîñòðîåíèÿ àâòîìîáèëüíîé êàðòû ìîæíî íå ýêñïîðòèðîâàòü ïîëèãîíû ëåñîâ. + +Åù¸ îäíà ïðîáëåìà ïðè âûáîðå òèïîâ Garmin, ñîîòâåòñòâóþùèõ òèïàì Èíãèò +ñîñòîèò â òîì, ÷òî íåêîòîðûå îáúåêòû Garmin îòîáðàæàþòñÿ ïðèáîðàìè íå +ñîâñåì òàê, êàê îæèäàåòñÿ ïî ñìûñëó íàçâàíèé òèïîâ ýòèõ îáúåêòîâ. +Íàïðèìåð, íàâèãàòîðû ñåðèè eTrex íå îòîáðàæàþò ïîëèãîíû òèïîâ 0x1-0x3 (ãîðîä), +â ñâÿçè ñ ýòèì äëÿ ãîðîäîâ ïðèõîäèòñÿ ïîäáèðàòü äðóãîé òèï ïîëèãîíîâ, +êîòîðûé îòîáðàæàåòñÿ. Íàïðèìå, â êà÷åñòâå çàìåíû ìîæíî èñïîëüçîâàòü +òèï 0x17 "ãîðîäñêîé ïàðê". Êðîìå òîãî, ó÷òèòå ÷òî ïîëèãîíû ðàçíûõ òèïîâ íî +îòîáðàæàåìûå îäíèì è òåì æå îòòåíêîì ñåðîãî áóäóò ñëèâàòüñÿ. Íàïðèìåð, +åñëè íà òîïî-ïëàíå çäàíèÿ îòîáðàæàþòñÿ òèïîì 0x17 "ãîðîäñêîé ïàðê", à ïàðêè +â ãîðîäå òèïîì 0x14 "íàöèîíàëüíûé ïàðê", òî êîíòóðû äîìîâ â ïàðêàõ +íå áóäóò âèäíû. +Åù¸ îäíà ïðîáëåìà ñ îòîáðàæåíèåì - ëèíèè òèïà 0x14 "æåëåçíûå äîðîãè" íà +íàâîãàòîðàõ ñåðèè eTrex îòîáðàæàåòñÿ òîëüêî ïðè ìàñøòàáàõ 300ì è áëèæå. + òî âðåìÿ êàê æåëåçíûå äîðîãè îáû÷íî õî÷åòñÿ âèäåòü óæå íà ñàìûõ âåðõíèõ +(îáçîðíûõ) ñëîÿõ êàðòû. Äëÿ òîãî ÷òîáû äîðîãè áûëî âñ¸-òàêè âèäíî, ìîæíî +èçîáðàæàòü èõ ëèíèÿìè äðóãîãî òèïà, íàïðèìåð, 0x1è "ïëîòèíà èëè ïàðîì". + +Ïîäðîáíåå îá îòîáðàæåíèè îáúåêòîâ íà ýêðàíå íàâèãàòîðîâ eTrex: +http://v-dorogu.narod.ru/points.htm + Ôàéëû DBF ìîæíî ðåäàêòèðîâàòü, íàïðèìåð, ïðè ïîìîùè Microsoft Excel. *Îïèñàíèå ñòîëáöîâ |
From: Vladimir K. <b0...@us...> - 2004-05-05 22:44:32
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6202 Modified Files: Tag: CMAP_1_6b readme.txt Log Message: äîïîëíåíèå ïðî îòîáðàæåíèå òèïîâ íà ýêðàíå ïðèáîðîâ eTrex Index: readme.txt =================================================================== RCS file: /cvsroot/cmap/cmap/readme.txt,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -d -r1.3 -r1.3.2.1 --- readme.txt 4 May 2004 23:30:16 -0000 1.3 +++ readme.txt 5 May 2004 22:44:24 -0000 1.3.2.1 @@ -147,6 +147,27 @@  çàâèñèìîñòè îò âàøèõ öåëåé ìîæíî îòêëþ÷èòü ýêñïîðò íåêîòîðûõ òèïîâ îáúåêòîâ. Íàïðèìåð, äëÿ ïîñòðîåíèÿ àâòîìîáèëüíîé êàðòû ìîæíî íå ýêñïîðòèðîâàòü ïîëèãîíû ëåñîâ. + +Åù¸ îäíà ïðîáëåìà ïðè âûáîðå òèïîâ Garmin, ñîîòâåòñòâóþùèõ òèïàì Èíãèò +ñîñòîèò â òîì, ÷òî íåêîòîðûå îáúåêòû Garmin îòîáðàæàþòñÿ ïðèáîðàìè íå +ñîâñåì òàê, êàê îæèäàåòñÿ ïî ñìûñëó íàçâàíèé òèïîâ ýòèõ îáúåêòîâ. +Íàïðèìåð, íàâèãàòîðû ñåðèè eTrex íå îòîáðàæàþò ïîëèãîíû òèïîâ 0x1-0x3 (ãîðîä), +â ñâÿçè ñ ýòèì äëÿ ãîðîäîâ ïðèõîäèòñÿ ïîäáèðàòü äðóãîé òèï ïîëèãîíîâ, +êîòîðûé îòîáðàæàåòñÿ. Íàïðèìå, â êà÷åñòâå çàìåíû ìîæíî èñïîëüçîâàòü +òèï 0x17 "ãîðîäñêîé ïàðê". Êðîìå òîãî, ó÷òèòå ÷òî ïîëèãîíû ðàçíûõ òèïîâ íî +îòîáðàæàåìûå îäíèì è òåì æå îòòåíêîì ñåðîãî áóäóò ñëèâàòüñÿ. Íàïðèìåð, +åñëè íà òîïî-ïëàíå çäàíèÿ îòîáðàæàþòñÿ òèïîì 0x17 "ãîðîäñêîé ïàðê", à ïàðêè +â ãîðîäå òèïîì 0x14 "íàöèîíàëüíûé ïàðê", òî êîíòóðû äîìîâ â ïàðêàõ +íå áóäóò âèäíû. +Åù¸ îäíà ïðîáëåìà ñ îòîáðàæåíèåì - ëèíèè òèïà 0x14 "æåëåçíûå äîðîãè" íà +íàâîãàòîðàõ ñåðèè eTrex îòîáðàæàåòñÿ òîëüêî ïðè ìàñøòàáàõ 300ì è áëèæå. + òî âðåìÿ êàê æåëåçíûå äîðîãè îáû÷íî õî÷åòñÿ âèäåòü óæå íà ñàìûõ âåðõíèõ +(îáçîðíûõ) ñëîÿõ êàðòû. Äëÿ òîãî ÷òîáû äîðîãè áûëî âñ¸-òàêè âèäíî, ìîæíî +èçîáðàæàòü èõ ëèíèÿìè äðóãîãî òèïà, íàïðèìåð, 0x1è "ïëîòèíà èëè ïàðîì". + +Ïîäðîáíåå îá îòîáðàæåíèè îáúåêòîâ íà ýêðàíå íàâèãàòîðîâ eTrex: +http://v-dorogu.narod.ru/points.htm + Ôàéëû DBF ìîæíî ðåäàêòèðîâàòü, íàïðèìåð, ïðè ïîìîùè Microsoft Excel. *Îïèñàíèå ñòîëáöîâ |
From: Vladimir K. <b0...@us...> - 2004-05-05 22:26:11
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2382 Modified Files: pol.txt Log Message: äîïîëíåíèå ïðî ðåãèîíû Index: pol.txt =================================================================== RCS file: /cvsroot/cmap/cmap/pol.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- pol.txt 5 May 2004 00:16:49 -0000 1.2 +++ pol.txt 5 May 2004 22:26:00 -0000 1.3 @@ -75,6 +75,10 @@ 61230000 Àâòîäîðîãè ñ ïîêðûòèåì (øîññå) Label ~[0x2e] (~[0x05]) + ATR 09 or ATR 53 + +81111000 Ðåãèîí +Ïëîùàäíûå îáúåêòû ïðåîáðàçóþòñÿ â ëèíåéíûå + Äëÿ âñåõ îáúåêòîâ: Åñëè çíà÷åíèå àòðèáóòà "47 Ôóíêöèîíàëüíîå íàçíà÷åíèå" == |
From: Vladimir K. <b0...@us...> - 2004-05-05 22:25:54
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2307 Modified Files: Tag: CMAP_1_6b pol.txt Log Message: äîïîëíåíèå ïðî ðåãèîíû Index: pol.txt =================================================================== RCS file: /cvsroot/cmap/cmap/pol.txt,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -d -r1.2 -r1.2.2.1 --- pol.txt 5 May 2004 00:16:49 -0000 1.2 +++ pol.txt 5 May 2004 22:25:46 -0000 1.2.2.1 @@ -75,6 +75,10 @@ 61230000 Àâòîäîðîãè ñ ïîêðûòèåì (øîññå) Label ~[0x2e] (~[0x05]) + ATR 09 or ATR 53 + +81111000 Ðåãèîí +Ïëîùàäíûå îáúåêòû ïðåîáðàçóþòñÿ â ëèíåéíûå + Äëÿ âñåõ îáúåêòîâ: Åñëè çíà÷åíèå àòðèáóòà "47 Ôóíêöèîíàëüíîå íàçíà÷åíèå" == |
From: Denis P. <dy...@us...> - 2004-05-05 17:00:36
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30967 Modified Files: IngitFile.cpp IngitFile.h PolishFormat.cpp Log Message: Fix spell. nun -> num Index: IngitFile.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitFile.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- IngitFile.cpp 5 May 2004 16:35:52 -0000 1.12 +++ IngitFile.cpp 5 May 2004 17:00:27 -0000 1.13 @@ -105,7 +105,7 @@ Metr_OBJ[num_array].Lon = X_Long_Metric * (xTopRight / 10.0 / scaleX); Metr_OBJ[num_array].Lat = Y_Long_Metric * (yTopRight / 10.0 / scaleY); - Metr_OBJ[num_array].nun_segment = Num_Segment; + Metr_OBJ[num_array].numSegment = Num_Segment; Metr_OBJ[num_array].num = num; #ifdef _DEBUG checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); @@ -130,7 +130,7 @@ Metr_OBJ[num_array].Lon = X_Long_Metric * (xTopRight / 10.0 / scaleX); Metr_OBJ[num_array].Lat = Y_Long_Metric * (yTopRight / 10.0 / scaleY); Metr_OBJ[num_array].type = 0; - Metr_OBJ[num_array].nun_segment = Num_Segment; + Metr_OBJ[num_array].numSegment = Num_Segment; Metr_OBJ[num_array].num = num; #ifdef _DEBUG checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); @@ -148,7 +148,7 @@ Metr_OBJ[num_array].Lon = X_Long_Metric * (xTopRight / 10.0 / scaleX); Metr_OBJ[num_array].Lat = Y_Long_Metric * (yTopRight / 10.0 / scaleY); Metr_OBJ[num_array].type = 0; - Metr_OBJ[num_array].nun_segment = Num_Segment; + Metr_OBJ[num_array].numSegment = Num_Segment; Metr_OBJ[num_array].num = num; #ifdef _DEBUG checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); Index: IngitFile.h =================================================================== RCS file: /cvsroot/cmap/cmap/IngitFile.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- IngitFile.h 5 May 2004 16:35:52 -0000 1.8 +++ IngitFile.h 5 May 2004 17:00:27 -0000 1.9 @@ -30,15 +30,14 @@ double Lon, Lat; - unsigned short nun_segment; // Íîìåð Ñåãìåíòà + unsigned short numSegment; // Íîìåð Ñåãìåíòà unsigned short num ; // Ïîðÿäêîâûé íîìåð ñåãìåíòà îáúåêòà. (Ðàñ÷åòíûé) short type; // Òèï ñåãìåíòà BYTE t1; BYTE t2; BYTE t3; BYTE t4; -} -cord_object +} cord_object #ifdef __GNUC__ __attribute__ ((packed)) #endif Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- PolishFormat.cpp 5 May 2004 16:55:08 -0000 1.21 +++ PolishFormat.cpp 5 May 2004 17:00:27 -0000 1.22 @@ -120,28 +120,28 @@ WGS84SK42Projection WGS (1.0); printf("Writing file...\n"); - for (unsigned short NunObj = 1; NunObj < Max_Num_OBJ; NunObj++) { + for (unsigned short NumObj = 1; NumObj < Max_Num_OBJ; NumObj++) { // Ïðîâåðêà íà EXPORT - short DBF_line = Check_export(obj[NunObj].Cod + 1); + short DBF_line = Check_export(obj[NumObj].Cod + 1); if (DBF_line == -1) // òèï òåêóùåãî îáúåêòà íå íàéäåí â òàáëèöå ïðåîáðàçîâàíèÿ continue; [...1390 lines suppressed...] + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].numSegment, Metr_OBJ[i].type); fprintf(outIMG, "\nData%i=", layer); fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); printf("%s\n", eng_name); @@ -1919,13 +1919,13 @@ case 0xC0: if (comm_seg == 1) - fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].numSegment, Metr_OBJ[i].type); fprintf(outIMG, "\nData%i=", layer); fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0x60: // Äûðêà if (comm_seg == 1) - fprintf(outIMG, "\n; %i %X\n", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\n; %i %X\n", Metr_OBJ[i].numSegment, Metr_OBJ[i].type); fprintf(outIMG, "Data%i=", layer); fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; |
From: Denis P. <dy...@us...> - 2004-05-05 16:55:18
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29113 Modified Files: PolishFormat.cpp PolishFormat.h Log Message: Fix formatting Fix usage of memcmp Index: PolishFormat.h =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- PolishFormat.h 5 May 2004 15:33:19 -0000 1.3 +++ PolishFormat.h 5 May 2004 16:55:09 -0000 1.4 @@ -1,13 +1,12 @@ #ifndef __CMAP_PM_H__ #define __CMAP_PM_H__ -//=================================================================================== -extern unsigned short N_Poligon, // Êîë-âî Ïëîùàäíûõ îáúåêòîâ. +extern unsigned int + N_Poligon, // Êîë-âî Ïëîùàäíûõ îáúåêòîâ. N_Poliline, // Êîë-âî Ëèíåéíûõ îáúåêòîâ. N_Points, // Êîë-âî Òî÷å÷íûõ îáúåêòîâ. N_Other; // Êîë-âî Òî÷å÷íûõ îáúåêòîâ. - void Export_IMG (FILE *outIMG); #endif Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- PolishFormat.cpp 5 May 2004 16:06:56 -0000 1.20 +++ PolishFormat.cpp 5 May 2004 16:55:08 -0000 1.21 @@ -8,14 +8,12 @@ #include "Geodesy.h" #include "cmap.h" -//=================================================================================== -unsigned short N_Poligon, // Êîë-âî Ïëîùàäíûõ îáúåêòîâ. -N_Poliline, // Êîë-âî Ëèíåéíûõ îáúåêòîâ. -N_Points, // Êîë-âî Òî÷å÷íûõ îáúåêòîâ. -N_Other; // Êîë-âî Òî÷å÷íûõ îáúåêòîâ. -//unsigned long pnt_points; // Êîë-âî çàïèñàíûõ òî÷åê â .PNT -//unsigned long evt_points; // Êîë-âî çàïèñàíûõ òî÷åê â .EVT -//unsigned long plt_points; // Êîë-âî çàïèñàíûõ òî÷åê â .PLT +unsigned int + N_Poligon, // Êîë-âî Ïëîùàäíûõ îáúåêòîâ. + N_Poliline, // Êîë-âî Ëèíåéíûõ îáúåêòîâ. + N_Points, // Êîë-âî Òî÷å÷íûõ îáúåêòîâ. + N_Other; // Êîë-âî Òî÷å÷íûõ îáúåêòîâ. + unsigned long pat_points; // Êîë-âî çàïèñàíûõ òî÷åê â .PLT static char **warnedCODs = NULL; @@ -46,7 +44,7 @@ } //Âûäà÷à òåêñòà àòðèáóòà "34 Õàðàêòåð ãðóíòà" ïî åãî çíà÷åíèþ -char* getAttr34Str(BYTE value[2]) { +const char *getAttr34Str(BYTE value[2]) { switch (DosToWin(value[0])) { case 0 : return ""; @@ -81,10 +79,7 @@ return ""; } -//=========================================== -void Export_IMG (FILE *outIMG) -//=========================================== -{ +void Export_IMG (FILE *outIMG) { int atr_num; char atr_name[256] = ""; char rus_name[256] = ""; @@ -100,7 +95,7 @@ double Lat_wsg, Lon_wsg; short num_array; // Êîë-âî ïàð êîîðäèíàò - //========================================== + short RGN_point; // Êîäû ñîîòâåñòâèÿ èç DBF short Type_point; // short Type_line; // @@ -112,13 +107,13 @@ short layer; unsigned long COD = 0; short TYPE; - //========================================== + // Çàãðóæàåì ïàðàìåòðû ïðîåêöèèé double - latSW = Degrees2Rads(IngitLat2Degrees(LAT_SouthWest)), //øèðîòà þæíîé ãðàíèöû ëèñòà - lonSW = Degrees2Rads(IngitLon2Degrees(LON_SouthWest)), //äîëãîòà çàïàäíîé ãðàíèöû êàðòû - latNE = Degrees2Rads(IngitLat2Degrees(LAT_NorthEast)), //øèðîòà ñåâåðíîé ãðàíèöû ëèñòà - lonNE = Degrees2Rads(IngitLon2Degrees(LON_NorthEast)); //äîëãîòà âîñòî÷íîé ãðàíèöû ëèñòà + latSW = Degrees2Rads(IngitLat2Degrees(LAT_SouthWest)), //øèðîòà þæíîé ãðàíèöû ëèñòà + lonSW = Degrees2Rads(IngitLon2Degrees(LON_SouthWest)), //äîëãîòà çàïàäíîé ãðàíèöû êàðòû + latNE = Degrees2Rads(IngitLat2Degrees(LAT_NorthEast)), //øèðîòà ñåâåðíîé ãðàíèöû ëèñòà + lonNE = Degrees2Rads(IngitLon2Degrees(LON_NorthEast)); //äîëãîòà âîñòî÷íîé ãðàíèöû ëèñòà ASSERT(latSW < latNE); ASSERT(lonSW < lonNE); CIngitMercatorProjection Maps (latSW, latNE, lonSW, lonNE, xTopRight / 10.0, yTopRight / 10.0); @@ -127,11 +122,10 @@ for (unsigned short NunObj = 1; NunObj < Max_Num_OBJ; NunObj++) { // Ïðîâåðêà íà EXPORT - short DBF_line = Check_export (obj[NunObj].Cod + 1); + short DBF_line = Check_export(obj[NunObj].Cod + 1); if (DBF_line == -1) // òèï òåêóùåãî îáúåêòà íå íàéäåí â òàáëèöå ïðåîáðàçîâàíèÿ continue; - //========================================================== // Îòáðàñûâàíèå îáúåêòîâ, äëÿ êîòîðûõ íå çàïîëíåíû ïîëÿ TYPE_X â DBF if (type_obj == 'P' && (RGN_point == -1 || Type_point == -1)) { // åñëè äëÿ ýòîãî âèäà îáúåêòà íå çàäàíî ïðåîáðàçîâàíèå if (!checkWarned(obj[NunObj].Cod)) @@ -151,19 +145,6 @@ continue; } - /* âûâîä çíà÷åíèé àòðèáóòîâ - íîâûé - if (comm_atr != 0){ - if (Len_code == 2) { - fprintf (outIMG,"; COD = %s\n", obj[NunObj].Cod); - for (int k = 1; k < 110; k++) - if (obj[NunObj].atr_cod[k] != 0) { - DosToWin(rus_name, (BYTE *)obj[NunObj].atr_cod[k]); - fprintf (outIMG,"; atr[%d] = %s\n", k, rus_name); - } - } - }*/ - - //========================================================== RGN_point = file_cod1[DBF_line].RGN_point; Type_point = file_cod1[DBF_line].TYPE_point; Type_line = file_cod1[DBF_line].TYPE_line; @@ -176,28 +157,22 @@ if ( num_array == 1) obj[NunObj].Cod[0] = 'P'; - //if (num_array < 3 && obj[NunObj].Cod[0] =='A'){ - // printf ("%s ", obj[NunObj].Cod); - // printf ("%i\n", num_array); - // ch = getch(); - //} - //========================================================== // Îáðåçàíèå ïî ðàìêå if (comm_cut != 0) { for (i = 0; i < num_array; i++) { Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); Lon_pul = Rads2Degrees(Lon_met); // Y Lat_pul = Rads2Degrees(Lat_met); // X - if (Lon_pul < Cut_Lon1 || Lat_pul < Cut_Lat1 ) + if (Lon_pul < Cut_Lon1 || Lat_pul < Cut_Lat1) obj[NunObj].Cod[0] = 'D'; - if (Lon_pul > Cut_Lon2 || Lat_pul > Cut_Lat2 ) + if (Lon_pul > Cut_Lon2 || Lat_pul > Cut_Lat2) obj[NunObj].Cod[0] = 'D'; } } - //========================================================== + sum_lon = 0; // Óñðåäíåííûå çíà÷åíèÿ êîîðäèíàò - sum_lat = 0; // - //========================================================== + sum_lat = 0; + rus_name[0] = 0; if (Len_code != 2) COD = atoi (obj[NunObj].Cod + 1); @@ -210,11 +185,7 @@ img_Layer_max = 0; obj[NunObj].Cod[0] = 'D'; DosToWin(rus_name, (BYTE *)obj[NunObj].atr_cod[64]); - //for (i1=1; i1 < 104; i1++){ - // if (obj[NunObj].atr_cod[i1][0] != 0){ - // printf ("(%i) %s ", i1, obj[NunObj].atr_cod[i1]); - // } - //} + // 06 Íàçíà÷åíèå çäàíèÿ if (s_atoi (obj[NunObj].atr_cod[6]) > 0) { switch (s_atoi (obj[NunObj].atr_cod[6])) { @@ -386,8 +357,6 @@ break; default: obj[NunObj].Cod[0] = 'D'; - //printf ("%s\n", obj[NunObj].atr_cod[6]); - //ch = getch(); break; } } @@ -399,14 +368,14 @@ // 01 Èìÿ DosToWin(rus_name, (BYTE *)obj[NunObj].atr_cod[1]); // 07 Òèï óëèöû - if (s_atoi (obj[NunObj].atr_cod[7]) == 1 ) { + if (s_atoi (obj[NunObj].atr_cod[7]) == 1) { //DosToWin(buf_name, (BYTE *)obj[NunObj].atr_cod[1]); //strcpy(rus_name, "~[0x2e]"); //strcat (rus_name, buf_name); img_Layer_max = 2; Type_line = 0x03; } - if ( s_atoi (obj[NunObj].atr_cod[7]) == 2 ) { + if (s_atoi (obj[NunObj].atr_cod[7]) == 2) { img_Layer_max = 1; Type_line = 0x06; } @@ -618,9 +587,8 @@ img_Layer_max = 0; //printf ("3 %s\n", obj[NunObj].atr_cod[3]); } - if (obj[NunObj].atr_cod[3] != 0 && obj[NunObj].atr_cod[3][0] == '4') { + if (obj[NunObj].atr_cod[3] != 0 && obj[NunObj].atr_cod[3][0] == '4') img_Layer_max = 0; - } if (obj[NunObj].atr_cod[3] != 0 && obj[NunObj].atr_cod[3][0] == '1') { //img_Layer_max = 2; //printf ("3 %s\n", obj[NunObj].atr_cod[3]); @@ -640,9 +608,8 @@ Type_line = 0x14; img_Layer_max = 0; } - if (obj[NunObj].atr_cod[3] != 0 && obj[NunObj].atr_cod[3][0] == '4') { + if (obj[NunObj].atr_cod[3] != 0 && obj[NunObj].atr_cod[3][0] == '4') img_Layer_max = 0; - } // 52 Âèä òÿãè (1- ýë 2 - íåò) if (obj[NunObj].atr_cod[52] != 0 && obj[NunObj].atr_cod[52][0] == '1') { //img_Layer_max = 2; @@ -673,16 +640,12 @@ //Type_line = 0x1f; //img_Layer_max = 0; short img_Layer_max_orig = img_Layer_max; - if (obj[NunObj].atr_cod[9] != 0) { + if (obj[NunObj].atr_cod[9] != 0) img_Layer_max = img_Layer_max_orig + 1; // Èìååò èìÿ - } - if (obj[NunObj].Cod[0] == 'A') { + if (obj[NunObj].Cod[0] == 'A') img_Layer_max = img_Layer_max_orig + 2; // - } - if (obj[NunObj].atr_cod[32] != 0 && obj[NunObj].atr_cod[32][0] == '1') { - // 32 Ïðèçíàê ñóäîõîäñòâà + if (obj[NunObj].atr_cod[32] != 0 && obj[NunObj].atr_cod[32][0] == '1') // 32 Ïðèçíàê ñóäîõîäñòâà img_Layer_max = img_Layer_max_orig + 2; - } if (obj[NunObj].atr_cod[35] != 0 && obj[NunObj].atr_cod[35][0] == '5') { // 5 - îñûõàþùèé Type_line = 0x26; @@ -702,9 +665,8 @@ //Type_poly = 0x46; //Type_line = 0x1f; //img_Layer_max = 0; - if (obj[NunObj].atr_cod[9] != 0) { + if (obj[NunObj].atr_cod[9] != 0) img_Layer_max++; // Èìååò èìÿ - } DosToWin(rus_name, (BYTE *)obj[NunObj].atr_cod[9]); break; //========================================================== @@ -752,7 +714,6 @@ DosToWin(rus_name, (BYTE *)obj[NunObj].atr_cod[9]); break; - //========================================================== case 11200000: // Ïóíêòû ÃÃÑ case 11300000: // Òî÷êè ñúåìî÷íîé ñåòè case 11400000: // Ïóíêòû íåâåëèðíîé ñåòè @@ -769,7 +730,6 @@ atr_num = (int)(atr_num * 3.28084); sprintf(rus_name, "%d\0", atr_num); break; - //========================================================== case 41100000: // Ãîðîäà // 43 Ïîëèòèêî-àäìèíèñòðàòèâíîå çíà÷åíèå // 38 Êîë-âî æèòèëåé @@ -934,18 +894,18 @@ case 31531000: // Õàðàêòåðèñòèêè ðåê è êàíàëîâ // 7 Ãëóáèíà if (obj[NunObj].atr_cod[7]) { - strcat (rus_name, " H-"); - strcat (rus_name, obj[NunObj].atr_cod[7]); + strcat(rus_name, " H-"); + strcat(rus_name, obj[NunObj].atr_cod[7]); } // 11 Øèðèíà if (obj[NunObj].atr_cod[11]) { - strcat (rus_name, " W-"); - strcat (rus_name, obj[NunObj].atr_cod[11]); + strcat(rus_name, " W-"); + strcat(rus_name, obj[NunObj].atr_cod[11]); } // 34 Õàððàêòåð ãðóíòà if (obj[NunObj].atr_cod[34]) { - strcat (rus_name, " "); - strcat (rus_name, getAttr34Str((BYTE*)obj[NunObj].atr_cod[34])); + strcat(rus_name, " "); + strcat(rus_name, getAttr34Str((BYTE*)obj[NunObj].atr_cod[34])); } break; case 31540000: // Óêàçàò.íà÷.ðåãóë.ñóäîõîäñòâà @@ -969,23 +929,23 @@ strcpy(rus_name, "áðîä"); // 2 Äëèíà if (obj[NunObj].atr_cod[2] != 0) { - strcat (rus_name, " L-"); - strcat (rus_name, obj[NunObj].atr_cod[2]); + strcat(rus_name, " L-"); + strcat(rus_name, obj[NunObj].atr_cod[2]); } // 7 Ãëóáèíà if (obj[NunObj].atr_cod[7] != 0) { - strcat (rus_name, " H-"); - strcat (rus_name, obj[NunObj].atr_cod[7]); + strcat(rus_name, " H-"); + strcat(rus_name, obj[NunObj].atr_cod[7]); } // 28 Ñêîðîñòü òå÷åíèÿ if (obj[NunObj].atr_cod[28] != 0) { - strcat (rus_name, " V-"); - strcat (rus_name, obj[NunObj].atr_cod[28]); + strcat(rus_name, " V-"); + strcat(rus_name, obj[NunObj].atr_cod[28]); } // 34 Õàððàêòåð ãðóíòà if (obj[NunObj].atr_cod[34] != 0) { - strcat (rus_name, " "); - strcat (rus_name, getAttr34Str((BYTE*)obj[NunObj].atr_cod[34])); + strcat(rus_name, " "); + strcat(rus_name, getAttr34Str((BYTE*)obj[NunObj].atr_cod[34])); } //printf ("%s\n", rus_name); break; @@ -1355,7 +1315,6 @@ if (strcmp("BL", obj[NunObj].Cod + 1) == 0) { // àòðèáóò 06 "Íàçíà÷åíèå çäàíèÿ, ñîîðóæåíèÿ" if (s_atoi (obj[NunObj].atr_cod[6]) > 0) { - switch (s_atoi (obj[NunObj].atr_cod[6])) { case 35: // Ãàðàæ Type_poly = 0x6; @@ -1383,7 +1342,6 @@ break; } - //========================================================== // Òîëüêî Äëÿ ÒÎÏÎ // Òèï îáúåêòà àòðèáóò 47 if (obj[NunObj].atr_cod[47] != 0 && Len_code == 8) { @@ -1546,10 +1504,8 @@ } // end switch(TYPE) } // êîíåö îáðàáîòêè òèïîâ îáúåêòîâ ïî àòðèáóòó 47 - type_obj = obj[NunObj].Cod[0]; - //========================================================== // Âûâîä àòðèáóòîâ if (comm_atr != 0) { fprintf (outIMG, "; %s NUM_OBJ %i %s\n", @@ -1563,29 +1519,24 @@ } fprintf (outIMG, "\n"); } - //======================================================================= - if (comm_rus == 0) { + + if (comm_rus == 0) RusToEng(eng_name, rus_name); - } else { + else strcpy (eng_name, rus_name); - } - //======================================================================= + // Çàïðåò àâòîìàòè÷åñêîãî ðàçíîñà ïî ñëîÿì. - if (comm_layer == 1) { + if (comm_layer == 1) img_Layer_max = file_cod1[DBF_line].img_layer_max; - } - //======================================================================= + switch (type_obj) { // Ïðîâåðêà íà òèï îáúåêòà - //======================================================================= // Òî÷å÷íûé îáúåêò - //======================================================================= case 'P': - //================================================================ fprintf (outIMG, "[RGN%X]\n", RGN_point); fprintf (outIMG, "Type=0x%X\n", Type_point); - if (eng_name[0] != 0) { + if (eng_name[0] != 0) fprintf (outIMG, "Label=%s\n", eng_name); - } + for (layer = img_Layer_min; layer <= img_Layer_max; layer++) { sum_lon = 0; sum_lat = 0; @@ -1595,12 +1546,11 @@ Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); Lon_pul = Rads2Degrees(Lon_met); // Y Lat_pul = Rads2Degrees(Lat_met); // X - if (comm_nowgs == 0) { - WGS.Convert (Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); - } else { + if (comm_nowgs != 0) { Lon_wsg = Lon_pul; Lat_wsg = Lat_pul; - } + } else + WGS.Convert(Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); sum_lon += Lon_wsg; sum_lat += Lat_wsg; //printf ("*"); @@ -1609,11 +1559,8 @@ fprintf (outIMG, "(%.6f,%.6f)\n", sum_lon / num_array, sum_lat / num_array); } fprintf (outIMG, "[END]\n\n"); - //================================================================ break; - //====================================== // Ïîëèãîíû - //====================================== case 'A': //fprintf (outIMG,"; Points %i\n", num_array); fprintf (outIMG, "[RGN80]\n"); @@ -1621,93 +1568,78 @@ //fprintf (outIMG,"; Obj %i\n" ,NunObj); //fprintf (outIMG,"; Points %i\n" ,num_array); fprintf (outIMG, "Type=0x%X\n", Type_poly); - if (eng_name[0] != 0) { + if (eng_name[0] != 0) fprintf (outIMG, "Label=%s\n", eng_name); - } + for (layer = img_Layer_min; layer <= img_Layer_max; layer++) { sum_lon = 0; sum_lat = 0; - if (layer == 0) { + if (layer == 0) // Ñ÷åò÷èê Ïîëèãîíîâ N_Poligon++; - } // Ñ÷åò÷èê Ïîëèãîíîâ for (i = 0; i < num_array; i++) { Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); Lon_pul = Rads2Degrees(Lon_met); // Y Lat_pul = Rads2Degrees(Lat_met); // X - if (comm_nowgs == 0) { - WGS.Convert (Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); - } else { + if (comm_nowgs != 0) { Lon_wsg = Lon_pul; Lat_wsg = Lat_pul; - } + } else + WGS.Convert(Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); switch (Metr_OBJ[i].type) { case 0x80: // Íà÷àëî ñåãìåíòà if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0: // Ïðîäîëæåíèå ñåãìåíòà - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0x20: // Ïðîäîëæåíèå ñåãìåíòà (ïîâ¸ðíóò) - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0x60: // Äûðêà (ïîâ¸ðíóò) //fprintf (outIMG, "\n; %X",Metr_OBJ[i].type); //fprintf (outIMG, "\n; %i",Metr_OBJ[i].num); if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - case 0xA0: //====================================== + case 0xA0: if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); //printf ("\n%X",Metr_OBJ[i].type); break; case 0x40: // Äûðêà if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); //printf ("\n%X",Metr_OBJ[i].type); break; - //====================================== case 0xC0: if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - //====================================== default: printf ("Warning, NEW segment\n"); break; } if (i + 2 > num_array) { //fprintf (outIMG,"\n[END-RGN80]\n\n"); - } - else { + } else { if (Metr_OBJ[i + 1].type != 0x80 && Metr_OBJ[i + 1].type != 0x60 && Metr_OBJ[i + 1].type != 0xA0 && Metr_OBJ[i + 1].type != 0xC0 && Metr_OBJ[i + 1].type != 0x40) { - fprintf (outIMG, ","); + fprintf(outIMG, ","); } } sum_lon += Lon_wsg; @@ -1715,33 +1647,33 @@ // Êîíåö öèêëà âûáîðêè ìàññèâà êîîðäèíàò } } - fprintf (outIMG, "\n[END]\n\n"); + fprintf(outIMG, "\n[END]\n\n"); break; - //====================================== + // Ëèíèè - //====================================== case 'L': N_Poliline++; //fprintf (outIMG,"\n; %X\n",Metr_OBJ[i].type); - fprintf (outIMG, "[RGN40]\n"); - fprintf (outIMG, "Type=0x%X\n", Type_line); + fprintf(outIMG, "[RGN40]\n"); + fprintf(outIMG, "Type=0x%X\n", Type_line); if (eng_name[0] != 0) { bool isHighway = (rus_name[0] == '~' && rus_name[1] == '['); //Ïåðåâîäèòü íàçâàíèÿ ëèíåéíûõ îáúåêòîâ â âåðõíèé ðåãèñòð è òðàíñëèòåðèðîâàòü //çà èñêëþ÷åíèåì îáîçíà÷åíèé øîññå ~[0x..] (ïîòîìó ÷òî îíè âûâîäÿòñÿ íå âåêòîðíûì øðèôòîì) - if (comm_rus && comm_polylinesNamesToUpperAndTransliterate && !isHighway) // ïðè âûâîäå ðóññêèõ íàçâàíèé âûäà¸ì è ðóññêîå è òðàíñëèòåðèðîâàííîå íàçâàíèå ÷åðåç ñïåöèàëüíûé ðàçäåëèòåëü - { + + // ïðè âûâîäå ðóññêèõ íàçâàíèé âûäà¸ì è ðóññêîå è òðàíñëèòåðèðîâàííîå íàçâàíèå ÷åðåç ñïåöèàëüíûé ðàçäåëèòåëü + if (comm_rus && comm_polylinesNamesToUpperAndTransliterate && !isHighway) { RusToEng(eng_name, rus_name); toUpperWin(eng_name); // ~[0x1e] - ýòî ðàçäåëèòåëü. Íà êàðòå âûâîäèòñÿ ñëîâî ïîñëå ðàçäåëèòåëÿ, à ïðè íàâåäåíèè êóðñîðà - ñëîâî äî è ñëîâî ïîñëå ÷åðåç ïðîáåë - fprintf (outIMG, "Label=%s~[0x1e]%s\n", rus_name, eng_name); + fprintf(outIMG, "Label=%s~[0x1e]%s\n", rus_name, eng_name); } else { if (comm_polylinesNamesToUpperAndTransliterate && !isHighway) // ïðè âûâîäå òðàíñëèòåðèðîâàííûõ íàçâàíèé, ëèíåéíûå îáúåêòû ïðèâîäèì ê âåðõíåìó ðåãèñòðó toUpperWin(eng_name); - fprintf (outIMG, "Label=%s\n", eng_name); + fprintf(outIMG, "Label=%s\n", eng_name); } } - if ( Type_line >= 0x01 && Type_line <= 0x06 ) + if (Type_line >= 0x01 && Type_line <= 0x06) fprintf (outIMG, "DirIndicator=1\n"); for (layer = img_Layer_min; layer <= img_Layer_max; layer++) { for (i = 0; i < num_array; i++) { @@ -1756,92 +1688,67 @@ Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); Lon_pul = Rads2Degrees(Lon_met); // Y Lat_pul = Rads2Degrees(Lat_met); // X - if (comm_nowgs == 0) { - WGS.Convert (Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); - } else { + if (comm_nowgs != 0) { Lon_wsg = Lon_pul; Lat_wsg = Lat_pul; - } - - // fprintf (outIMG,"\n; %i %X", - // i,//Metr_OBJ[i].nun_segment, - // Metr_OBJ[i].type); - + } else + WGS.Convert(Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); switch (Metr_OBJ[i].type) { case 0x80: // Íîâûé ñåãìåíò îáúåêòà - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - //====================================== case 0: // Ïðîäîëæåíèå ñåãìåíòà - if (i == 0) { - fprintf (outIMG, "\nData%i=", layer); - } - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + if (i == 0) + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - //====================================== case 0x20: // Ïðîäîëæåíèå ñåãìåíòà (ïîâåðíóò) - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - //====================================== case 0xA0: - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - //====================================== case 0x40: if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); - printf ("%s\n", eng_name); - //ch = getch(); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + printf("%s\n", eng_name); break; - //====================================== case 0xC0: if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - //====================================== case 0x60: // Äûðêà if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X\n", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); + fprintf(outIMG, "\n; %i %X\n", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); - fprintf (outIMG, "Data%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "Data%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - //====================================== default: break; } if (i + 2 > num_array) { //fprintf (outIMG,"\n[END-RGN40]\n\n"); - } - else { + } else { if (Metr_OBJ[i + 1].type == 0x80 || Metr_OBJ[i + 1].type == 0xA0 || Metr_OBJ[i + 1].type == 0x60 || Metr_OBJ[i + 1].type == 0x40 ) { //fprintf (outIMG,"\n[END-RGN40]\n\n"); - } - else { + } else fprintf (outIMG, ","); - } } } // Êîíåö öèêëà âûáîðêè ìàññèâà êîîðäèíàò } - fprintf (outIMG, "\n[END]\n\n"); + fprintf(outIMG, "\n[END]\n\n"); break; - //================================================================ // Ãîðîäà // Áåç city 0 - Ïîëèãîí // city1 - Ïîëèãîí + Òî÷êà @@ -1870,91 +1777,82 @@ sum_lon += Lon_wsg; sum_lat += Lat_wsg; } - fprintf (outIMG, "Data%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)\n", sum_lon / num_array, sum_lat / num_array); + fprintf(outIMG, "Data%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)\n", sum_lon / num_array, sum_lat / num_array); } - fprintf (outIMG, "[END]\n\n"); + fprintf(outIMG, "[END]\n\n"); } // Ïîëèãîí if (comm_city == 0 || comm_city == 1 || comm_city == 3) { - fprintf (outIMG, "[RGN80]\n"); - fprintf (outIMG, "Type=0x%X\n", Type_poly); + fprintf(outIMG, "[RGN80]\n"); + fprintf(outIMG, "Type=0x%X\n", Type_poly); if (eng_name[0] != 0) - fprintf (outIMG, "Label=%s\n", eng_name); + fprintf(outIMG, "Label=%s\n", eng_name); for (layer = img_Layer_min; layer <= img_Layer_max; layer++) { sum_lon = 0; sum_lat = 0; - if (layer == 0) { + if (layer == 0) // Ñ÷åò÷èê Ïîëèãîíîâ N_Poligon++; - } // Ñ÷åò÷èê Ïîëèãîíîâ for (i = 0; i < num_array; i++) { Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); Lon_pul = Rads2Degrees(Lon_met); // Y Lat_pul = Rads2Degrees(Lat_met); // X - if (comm_nowgs == 0) { - WGS.Convert (Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); - } else { + if (comm_nowgs != 0) { Lon_wsg = Lon_pul; Lat_wsg = Lat_pul; - } + } else + WGS.Convert(Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); switch (Metr_OBJ[i].type) { case 0x80: // Íà÷àëî ñåãìåíòà if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0: // Ïðîäîëæåíèå ñåãìåíòà - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0x20: // Ïðîäîëæåíèå ñåãìåíòà (ïîâåðíóò) - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0x60: // Äûðêà (ïîâåðíóò) //fprintf (outIMG, "\n; %X",Metr_OBJ[i].type); //fprintf (outIMG, "\n; %i",Metr_OBJ[i].num); if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; - case 0xA0: //====================================== + case 0xA0: if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); //printf ("\n%X",Metr_OBJ[i].type); break; case 0x40: // Äûðêà if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); //printf ("\n%X",Metr_OBJ[i].type); break; case 0xC0: if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; default: - printf ("Warning, NEW segment\n"); + printf("Warning, NEW segment\n"); break; } if (i + 2 > num_array) { //fprintf (outIMG,"\n[END-RGN80]\n\n"); - } - else { + } else { if (Metr_OBJ[i + 1].type != 0x80 && Metr_OBJ[i + 1].type != 0x60 && Metr_OBJ[i + 1].type != 0xA0 && @@ -1973,8 +1871,8 @@ if (comm_city == 3) { N_Poliline++; - fprintf (outIMG, "[RGN40]\n"); - fprintf (outIMG, "Type=0x%X\n", Type_line); + fprintf(outIMG, "[RGN40]\n"); + fprintf(outIMG, "Type=0x%X\n", Type_line); //if (eng_name[0] != 0) // fprintf (outIMG,"Label=%s\n", eng_name); //if ( Type_line >= 0x01 && Type_line <= 0x06 ) @@ -1987,55 +1885,49 @@ Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); Lon_pul = Rads2Degrees(Lon_met); // Y Lat_pul = Rads2Degrees(Lat_met); // X - if (comm_nowgs == 0) { - WGS.Convert (Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); - } else { + if (comm_nowgs != 0) { Lon_wsg = Lon_pul; Lat_wsg = Lat_pul; - } + } else + WGS.Convert(Lon_pul, Lat_pul, 5, &Lon_wsg, &Lat_wsg); switch (Metr_OBJ[i].type) { case 0x80: // Íîâûé ñåãìåíò îáúåêòà - fprintf (outIMG, "Data%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "Data%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0: // Ïðîäîëæåíèå ñåãìåíòà - if (i == 0) { - fprintf (outIMG, "Data%i=", layer); - } - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + if (i == 0) + fprintf(outIMG, "Data%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0x20: // Ïðîäîëæåíèå ñåãìåíòà (ïîâåðíóò) - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0xA0: //fprintf (outIMG,"\n; %X\n",Metr_OBJ[i].type); - fprintf (outIMG, "Data%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "Data%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0x40: if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); - printf ("%s\n", eng_name); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + printf("%s\n", eng_name); break; case 0xC0: if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "\nData%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "\nData%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; case 0x60: // Äûðêà if (comm_seg == 1) - fprintf (outIMG, "\n; %i %X\n", - Metr_OBJ[i].nun_segment, - Metr_OBJ[i].type); - fprintf (outIMG, "Data%i=", layer); - fprintf (outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); + fprintf(outIMG, "\n; %i %X\n", Metr_OBJ[i].nun_segment, Metr_OBJ[i].type); + fprintf(outIMG, "Data%i=", layer); + fprintf(outIMG, "(%.6f,%.6f)", Lon_wsg, Lat_wsg); break; //====================================== default: @@ -2043,17 +1935,15 @@ } if (i + 2 > num_array) { //fprintf (outIMG,"\n[END-RGN40]\n\n"); - } - else { + } else { if (Metr_OBJ[i + 1].type == 0x80 || Metr_OBJ[i + 1].type == 0xA0 || Metr_OBJ[i + 1].type == 0x60 || Metr_OBJ[i + 1].type == 0x40 ) { //fprintf (outIMG,"\n[END-RGN40]\n\n"); - } - else - fprintf (outIMG, ","); + } else + fprintf(outIMG, ","); } } } - fprintf (outIMG, "\n[END]\n\n"); + fprintf(outIMG, "\n[END]\n\n"); } break; |
From: Denis P. <dy...@us...> - 2004-05-05 16:36:16
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23927 Modified Files: IngitFile.cpp IngitFile.h IngitHeader.cpp IngitHeader.h IngitTable.cpp IngitTable.h common.cpp common.h Log Message: Fix formatting Fix usage of memcmp Create a function in common to convert attr code to int Index: IngitFile.h =================================================================== RCS file: /cvsroot/cmap/cmap/IngitFile.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- IngitFile.h 5 May 2004 15:33:19 -0000 1.7 +++ IngitFile.h 5 May 2004 16:35:52 -0000 1.8 @@ -6,20 +6,6 @@ #include "common.h" #include "Geodesy.h" -//=================================================================================== -//typedef struct Object { -// char cod[10]; //(A, L, P) + êîäèôèêàòîð ÂÒÓ -// char name[32]; // Èìÿ îáúåêòà -// short RGN; // RGN -// short Type; // Type -// char Label[4]; // Èìÿ àòðèáóòà äëÿ èìåíè îáúåêòà -// short Level0, -// Level1, -// Level2, -// Level3; -//}object_cod; - -//=================================================================================== typedef struct Objects { char type[1]; //Òèï îáúåêòà char _b2; // @@ -32,9 +18,7 @@ char Cod[10]; //(P,L,A) + Êîäèôèêàòîð char atr_name[256]; // Çíà÷åíèå àòðèáóòà. char *atr_cod[110]; // 2 áàéòà àòðèáóòà åñëè íåò 1-é áàéò 0 - -} -h_object +} h_object #ifdef __GNUC__ __attribute__ ((packed)) #endif @@ -42,10 +26,10 @@ extern h_object *obj; -//=================================================================================== typedef struct Cord_OBJ { - double Lon, - Lat; + double + Lon, + Lat; unsigned short nun_segment; // Íîìåð Ñåãìåíòà unsigned short num ; // Ïîðÿäêîâûé íîìåð ñåãìåíòà îáúåêòà. (Ðàñ÷åòíûé) short type; // Òèï ñåãìåíòà @@ -62,28 +46,20 @@ extern cord_object *Metr_OBJ; -//=================================================================================== // Ñòðóêòóðà Ãðàôè÷åñêîé òàáëèöû ôàéëà êàðòû -//=================================================================================== -//char names_gt[300][10]; // Èìåíà êîäèôèêàòîðîâ extern short n_obj_table_graph; // ÷èñëî îáúåêòîâ extern short Len_code; // Äëèíà Êîäèôèêàòîðà typedef struct IngitGraphTable { // Ãðàôè÷åñêàÿ òàáëèöà ôàéëà. char name[10]; // Èìÿ êîäèôèêàòîðà - -} -gt; +} gt; extern gt *names_gt1; -//=================================================================================== // Íàéäåííûå â Òàáëèöå Àòðèáóòîâ êîäèôèêàòîðû -//=================================================================================== typedef struct Find_object { BYTE type; // Type êîäèôèêàòîðà (A, L, P) char name[10]; // 8-çíà÷íûé êîäèôèêàòîð ÂÒÓ unsigned short num; // Êîë-âî íàõîæäåíèÿ îáúåêòà - } nam_cod #ifdef __GNUC__ @@ -99,22 +75,23 @@ extern unsigned long *Index_Metr; // îôôñåòû Òàáëèöû Ñåãìåíòîâ. extern unsigned long *Index_Atr; // îôôñåòû Òàáëèöû Àòðèáóòîâ. -//=================================================================================== extern long OffsetOBJ; // Ñìåùåíèå äî òàáëèöû Îáúåêòîâ extern long Offset_Metr; // Ñìåùåíèå äî òàáëèöû Ñåãìåíòîâ extern unsigned long Offset_Grapf_Tab; // Ñìåùåíèå äî Ãðàôè÷åñêîé òàáëèöû extern long Offset_Atr_Tab; // Ñìåùåíèå äî òàáëèöû Àòðèáóòîâ extern short FLAG; // Ïðèçíàê ÷òî ôàéë èìååò ìåíüøóþ -// äëèíó òàáëööû îáúåêòîâ -1 + // äëèíó òàáëèöû îáúåêòîâ -1 -extern unsigned long Max_Num_Segment, // Íîìåð ïîñëåäíåãî ñåãìåíòà. +extern unsigned long + Max_Num_Segment, // Íîìåð ïîñëåäíåãî ñåãìåíòà. Max_Num_OBJ; // êîëè÷åñòâî îáúêòîâ extern unsigned short Max_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ extern long xTopRight; extern long yTopRight; -extern short scaleX, +extern short + scaleX, scaleY; extern long LAT_SouthWest; //øèðîòà þæíîé ãðàíèöû ëèñòà extern long LON_SouthWest; //äîëãîòà çàïàäíîé ãðàíèöû êàðòû Index: common.h =================================================================== RCS file: /cvsroot/cmap/cmap/common.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- common.h 5 May 2004 16:15:57 -0000 1.8 +++ common.h 5 May 2004 16:35:52 -0000 1.9 @@ -26,6 +26,8 @@ void s_free(void *ptr); void *s_realloc(void *ptr, size_t size); +int attrToCode(const char *buf_atr); + #endif // __CMAP_COMMON_H__ Index: IngitTable.h =================================================================== RCS file: /cvsroot/cmap/cmap/IngitTable.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- IngitTable.h 5 May 2004 15:33:19 -0000 1.6 +++ IngitTable.h 5 May 2004 16:35:52 -0000 1.7 @@ -1,15 +1,10 @@ #ifndef __CMAP_IT_H__ #define __CMAP_IT_H__ -//=================================================================================== -class IngitTable - // Çàãðóçêà, Ðàçáîð òàáëèö - //=================================================================================== -{ +// Çàãðóçêà, Ðàçáîð òàáëèö +class IngitTable { public: - //=================================================================================== // Çàãîëîâîê Ãðàôè÷åñêîé Òàáëèöû. - //=================================================================================== char Graph_Tab_signature[4]; // ÝÁÊß char _b1; char _b2; @@ -34,7 +29,6 @@ short Check_name_cod (BYTE *str); short Check_name_cod1 (BYTE *str); short PrintATR (unsigned long offset, FILE *outF); - } #ifdef __GNUC__ __attribute__ ((packed)) Index: IngitTable.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitTable.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- IngitTable.cpp 5 May 2004 15:33:19 -0000 1.10 +++ IngitTable.cpp 5 May 2004 16:35:52 -0000 1.11 @@ -9,10 +9,7 @@ #include "cmap.h" #include "common.h" -//=================================================================================== -void IngitTable::SearchOffset(BYTE *bufers) -//=================================================================================== -{ +void IngitTable::SearchOffset(BYTE *bufers) { FLAG = 0; // Ñáðîñ ôëàãà, ïðèíèìàåì ÷òî ôàéë ïîêà íîðìàëüíû if ( OffsetOBJ == 0) { printf("Error offset object...\n"); @@ -23,10 +20,8 @@ exit(1); } - //=================================================================================== //êîððåêöèÿ ñìåùåíèÿ äëÿ "õèòðûõ ôàéëîâ" // Õàáàðîâñêàÿ., MS.001, íîâûå (CD 2002') ôàéëû DEMO... - //=================================================================================== if (buf[OffsetOBJ + 2] == 1) { if (buf[OffsetOBJ + 3] == 0) { OffsetOBJ = OffsetOBJ - 1; @@ -37,40 +32,29 @@ } } } -//=================================================================================== + // Èíäåêñèðîâàíèå òàáëèöû Ñåãìåíòîâ (Ãðàôèêè) -//=================================================================================== //#define DEBUG_IndexTabSegment -void IngitTable::IndexTabSegment(FILE *outF) -//=================================================================================== -{ +void IngitTable::IndexTabSegment(FILE *outF) { unsigned long Pointer_Metric = Offset_Metr - 1; // Óêàòåëü íà íà÷àëî òàáëèöû - // unsigned long Pointer_Metric = Offset_Metr; // Óêàòåëü íà íà÷àëî òàáëèöû unsigned short Num_Metric_Object; // Íîìåð Ñåãòåíòà. unsigned short i; long Offset_Segment = Pointer_Metric; long Offset_Segment1; short Next_byte; - //============================================================== + // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ òàáëèöû ñìåùåíèé Ñåãìåíòîâ. - // Freee ïîêà â êîíöå ReadTableOBJ - if ((Index_Metr = (unsigned long *) s_malloc ((Max_Num_Segment + 3) * 4)) == NULL) { - printf ("Not enough memory...\n"); - exit(1); - } - for (unsigned short j = 0; j < Max_Num_Segment; j++) { - Index_Metr[j] = 0; - } - //============================================================== - if (comm_off == 2) { + // Free ïîêà â êîíöå ReadTableOBJ + Index_Metr = (unsigned long *)s_malloc((Max_Num_Segment + 3) * 4); + memset(Index_Metr, 0, (Max_Num_Segment + 3) * 4); + + if (comm_off == 2) printf("Index Segments..%i ", FileSize); - } - //============================================================== + Offset_Segment++; #ifdef DEBUG_IndexTabSegment - printf("Max %i ", Max_Num_Segment); #endif @@ -79,17 +63,12 @@ if (buf[Offset_Segment] == 0 && buf[Offset_Segment + 1] == 0) // We need to do page align Offset_Segment += (0x2000 - ((Offset_Segment - Offset_Metr) % 0x2000)); - //============================================================== // Çàïèñûâàåì çíà÷åíèå ñìåøåíèÿ â Òàáëèöó. Num_Metric_Object = buf[Offset_Segment] + buf[Offset_Segment + 1] * 256; - //if (Num_Metric_Object > Max_Num_Segment) { - // printf("Segment %i\n", Num_Metric_Object); - // } ASSERT(Num_Metric_Object <= Max_Num_Segment); Index_Metr[Num_Metric_Object] = Offset_Segment - 1; - if (Num_Metric_Object == Max_Num_Segment) { + if (Num_Metric_Object == Max_Num_Segment) break; - } #ifdef DEBUG_IndexTabSegment printf("Offset %X ", Index_Metr[Num_Metric_Object]); printf("Segment %X\n", Num_Metric_Object); @@ -98,24 +77,20 @@ Offset_Segment = Offset_Segment + 2; // Ïåðâûå Êîîðäèíàòû Ñåãìåíòà - Word. Offset_Segment = Offset_Segment + 4; - //=============================================================================== + Next_byte = buf[Offset_Segment++]; // ×èòàåì Êîë-âî ñëåäóþùèõ áàéò #ifdef DEBUG_IndexTabSegment - printf("Next byte %i\n", Next_byte); #endif - // Öèêë âûáîðêè ñëåäóþùèõ áàéò êîîðäèíàò. + // Öèêë âûáîðêè ñëåäóþùèõ áàéò êîîðäèíàò. while (Next_byte != 0) { - if ((Next_byte & 0x1) == 0) { //Next_byte - ÷åòíûé Cìåùåíèÿ â áàéòàõ - for (short k = 0; k < Next_byte / 2 ; k++) { + if ((Next_byte & 0x1) == 0) //Next_byte - ÷åòíûé Cìåùåíèÿ â áàéòàõ + for (short k = 0; k < Next_byte / 2 ; k++) Offset_Segment += 2; - } - } else { // Äëèííûå ñìåùåíèÿ. Next_byte - ÍÅ ÷åòíûé - for (short k = 0; k < (Next_byte - 1) / 2 ; k++) { + else // Äëèííûå ñìåùåíèÿ. Next_byte - ÍÅ ÷åòíûé + for (short k = 0; k < (Next_byte - 1) / 2 ; k++) Offset_Segment += 4; - } - } Next_byte = buf[Offset_Segment++]; } @@ -125,30 +100,20 @@ if (((Offset_Segment - Offset_Segment1) % 2) != 0) Offset_Segment += 1; - //if (Offset_Segment > 0x6A7B2) ch = getch(); - // if (Num_Metric_Object != i){ - // printf("*Error Index Segment* "); - // printf("%i", buf[Offset_Segment]+ buf[Offset_Segment+1]*256); - // printf("(%i)\n", i); - // exit(0); - // } } // Èíäåêñèðîâàíèå çàâåðøåíî! - if (comm_off == 2) { printf("Segment 1..... %X\n", Index_Metr[1]); printf("Segment End... %X\n\n", Index_Metr[Max_Num_Segment]); } } -//=================================================================================== + // Èíäåêñèðîâàíèå Òàáëèöû Àòðèáóòîâ -void IngitTable::IndexTabAtr(FILE *outF) -//=================================================================================== -{ +void IngitTable::IndexTabAtr(FILE *outF) { unsigned long pointer; unsigned long j, i; - //=================================================================================== + // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ òàáëèöû ñìåùåíèé Àòðèáóòîâ. // Free äëÿ Index_Atr äåëàåòñÿ â êîíöå Index_Atr = (unsigned long *)s_malloc((Max_Num_OBJ + 1) * sizeof(unsigned long *)); @@ -158,10 +123,10 @@ names_codif = (nam_cod *)s_malloc(sizeof(nam_cod) * 500); memset(names_codif, 0, sizeof(nam_cod) * 500); fprintf(outF, "Indexing table...\n"); - //=================================================================================== + n_obj_codif = 0; // Îáíóëèòü C÷åò÷èê óíèêàëüíûõ îáúåêòîâ. unsigned short num_atr; - //=================================================================================== + if (len_code == 2) { pointer = Offset_Atr_Tab; while (pointer < Offset_Grapf_Tab) { @@ -180,7 +145,6 @@ memcpy(names_codif[n_obj_codif].name, buf + pointer + 1, len_code); names_codif[n_obj_codif].name[len_code] = 0; n_obj_codif++; // Óâåëè÷èâàåì ñ÷åò÷èê "ðàçíûõ îáúåêòîâ" - } names_codif[Check_name_cod1(buf + pointer + 1)].num++; pointer += len_code + 1; @@ -193,48 +157,24 @@ memcpy(buf_atr, buf + pointer, 2); buf_atr[2] = 0; pointer += 2; - sscanf(buf_atr, "%d", &ATR_cod); - if (!memcmp(buf_atr, "AR", 2) ) { - ATR_cod = 100; - } - if (!memcmp(buf_atr, "RJ", 2) ) { - ATR_cod = 101; - } - if (!memcmp(buf_atr, "AA", 2) ) { - ATR_cod = 102; - } - if (!memcmp(buf_atr, "ST", 2) ) { - ATR_cod = 103; - } - // SC - Ìàñøòàá - if (!memcmp(buf_atr, "SC", 2) ) { - ATR_cod = 104; - } - if (!memcmp(buf_atr, "GS", 2) ) { - ATR_cod = 105; - } - if (!memcmp(buf_atr, "FN", 2) ) { - ATR_cod = 106; - } - if (!memcmp(buf_atr, "PR", 2) ) { - ATR_cod = 107; - } + ATR_cod = attrToCode(buf_atr); - short _n = 0; + unsigned int _n = 0; while (buf[pointer] != 0) buf_atr_cod[_n++] = buf[pointer++]; buf_atr_cod[_n] = 0; pointer++; } - if (buf[pointer] == 0 && buf[pointer + 1] == 0 && buf[pointer + 2] == 0) { + + if (buf[pointer] == 0 && buf[pointer + 1] == 0 && buf[pointer + 2] == 0) pointer += 0x2000 - ((pointer - Offset_Atr_Tab) & 0x1FFF); - } else { + else pointer++; - } //printf("Offset : %x ", Index_Atr[num_atr]); //printf("%s\n", buf+Index_Atr[num_atr]+2); // Ïå÷àòü êîäèôèêàòîðà. } } + if (len_code == 8) { pointer = Offset_Atr_Tab - 1; unsigned short Num_ATR; @@ -249,8 +189,8 @@ names_codif[n_obj_codif].name[8] = 0; n_obj_codif++; // Óâåëè÷èâàåì ñ÷åò÷èê "ðàçíûõ îáúåêòîâ" } - // Óâåëè÷èâàåì ñ÷åò÷èê óíèêàëüíûõ êîäèôèêàòîðîâ + // Óâåëè÷èâàåì ñ÷åò÷èê óíèêàëüíûõ êîäèôèêàòîðîâ names_codif[Check_name_cod1(buf + j + 4)].num++; Num_ATR = buf[j + 1] + buf[j + 2] * 256; @@ -267,11 +207,10 @@ break; } } - //} } } } - //=================================================================================== + // Ïå÷àòü íàéäåíûõ âèäîâ îáúåêòîâ. //=================================================================================== @@ -293,12 +232,12 @@ total_obj = total_obj + names_codif[i].num; } - if (comm_inf == 1) { + if (comm_inf == 1) fprintf(outF, "\n"); - } - if (comm_inf == 1) { + + if (comm_inf == 1) fprintf(outF, "Objects found: %i\nObjects declared in header: %i\n", total_obj, Max_Num_OBJ); - } + if (total_obj != Max_Num_OBJ) { fprintf(outF, "File %s\n", FileMaps); fprintf(outF, "Warning!!! Number of objects found differs from number declared in Index Table ATR.\n"); @@ -316,22 +255,19 @@ } } } -//=================================================================================== + // Ðàçáîð Ãðàôè÷åñêîé Òàáëèöû -void IngitTable::ReadGraphTable (FILE *outF) -//=================================================================================== -{ +void IngitTable::ReadGraphTable (FILE *outF) { // Ðåçåðâèðîâàíèå ïàìÿòè - // names_gt1 = (gt *)s_malloc(sizeof(gt) * 400); memset(names_gt1, 0, sizeof(gt) * 400); // Çàãðóæàåì øàïêó Ãðàôè÷åñêîé Òàáëèöû memcpy(Graph_Tab_signature, buf + Offset_Grapf_Tab, 50); - if (comm_off == 2) { + if (comm_off == 2) printf("Signature %.4s\n", Graph_Tab_signature); - } + if (comm_gt == 1) { printf("Graph Table\n"); printf("Type.........%.8s\n", linkedCodeTable); @@ -379,25 +315,20 @@ n_obj_table_graph = n_obj; // Êîë-âî ýëåìåíòîâ â ãëîáàëüíóþ ïåðåìåííóþ Len_code = len_code; } -//=================================================================================== + // Ïðîâåðêà íàëè÷èÿ èìåíè Êîäèôèêàòîðà â Ãðàôè÷åñêîé Òàáëèöå ôàéëà // Âîçâðàùàåò åãî íîìåð â òàáëèöå, åñëè íå íàéäåí -1 -short IngitTable::Check_name_cod (BYTE *str) -//=================================================================================== -{ - for (short i = 0; i < n_obj_table_graph; i++) { +short IngitTable::Check_name_cod (BYTE *str) { + for (short i = 0; i < n_obj_table_graph; i++) // Ïîñëåäíèé 0 êîäèôèêàòîðå íå âñåãäà 0 - if (!memcmp(str, names_gt1[i].name, len_code - 1) ) + if (memcmp(str, names_gt1[i].name, len_code - 1) == 0) return i; - } return -1; } -//=================================================================================== + // Ïðîâåðêà íàëè÷èÿ "A,L,P+èìÿ Êîäèôèêàòîðà" â "Òàáëèöå Àòðèáóòîâ" // Âîçâðàùàåò åãî íîìåð â òàáëèöå, åñëè íå íàéäåí òî -1 -short IngitTable::Check_name_cod1 (BYTE *str) -//=================================================================================== -{ +short IngitTable::Check_name_cod1 (BYTE *str) { int len; if (len_code == 8) len = 7; @@ -408,11 +339,9 @@ exit(1); } - for (unsigned int i = 0; i < n_obj_codif; i++) { + for (unsigned int i = 0; i < n_obj_codif; i++) // Ïîñëåäíèé 0 êîäèôèêàòîðå íå âñåãäà 0 if (memcmp(str, names_codif[i].name, len) == 0) return i; - } return -1; } - Index: IngitFile.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitFile.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- IngitFile.cpp 5 May 2004 15:33:19 -0000 1.11 +++ IngitFile.cpp 5 May 2004 16:35:52 -0000 1.12 @@ -8,14 +8,13 @@ #include "IngitFile.h" #include "cmap.h" - gt *names_gt1 = NULL; unsigned short n_obj_codif = 0; // ÷èñëî ðàçíûõ îáúåêòîâ nam_cod *names_codif = NULL; - h_object *obj = NULL; + // Ìàññèâ êîîðäèíàò îáúåêòà cord_object *Metr_OBJ = NULL; @@ -24,14 +23,10 @@ unsigned long *Index_Metr; // îôôñåòû Òàáëèöû Ñåãìåíòîâ. unsigned long *Index_Atr; // îôôñåòû Òàáëèöû Àòðèáóòîâ. -//=================================================================================== // Ñòðóêòóðà Ãðàôè÷åñêîé òàáëèöû ôàéëà êàðòû -//=================================================================================== -//char names_gt[300][10]; // Èìåíà êîäèôèêàòîðîâ short n_obj_table_graph = 0; // ÷èñëî îáúåêòîâ short Len_code; // Äëèíà Êîäèôèêàòîðà -//=================================================================================== long OffsetOBJ; // Ñìåùåíèå äî òàáëèöû Îáúåêòîâ long Offset_Metr; // Ñìåùåíèå äî òàáëèöû Ñåãìåíòîâ unsigned long Offset_Grapf_Tab; // Ñìåùåíèå äî Ãðàôè÷åñêîé òàáëèöû @@ -39,15 +34,17 @@ short FLAG; // Ïðèçíàê ÷òî ôàéë èìååò ìåíüøóþ // äëèíó òàáëööû îáúåêòîâ -1 -unsigned long Max_Num_Segment, // Íîìåð ïîñëåäíåãî ñåãìåíòà. -Max_Num_OBJ; // êîëè÷åñòâî îáúêòîâ +unsigned long + Max_Num_Segment, // Íîìåð ïîñëåäíåãî ñåãìåíòà. + Max_Num_OBJ; // êîëè÷åñòâî îáúêòîâ unsigned short Max_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ long xTopRight; long yTopRight; -short scaleX, -scaleY; +short + scaleX, + scaleY; long LAT_SouthWest; //øèðîòà þæíîé ãðàíèöû ëèñòà long LON_SouthWest; //äîëãîòà çàïàäíîé ãðàíèöû êàðòû long LAT_NorthEast; //øèðîòà ñåâåðíîé ãðàíèöû ëèñòà @@ -55,10 +52,9 @@ double Kx; double Ky; -//=================================================================================== -// + unsigned long Map_Total_Points; // Êîëè÷åñòâî ïàð êîîðäèíàò -// Âûâåäåíûõ â ôàéë + // Âûâåäåíûõ â ôàéë unsigned long Map_Total_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ #define PRECISION 1e-8 @@ -69,22 +65,14 @@ Lon_met; Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); - ASSERT( - (Lon_met > lonSW || fabs(Lon_met - lonSW) < PRECISION) - && - (Lon_met < lonNE || fabs(Lon_met - lonNE) < PRECISION) - ); + ASSERT((Lon_met > lonSW || fabs(Lon_met - lonSW) < PRECISION) && (Lon_met < lonNE || fabs(Lon_met - lonNE) < PRECISION)); ASSERT((Lat_met > latSW || fabs(Lat_met - latSW) < PRECISION) && (Lat_met < latNE || fabs(Lat_met - latNE) < PRECISION)); } #endif -//=============================================================================== // Âûâîä êîîðäèíàò îáúåêòà // Âîçâðàùàåò num_array - ñêîëüêî çàïèñàíî ïàð êîîðäèíàò -//================================================= -short ReadMetric(unsigned short num_OBJ, CIngitMercatorProjection &Maps, double latSW, double lonSW, double latNE, double lonNE) -//================================================= -{ +short ReadMetric(unsigned short num_OBJ, CIngitMercatorProjection &Maps, double latSW, double lonSW, double latNE, double lonNE) { unsigned short Num_Segment; unsigned long pointer; long Offset_Segment; @@ -93,17 +81,16 @@ char X_byte, Y_byte; short Next_byte; - short num; + short num = 1; double aray_Lon[60000], aray_Lat[60000]; - //=============================================================================== - num = 1; // "Îáíóëÿåì" ïîðÿäêîâûé íîìåð ñåãìåíòà îáúåêòà. + unsigned short num_array = 0; // Óêàçàòåëü çàïèñè â ìàññèâå êîîðäèíàò unsigned short begin_seg; // short type_segment = 0x00; // Òèï ñåãìåíòà pointer = obj[num_OBJ].data; + // âûáèðàòü êîîðäèíàòû íà äëèíó next_byte - //=============================================================================== while (pointer < obj[num_OBJ].data + obj[num_OBJ].next_byte) { // Íîìåð Ñåãìåíòà memcpy(&Num_Segment, buf + pointer, 2); @@ -121,14 +108,13 @@ Metr_OBJ[num_array].nun_segment = Num_Segment; Metr_OBJ[num_array].num = num; #ifdef _DEBUG - checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); #endif begin_seg = num_array; num_array++; Map_Total_Segment++; - ; // Ñ÷åò÷èê âûâåäåíûõ Ñåãìåíòîâ + // Ñ÷åò÷èê âûâåäåíûõ Ñåãìåíòîâ Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò //------------------------------------------ Next_byte = buf[Offset_Segment++]; // ×èòàåì Êîë-âî ñëåäóþùèõ áàéò @@ -147,10 +133,8 @@ Metr_OBJ[num_array].nun_segment = Num_Segment; Metr_OBJ[num_array].num = num; #ifdef _DEBUG - checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); #endif - num_array++; Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò } @@ -167,10 +151,8 @@ Metr_OBJ[num_array].nun_segment = Num_Segment; Metr_OBJ[num_array].num = num; #ifdef _DEBUG - checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); #endif - num_array++; Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò } @@ -181,12 +163,9 @@ } else printf("Skip segment: %X, %X\n", Num_Segment, buf[pointer + 2]); // Êîíåö Öèêëà âûáîðêè ñëåäóþùèõ áàéò êîîðäèíàò. - //============================================= pointer += 2; - //short jj1=0; type_segment = buf[pointer]; Metr_OBJ[begin_seg].type = type_segment; - //============================================= // Îòáðàñûâàíèå ïîâòîðÿþùèõñÿ êîîðäèíàò //if (num_array > 1){ // if (Metr_OBJ[begin_seg].Lon == Metr_OBJ[num_array-1].Lon && @@ -317,18 +296,11 @@ exit(1); } } - //if (num_array > 1000){ - // printf ("%i\n", num_array); - // int ch = getch(); - //} return num_array; } -//================================ // ×òåíèå ôàéëà êàðòû -void ReadTableOBJ() -//================================ -{ +void ReadTableOBJ() { IngitTable iTab; IngitHeader ih; ih.Load(buf); //Çàãðóæàåì øàïêó êàðòû. @@ -349,11 +321,9 @@ Max_Num_OBJ = ih.NUM_OBJ; //!!! Íàäî áðàòü â áóôåðå...!!!! iTab.SearchOffset(buf); // Èùåì ñìåùåíèÿ äî òàáëèö - //============================== // Ïå÷àòàåì èíôîðìàöèþ î êàðòå. - if (comm_inf == 1) { + if (comm_inf == 1) ih.Print(stdout); - } if (comm_off == 2) { // Cìåùåíèÿ äî òàáëèö fprintf(stdout, "Offset Object: %X \n", OffsetOBJ); @@ -378,18 +348,12 @@ // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ ñòðóêòóðû îáúåêòîâ // Ñäåëàòü FREE!!! - obj = (h_object *) - s_malloc(sizeof(h_object) * (Max_Num_OBJ + 2)); - memset(obj, 0, sizeof(h_object)*(Max_Num_OBJ + 2)); - - //printf("size %i\n", sizeof(h_object)*Max_Num_OBJ); + obj = (h_object *)s_malloc(sizeof(h_object) * (Max_Num_OBJ + 2)); + memset(obj, 0, sizeof(h_object) * (Max_Num_OBJ + 2)); - //=============================================================================== // Íà÷àëî öèêëà ïåðåáîðà îáúåêòîâ - //=============================================================================== - //unsigned short NunObj; - //NunObj =1; - short ATR_cod; + + int ATR_cod; long PointerATR; for (unsigned long NunObj = 1; NunObj <= Max_Num_OBJ; NunObj++) { @@ -416,32 +380,7 @@ memcpy(buf_atr, buf + PointerATR, 2); buf_atr[2] = 0; PointerATR += 2; - sscanf(buf_atr, "%d", &ATR_cod); - if (!memcmp(buf_atr, "AR", 2) ) { - ATR_cod = 100; - } - if (!memcmp(buf_atr, "RJ", 2) ) { - ATR_cod = 101; - } - if (!memcmp(buf_atr, "AA", 2) ) { - ATR_cod = 102; - } - if (!memcmp(buf_atr, "ST", 2) ) { - ATR_cod = 103; - } - // SC - Ìàñøòàá - if (!memcmp(buf_atr, "SC", 2) ) { - ATR_cod = 104; - } - if (!memcmp(buf_atr, "GS", 2) ) { - ATR_cod = 105; - } - if (!memcmp(buf_atr, "FN", 2) ) { - ATR_cod = 106; - } - if (!memcmp(buf_atr, "PR", 2) ) { - ATR_cod = 107; - } + ATR_cod = attrToCode(buf_atr); obj[NunObj].atr_cod[ATR_cod] = (char *)(buf + PointerATR); while (buf[PointerATR] != 0) @@ -460,13 +399,12 @@ if (comm_off == 3) { printf ("; %X: %i (i) length TEXT+10\n", OffsetOBJ + obj[NunObj].next_byte + 7, NextByte2); printf ("; %X: ", OffsetOBJ + obj[NunObj].next_byte + 8); - for (short j1 = 0; j1 < 8; j1++) { + for (int j1 = 0; j1 < 8; j1++) printf("%.2X ", buf[OffsetOBJ + obj[NunObj].next_byte + 8 + j1]); - } printf ("\n"); if (buf[OffsetOBJ] == 6) { printf("; %X: ", OffsetOBJ + 22); - for (short j1 = 0; j1 < NextByte2 - 10; j1++) { + for (int j1 = 0; j1 < NextByte2 - 10; j1++) { ByteDos = buf[OffsetOBJ + 22 + j1]; printf("%c", DosToWin(ByteDos)); } @@ -480,10 +418,8 @@ obj[NunObj].data = OffsetOBJ + 7; // Çàïèñûâàåì Ñìåùåíèå äàííûõ îáúåêòà OffsetOBJ = OffsetOBJ + 7 + obj[NunObj].next_byte + NextByte2 + FLAG; // Âûâîä ïðîöåíòîâ. - if (comm_per == 1) { + if (comm_per == 1) printf ("%2.f%%\r", NunObj / (Max_Num_OBJ / 100.0)); - } } // Êîíåö öèêëà ïåðåáîðà îáúåêòîâ - //ch = getch(); } Index: common.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/common.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- common.cpp 5 May 2004 16:15:57 -0000 1.7 +++ common.cpp 5 May 2004 16:35:52 -0000 1.8 @@ -1,5 +1,6 @@ #include <stdlib.h> // äëÿ NULL #include <stdio.h> +#include <string.h> #include <ctype.h> #include "common.h" @@ -333,3 +334,28 @@ } return p; } + +int attrToCode(const char *buf_atr) { + int attrCode; + + sscanf(buf_atr, "%d", &attrCode); + if (memcmp(buf_atr, "AR", 2) == 0) + attrCode = 100; + if (memcmp(buf_atr, "RJ", 2) == 0) + attrCode = 101; + if (memcmp(buf_atr, "AA", 2) == 0) + attrCode = 102; + if (memcmp(buf_atr, "ST", 2) == 0) + attrCode = 103; + // SC - Ìàñøòàá + if (memcmp(buf_atr, "SC", 2) == 0) + attrCode = 104; + if (memcmp(buf_atr, "GS", 2) == 0) + attrCode = 105; + if (memcmp(buf_atr, "FN", 2) == 0) + attrCode = 106; + if (memcmp(buf_atr, "PR", 2) == 0) + attrCode = 107; + + return attrCode; +} Index: IngitHeader.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitHeader.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- IngitHeader.cpp 5 May 2004 15:33:19 -0000 1.2 +++ IngitHeader.cpp 5 May 2004 16:35:52 -0000 1.3 @@ -3,13 +3,8 @@ #include "IngitHeader.h" #include "cmap.h" - -//=================================================================================== // Èíôîðàìàöèÿ î ôàéëå êàðòû -//=================================================================================== -void IngitHeader::Print(FILE *fOut) -//=================================================================================== -{ +void IngitHeader::Print(FILE *fOut) { fprintf(fOut, "\n"); fprintf(fOut, "Map name........ %s\n", mapName); fprintf(fOut, "Graph table..... %s\n", klassName); @@ -25,10 +20,8 @@ fprintf(fOut, "Group number 4.. %d\n", Gr4_Num); fprintf(fOut, "Objects......... %i\n", NUM_OBJ); // Êîëè÷åñòâî Îáúåêòîâ fprintf(fOut, "Segments ....... %i\n", Max_Num_Metr); // Êîëè÷åñòâî Îáúåêòîâ Ãðàôèêè - //=================================================================================== + // Êîîðäèíàòû ðàìêè. ãðàäóñû, ìèíóòû, ñåêóíäû - //=================================================================================== - // //fprintf( fOut, "LAT_SouthWest=%09i LON_SouthWest=%09i ", LAT_SouthWest, LON_SouthWest); //fprintf( fOut, "LAT_SouthEast=%09i LON_SouthEast=%09i ", LAT_SouthEast, LON_SouthEast); //fprintf( fOut, "LAT_NorthEast=%09i LON_NorthEast=%09i ", LAT_NorthEast, LON_NorthEast); @@ -42,9 +35,7 @@ PrintLatDegrees(fOut, LAT_NorthEast); PrintLonDegrees(fOut, LON_NorthEast); fprintf(fOut, "\n"); - //=================================================================================== // Êîîðäèíàòû ðàìêè â ìåòðèêå - //=================================================================================== fprintf(fOut, "Metric map border [m]\n"); fprintf( fOut, "BottomLeft %.1f, %.1f\n", xBottomLeft / 10.0, yBottomLeft / 10.0); fprintf( fOut, "TopRight %.1f, %.1f\n", xTopRight / 10.0, yTopRight / 10.0); @@ -53,15 +44,8 @@ // PrintLonDegrees(fOut, xTopRight); // PrintLonDegrees(fOut, yTopRight); fprintf(fOut, "\n"); - // if (!strncmp ("PLAN", mapType,6) && N_Map != 2058 ){ - // printf ("Not support TOPO-plan maps\n"); - // exit(1); - // } } -//=================================================================================== -void IngitHeader::Load(BYTE *bufers) -//=================================================================================== -{ +void IngitHeader::Load(BYTE *bufers) { memcpy(this, bufers, 0xAF); /// îò íà÷àëà ôàéëà äî 0xAF... } Index: IngitHeader.h =================================================================== RCS file: /cvsroot/cmap/cmap/IngitHeader.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- IngitHeader.h 5 May 2004 15:33:19 -0000 1.4 +++ IngitHeader.h 5 May 2004 16:35:52 -0000 1.5 @@ -5,28 +5,15 @@ #include "common.h" - -//=================================================================================== -class IngitHeader - //=================================================================================== -{ +class IngitHeader { public: - /* - long LON_SouthWest, - LAT_SouthWest, - LON_NorthWest, - LAT_NorthWest, - LON_NorthEast, - LAT_NorthEast; - */ - //-------------------------------------------- long LON_SouthEast, LAT_SouthEast, LON_NorthEast, LAT_NorthEast, LON_SouthWest, LAT_SouthWest; - //-------------------------------------------- + short scale1, scale2, // èñõîäíûé ìàñøòàá = 1:(scale1*scale2) scaleX, // Êîîîðäèíàòà xTopRight â ìåòðèêå ôàéëà. scaleY; // yTopRight @@ -39,42 +26,41 @@ short _s8; - //-------------------------------------------- short Gr1_Num; // Ãðóïïîâîé íîìåð êàðòû 1 short Gr2_Num; // Ãðóïïîâîé íîìåð êàðòû 2 short Gr3_Num; // Ãðóïïîâîé íîìåð êàðòû 3 short Gr4_Num; // Ãðóïïîâîé íîìåð êàðòû 4 - //-------------------------------------------- + BYTE _n10; - //-------------------------------------------- + // ìåòðè÷åñêàÿ ðàìêà êàðòû [äì] - long xBottomLeft, // 0 - yBottomLeft, // 0 - xTopRight, // == xBottomRight - yTopRight, // == yTopLeft - xTopLeft, // 0 - yBottomRight, // 0 - _l_z_10; // always zero + long + xBottomLeft, // 0 + yBottomLeft, // 0 + xTopRight, // == xBottomRight + yTopRight, // == yTopLeft + xTopLeft, // 0 + yBottomRight, // 0 + _l_z_10; // always zero char _c_z_1; // always zero - //-------------------------------------------- + char mapName[13]; // Èìÿ êàðòû char klassName[13]; // îñíîâíàÿ ãðàô. òàáëèöà char mapType[5]; // îñíîâíîé êîäèôèêàòîð (áåç ðàñøèðåíèÿ .COD) short _s10, _s11; char kod [3]; char _str0[42]; - //-------------------------------------------- + short s_101; short s_102; short s_103; short s_104; - //-------------------------------------------- + short N_Map; // Íîìåð êàðòû short s_100; unsigned short Max_Num_Metr; // Êîëè÷åñòâî îáúåêòîâ â òàáëèöå ãðàôèêè unsigned short NUM_OBJ; // Êîëè÷åñòâî îáúåêòîâ short s_105; - //-------------------------------------------- public: void Load(BYTE *bufers); |
From: Denis P. <dy...@us...> - 2004-05-05 16:16:08
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20160 Modified Files: Geodesy.cpp Geodesy.h common.cpp common.h dbf.cpp Log Message: Fix formatting Index: Geodesy.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/Geodesy.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Geodesy.cpp 5 May 2004 15:33:18 -0000 1.5 +++ Geodesy.cpp 5 May 2004 16:15:57 -0000 1.6 @@ -1,69 +1,49 @@ #include "Geodesy.h" #include "IngitFile.h" -//=================================================================================== double IngitLat2Degrees(long degrees) { return (degrees / 360000.0) - 90.0; } -//=================================================================================== + double IngitLon2Degrees(long degrees) { return (degrees > -50000000) ? (degrees / 360000.0) : -(degrees / 360000.0); } -//=================================================================================== + double Degrees2Rads(double degrees) { - return degrees*Pi / 180.0; + return degrees * Pi / 180.0; } -//=================================================================================== + double Rads2Degrees(double rad) { - return rad*180.0 / Pi; + return rad * 180.0 / Pi; } -//================================ // Âû÷èñëåíèå ïëîùàäè ïîëèãîíà -double SQU_area (short n) -//================================ -{ +double SQU_area (int n) { double area = 0; - int i; double x, y; double x1, y1; - for (i = 0; i < n - 1; i++) { + for (int i = 0; i < n - 1; i++) { x = Metr_OBJ[i].Lon * Kx; y = Metr_OBJ[i].Lat * Ky; x1 = Metr_OBJ[i + 1].Lon * Kx; y1 = Metr_OBJ[i + 1].Lat * Ky; - //area += ((x * y1) - (y * x1))/2; area += ((y + y1) * (x - x1)) / 2; - - //printf ("%.1f %.1f\n", Metr_OBJ[i].Lon, Metr_OBJ[i].Lat); - //printf ("%f %f\n", x1, y1); - //printf ("(%i) %f %f\n", i, area, area/2); } - //printf ("%.1f %.1f\n", Metr_OBJ[i+1].Lon, Metr_OBJ[i+1].Lat); - //printf ("\n\n %f %f\n", area, area); return area; } -//================================ // Âû÷èñëåíèå äëèíû ïîëèãîíà -double LEN_area (short n, long NunObj) -//================================ -{ - int i; +double LEN_area (int n, int NunObj) { double x, y; double x1, y1; double len = 0; double area = 0; double area1 = 0; - //Metr_OBJ[i].Lon - //num_array - - - for (i = 0; i < n - 1; i++) { + for (int i = 0; i < n - 1; i++) { if (Metr_OBJ[i].type != 0 && i > 0) break; x = Metr_OBJ[i].Lon * Kx; @@ -73,43 +53,16 @@ len += sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1) ); - //area += ((y-y1)*(x+x1)); - // s:=s+(x[i]+x[i+1])*(y[i]-y[i+1]); - - //for i:=3 to n do - //s:=s+0.5*abs((x[i-1]-x[1])*(y[i]-y[1])- - // (x[i]-x[1])*(y[i-1]-y[1])); - //area += ((x+x1)*(y-y1)); - //Sum({Y(i)+Y(i+1)}*{X(i+1)-X(i)})/2 - area += ((y + y1) * (x - x1)); area1 += ((x + x1) * (y - y1)); - - //printf ("%f\n", (x+x1)*(y-y1)); - //printf ("x-x1 %f y-y1 %f\n", (x-x1), (y-y1) ); - //printf ("(%i) Len %f\n", i, len); - //ch = getch(); } - //printf ("\n N %i %s\n", n, obj[NunObj].atr_cod[9]); - //printf ("\n %f\n", len); - //printf ("%f\n", area/2); - //printf ("%f\n", area1/2); - //ch = getch(); return len; } -//=================================================================================== -CIngitMercatorProjection::CIngitMercatorProjection ( - //=================================================================================== - - double southParallel, - double northParallel, - double westMeridian, - double eastMeridian, - double mWidth, - double mHeight -) { +CIngitMercatorProjection::CIngitMercatorProjection(double southParallel, double northParallel, + double westMeridian, double eastMeridian, + double mWidth, double mHeight) { //Ellipsoid Krassowski 1940 a = 6378245.00m 1/f = 298.300 a = 6378245.00; // Áîëüøàÿ ïîëóîñü [m] f = 1 / 298.300; // Ñæàòèå @@ -172,12 +125,9 @@ //printf ("********************* scaleX %f scaleY %f\n", // (xTopRight/10.0/scaleX)*x1/mWidth, (yTopRight/10.0/scaleY) * y1/mHeight); } -//=================================================================================== -/// Ïåðåâîä èç Lat / Lon â ìåòðè÷åñêèå êîîðäèíàòû -void CIngitMercatorProjection::Forward(double lat, double lon, double *xP, double *yP) -//=================================================================================== -{ +// Ïåðåâîä èç Lat / Lon â ìåòðè÷åñêèå êîîðäèíàòû +void CIngitMercatorProjection::Forward(double lat, double lon, double *xP, double *yP) { //Forward calculation for: //Latitude 53o00'00.00"N = 0.9250245 rad //Longitude 53o00'00.00"E = 0.9250245 rad @@ -195,13 +145,8 @@ //Northing N = 5171848.07 m } -//=================================================================================== -/// Ïåðåâîä èç ìåòðè÷åñêèõ êîîðäèíàò X,Y â Lat / Lon -//=================================================================================== - -void CIngitMercatorProjection::Reverse(double x, double y, double *latP, double *lonP) -//=================================================================================== -{ +// Ïåðåâîä èç ìåòðè÷åñêèõ êîîðäèíàò X,Y â Lat / Lon +void CIngitMercatorProjection::Reverse(double x, double y, double *latP, double *lonP) { //Reverse calculation for same easting and northing first gives : // printf("X Y: %.1fx%.1f\n", x, y); @@ -229,11 +174,7 @@ //Longitude = 53o00'00.000"E = 0.9250245 rad } -//======================================== - -WGS84SK42Projection::WGS84SK42Projection (double H1) -//======================================== -{ +WGS84SK42Projection::WGS84SK42Projection (double H1) { ro = 206264.8062; // ×èñëî óãëîâûõ ñåêóíä â ðàäèàíå //Ýëëèïñîèä Êðàñîâñêîãî (Ïóëêîâî 1942) @@ -271,23 +212,18 @@ // Äèôôåðåíöèàëüíîå ðàçëè÷èå ìàñøòàáîâ ms = -0.12e-6; //ms = (0-0,12)*0,000001; // Exel - } -//=================================================================================== -// 55.601493, 36.420425, +// 55.601493, 36.420425, void WGS84SK42Projection::Convert(double Bd, double Ld, double H, - double *Lon, double *Lat) -//=================================================================================== -{ + double *Lon, double *Lat) { double B, L, M, N, dB, dL; - //double dH; - //=================================================================================== + // Lon B = Bd * Pi / 180; L = Ld * Pi / 180; Index: Geodesy.h =================================================================== RCS file: /cvsroot/cmap/cmap/Geodesy.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Geodesy.h 5 May 2004 15:33:19 -0000 1.3 +++ Geodesy.h 5 May 2004 16:15:57 -0000 1.4 @@ -7,20 +7,15 @@ const double HalfPi = Pi / 2; const double E = log(1.); -double SQU_area (short n); -double LEN_area (short n, long NunObj); +double SQU_area (int n); +double LEN_area (int n, int NunObj); -//=================================================================================== double IngitLat2Degrees(long degrees); double IngitLon2Degrees(long degrees); double Degrees2Rads(double degrees); double Rads2Degrees(double rad); - -//=================================================================================== -class CIngitMercatorProjection - //=================================================================================== -{ +class CIngitMercatorProjection { public: CIngitMercatorProjection(double southParallel, double northParallel, double westMeridian, double eastMeridian, @@ -43,10 +38,7 @@ double k1x, k1y; }; -//======================================================================== -class WGS84SK42Projection - //======================================================================== -{ +class WGS84SK42Projection { public: WGS84SK42Projection (double H); void Convert(double Bd, double Ld, double H, double *xP, double *yP); Index: dbf.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/dbf.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- dbf.cpp 5 May 2004 15:33:19 -0000 1.12 +++ dbf.cpp 5 May 2004 16:15:57 -0000 1.13 @@ -88,9 +88,8 @@ printf("Unable to get size of %s\n\n", file_dbf); exit(1); } - if (comm_dbf == 1) { + if (comm_dbf == 1) printf("DBF file size: %i bytes\n", file_dbf_size); - } close (f_DBF); FILE *inDBF = fopen(file_dbf, "rb"); //=================================================================================== @@ -116,9 +115,8 @@ printf("Filed num....... %i\n", FIELD_NUM); } long count = FIELD_NUM; - if (count > 12) { + if (count > 12) count = 12; - } //×èòàåì íàçâàíèÿ ñòîëáöîâ. int i = 0; @@ -181,9 +179,8 @@ i = descrarray[0].fieldleng; memcpy (bufsrt, bufDBF + pointerDBF, i); bufsrt[i] = 0; - if (sscanf(bufsrt, "%i", &do_export) == -1 ) { + if (sscanf(bufsrt, "%i", &do_export) == -1) do_export = 0; - } file_cod1[j].do_export = do_export; //Ñòîëáåö OBJECT_COD @@ -191,13 +188,13 @@ i = descrarray[1].fieldleng; memcpy (bufsrt, bufDBF + pointerDBF, i); bufsrt[i] = 0; + // Åñëè ïóñòàÿ ñòðîêà òî ïèøåì - 0 if (sscanf(bufsrt, "%8s", file_cod1[j].object_cod) == -1 ) { - // Åñëè ïóñòàÿ ñòðîêà òî ïèøåì - 0 - file_cod1[j].object_cod[0] = 0; file_cod1[j].do_export = 0; + file_cod1[j].object_cod[0] = 0; } // Ïðîâåðêà íà óäàëåííûé - if ( del[0] == '*') { + if (del[0] == '*') { file_cod1[j].do_export = 0; file_cod1[j].object_cod[0] = 0; } @@ -205,7 +202,7 @@ // Ñòîëáåö CHR_RUS pointerDBF = pointerDBF + i; i = descrarray[2].fieldleng; - memcpy (file_cod1[j].CHR_RUS, bufDBF + pointerDBF, i); + memcpy(file_cod1[j].CHR_RUS, bufDBF + pointerDBF, i); file_cod1[j].CHR_RUS[i] = 0; // Ñòîëáåö CHR_ENG @@ -215,58 +212,52 @@ // Ñòîëáåö RGN_P pointerDBF = pointerDBF + i; i = descrarray[4].fieldleng; - memcpy (bufsrt, bufDBF + pointerDBF, i); + memcpy(bufsrt, bufDBF + pointerDBF, i); bufsrt[i] = 0; - if (sscanf(bufsrt, "%x", &file_cod1[j].RGN_point) == -1 ) { + if (sscanf(bufsrt, "%x", &file_cod1[j].RGN_point) == -1) file_cod1[j].RGN_point = -1; - } // Ñòîëáåö TYPE_P pointerDBF = pointerDBF + i; i = descrarray[5].fieldleng; memcpy (bufsrt, bufDBF + pointerDBF, i); bufsrt[i] = 0; - if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_point) == -1 ) { + if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_point) == -1) file_cod1[j].TYPE_point = -1; - } // Ñòîëáåö TYPE_L pointerDBF = pointerDBF + i; i = descrarray[6].fieldleng; memcpy (bufsrt, bufDBF + pointerDBF, i); bufsrt[i] = 0; - if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_line) == -1 ) { + if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_line) == -1) file_cod1[j].TYPE_line = -1; - } // Ñòîëáåö TYPE_A pointerDBF = pointerDBF + i; i = descrarray[7].fieldleng; memcpy (bufsrt, bufDBF + pointerDBF, i); bufsrt[i] = 0; - if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_poly) == -1 ) { + if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_poly) == -1) file_cod1[j].TYPE_poly = -1; - } // Ñòîëáåö LAYER_MIN pointerDBF = pointerDBF + i; i = descrarray[8].fieldleng; memcpy (bufsrt, bufDBF + pointerDBF, i); bufsrt[i] = 0; - if (sscanf(bufsrt, "%d", &file_cod1[j].img_layer_min) == -1 ) { + if (sscanf(bufsrt, "%d", &file_cod1[j].img_layer_min) == -1) file_cod1[j].img_layer_min = 0; - } // Ñòîëáåö LAYER_MAX pointerDBF = pointerDBF + i; i = descrarray[9].fieldleng; memcpy (bufsrt, bufDBF + pointerDBF, i); bufsrt[i] = 0; - if (sscanf(bufsrt, "%d", &file_cod1[j].img_layer_max) == -1 ) { + if (sscanf(bufsrt, "%d", &file_cod1[j].img_layer_max) == -1) file_cod1[j].img_layer_max = 0; - } - if (do_export != 0 ) { + if (do_export != 0) { //printf("%i ", file_cod1[j].do_export); if ( comm_dbf == 1) { printf("%s ", file_cod1[j].object_cod); Index: common.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/common.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- common.cpp 5 May 2004 15:33:19 -0000 1.6 +++ common.cpp 5 May 2004 16:15:57 -0000 1.7 @@ -28,20 +28,18 @@ short i = 0; while (str_dos[i] != 0 ) { str_win[i] = DosToWin(str_dos[i]); - if (i != 0 && str_dos[i] > 127) { + if (i != 0 && str_dos[i] > 127) // ïåðåâîä â âåðõíèé ðåãèñòð str_win[i] = str_win[i] | 0X20; - } // ïåðåâîä â âåðõíèé ðåãèñòð i++; } str_win[i] = 0; } void RusToEng (char *str, char *str_rus) { - short i = 0; - short j = 0; + int i = 0; + int j = 0; while (str_rus[i] != 0) { - switch (str_rus[i]) { case 'À': str[j++] = 'A'; @@ -335,4 +333,3 @@ } return p; } - Index: common.h =================================================================== RCS file: /cvsroot/cmap/cmap/common.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- common.h 5 May 2004 15:33:19 -0000 1.7 +++ common.h 5 May 2004 16:15:57 -0000 1.8 @@ -3,7 +3,7 @@ #include <assert.h> -#define BYTE unsigned char +typedef unsigned char BYTE; //#ifdef _DEBUG #define ASSERT assert |
From: Denis P. <dy...@us...> - 2004-05-05 16:07:05
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18179 Modified Files: PolishFormat.cpp cmap.cpp cmap.h Log Message: Fix formatting Spell vars Fix memcmp usage Index: cmap.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/cmap.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- cmap.cpp 5 May 2004 15:33:19 -0000 1.30 +++ cmap.cpp 5 May 2004 16:06:56 -0000 1.31 @@ -35,39 +35,41 @@ char FileM[256]; int n_gct = 0; -BYTE comm_atr = 0, - comm_seg = 0, - comm_layer = 0, - comm_cute = 0, - comm_feet = 0, - comm_city = 0, - comm_sel = 0, - comm_del = 0, - comm_aff = 0, - comm_dos = 0, - comm_met = 0, - comm_std = 0, - comm_dbf = 0, - comm_dbf1 = 0, - comm_inf = 0, - comm_rus = 0, - comm_polylinesNamesToUpperAndTransliterate = 0, - comm_gps = 0, - comm_shp = 0, - comm_gwgf = 0, - comm_off = 0, - comm_per = 0, - comm_help = 0, - comm_ozi = 0, - comm_pcx = 0, - comm_gt = 0, - comm_nowgs = 0, - comm_poly = 0; +BYTE + comm_atr = 0, + comm_seg = 0, + comm_layer = 0, + comm_cut = 0, + comm_feet = 0, + comm_city = 0, + comm_sel = 0, + comm_del = 0, + comm_aff = 0, + comm_dos = 0, + comm_met = 0, + comm_std = 0, + comm_dbf = 0, + comm_dbf1 = 0, + comm_inf = 0, + comm_rus = 0, + comm_polylinesNamesToUpperAndTransliterate = 0, + comm_gps = 0, + comm_shp = 0, + comm_gwgf = 0, + comm_off = 0, + comm_per = 0, + comm_help = 0, + comm_ozi = 0, + comm_pcx = 0, + comm_gt = 0, + comm_nowgs = 0, + comm_poly = 0; -double Cute_Lon1, -Cute_Lat1, -Cute_Lon2, -Cute_Lat2; +double + Cut_Lon1, + Cut_Lat1, + Cut_Lon2, + Cut_Lat2; unsigned long Total_Points; unsigned long Total_Poliline; @@ -94,10 +96,8 @@ fprintf(outIMG, ";\n; Created by %s\n;\n\n\n", cmapVersion); if (NameMap[0] != '.') { - int i; - for (i = 0; NameMap[i] == '.'; i++) + for (unsigned int i = 0; NameMap[i] == '.' || NameMap[i] == 0 ; i++) ; - NameMap[i] = 0; } @@ -123,37 +123,27 @@ fprintf(outIMG, "[END-IMG ID]\n\n"); } -//============================================================= -void dosprint (BYTE *str) -//============================================================= -{ - short i = 0; - while (str[i] != 0 ) { - if (str[i] > 191 && str[i] < 240) { +void dosprint (BYTE *str) { + for (unsigned int i = 0; str[i] != 0; i++) { + if (str[i] > 191 && str[i] < 240) str[i] = str[i] - 64; - } - if (str[i] > 239) { + if (str[i] > 239) str[i] = str[i] - 16; - } - i++; } printf("%s", str); } -//============================================================================== + int _setargv() { return 0; /* ïóñòàÿ ôóíêöèÿ */ } + int _seteuv() { return 0; /* ïóñòàÿ ôóíêöèÿ */ } -//============================ Íà÷àëî ============================ -int main( short argc, char *argv[]) -//int main( ) -//============================================================================== -{ + +int main(int argc, char *argv[]) { char str_not_support[] = "Not supported "; #ifdef WIN32 - char str_Press_any_key[] = "Press any key..."; char ch; #endif @@ -209,58 +199,52 @@ "\n" "\n" }; - //============================================================= + // Ðàçáîð êîìàíäíîé ñòðîêè char in_dir[256] = "", - out_dir[256] = ""; + out_dir[256] = ""; char dat_file[256] = ""; char dbf_file[256] = ""; - short argv_in_dir = 0, - argv_out_dir = 0, - argv_dat_file = 0, - argv_dbf_file = 0, - argv_cute = 0; + int argv_in_dir = 0, + argv_out_dir = 0, + argv_dat_file = 0, + argv_dbf_file = 0, + argv_cut = 0; - //============================================================= // Åñëè íåò êëþ÷åé - âûâîäèì ñïðàâêó if (argc == 1) { printf("%s\n%s\n\n", cmapVersion, cmapDescription); // Ïå÷àòü âåðñèè ïðîãðàììû dosprint (str_help); #ifdef WIN32 - printf("%s", str_Press_any_key); ch = getch(); #endif - - exit (0); + exit(0); } + int i = 0; if (strcasecmp(".gem", argv[1] + strlen(argv[1]) - 4) == 0) { strcpy(FileMap[1], argv[1]); - short n_sl = 0; - while (FileMap[1][i++] != 0) { - if (FileMap[1][i] == PATH_SEPARATOR) { + int n_sl = 0; + while (FileMap[1][i++] != 0) + if (FileMap[1][i] == PATH_SEPARATOR) n_sl = i + 1; - } - } strcpy(in_dir, argv[1]); - while (in_dir[i++] != 0) { - if (in_dir[i] == PATH_SEPARATOR) { + while (in_dir[i++] != 0) + if (in_dir[i] == PATH_SEPARATOR) n_sl = i + 1; - } - } in_dir[n_sl] = 0; - strcpy (FileMap[1], FileMap[1] + n_sl); - strcpy (NameMap, FileMap[1]); + strcpy(FileMap[1], FileMap[1] + n_sl); + strcpy(NameMap, FileMap[1]); //printf ("%s\n",FileMap[1]); //ch = getch(); n_gct = 1; } - //============================================================= + if (strcasecmp(".gct", argv[1] + strlen(argv[1]) - 4) == 0) { FILE *inGCT = fopen(argv[1], "r"); - if (!inGCT ) { + if (!inGCT) { printf("Unable to open .gct file.\n"); exit(1); } @@ -270,7 +254,7 @@ else n_gct++; - if (!memcmp("LAYERS", FileMap[0], 7)) { + if (memcmp("LAYERS", FileMap[0], 7 == 0)) { for (int j = 1; j < n_gct; j++) { strcpy (FileMap[j], FileMap[j] + 1); FileMap[j][strlen(FileMap[j]) - 1] = 0; @@ -278,15 +262,13 @@ //ch = getch(); } n_gct--; - short i = 0; - short n_sl = 0; + i = 0; + int n_sl = 0; strcpy(in_dir, argv[1]); - while (in_dir[i++] != 0) { - if (in_dir[i] == PATH_SEPARATOR) { + while (in_dir[i++] != 0) + if (in_dir[i] == PATH_SEPARATOR) n_sl = i + 1; - } - } in_dir[n_sl] = 0; } else { printf("Error format .gct file.\n"); @@ -296,116 +278,84 @@ for (i = 1; i < argc; i++) { //============================================================= - if (!memcmp("-?", argv[i], 3) ) { + if (memcmp("-?", argv[i], 3) == 0) comm_help = 1; - } // Help - //if (!memcmp("ozi", argv[i], 4) ){comm_ozi = 1;} // Âûâîä PLT - if (!memcmp("gps", argv[i], 4) ) { + //if (memcmp("ozi", argv[i], 4) == 0) // Âûâîä PLT + // comm_ozi = 1; + if (memcmp("gps", argv[i], 4) == 0) // Âûâîä IMG comm_gps = 1; - } // Âûâîä IMG - if (!memcmp("shp", argv[i], 4) ) { + if (memcmp("shp", argv[i], 4) == 0) // Âûâîä SHP comm_shp = 1; - } // Âûâîä SHP - if (!memcmp("pcx", argv[i], 4) ) { + if (memcmp("pcx", argv[i], 4) == 0) // Âûâîä PCX5 comm_pcx = 1; - } // Âûâîä PCX5 - if (!memcmp("gwgf", argv[i], 5) ) { + if (memcmp("gwgf", argv[i], 5) == 0) // Âûâîä êîîðäèíàò â ìåòðèêå comm_gwgf = 1; - } // Âûâîä êîîðäèíàò â ìåòðèêå - if (!memcmp("-off", argv[i], 5) ) { + if (memcmp("-off", argv[i], 5) == 0) { // Âûâîä ÂÑÅÃÎ comm_off = 2; - comm_inf = 1; // Âûâîä ÂÑÅÃÎ + comm_inf = 1; comm_gt = 1; } //============================================================= - if (!memcmp("-layer", argv[i], 5)) { + if (memcmp("-layer", argv[i], 5) == 0) // Çàïðåò AUTO Layer comm_layer = 1; - } // Çàïðåò AUTO Layer - if (!memcmp("-std", argv[i], 5) ) { + if (memcmp("-std", argv[i], 5) == 0) // Âûâîä íà ýêðàí comm_std = 1; - } // Âûâîä íà ýêðàí - if (!memcmp("-city1", argv[i], 6) ) { + if (memcmp("-city1", argv[i], 6) == 0) // Òî÷êà comm_city = 1; - } // Òî÷êà - if (!memcmp("-city2", argv[i], 6) ) { + if (memcmp("-city2", argv[i], 6) == 0) // Òî÷êà è Ïîëèãîí comm_city = 2; - } // Òî÷êà è Ïîëèãîí - if (!memcmp("-city3", argv[i], 6) ) { + if (memcmp("-city3", argv[i], 6) == 0) // Òî÷êà è Ïîëèãîí, Ëèíèÿ comm_city = 3; - } // Òî÷êà è Ïîëèãîí, Ëèíèÿ - if (!memcmp("-feet", argv[i], 5) ) { + if (memcmp("-feet", argv[i], 5) == 0) // Âûâîä âûñîò â ôóòàõ comm_feet = 1; - } // Âûâîä âûñîò â ôóòàõ - if (!memcmp("-cute:", argv[i], 6) ) { - comm_cute = 6; - } // Îáðåçàíèå - if (!memcmp("-cut:", argv[i], 5) ) { - comm_cute = 5; - } // Îáðåçàíèå - if (!memcmp("-met", argv[i], 5) ) { + if (memcmp("-cute:", argv[i], 6) == 0) // Îáðåçàíèå + comm_cut = 6; + if (memcmp("-cut:", argv[i], 5) == 0) // Îáðåçàíèå + comm_cut = 5; + if (memcmp("-met", argv[i], 5) == 0) // Çàïðåò âûâîäà ìåòðèêè // !!!! íå èñïîëüçóåòñÿ comm_met = 1; - } // Çàïðåò âûâîäà ìåòðèêè // !!!! íå èñïîëüçóåòñÿ - if (!memcmp("-atr", argv[i], 5) ) { + if (memcmp("-atr", argv[i], 5) == 0) // Âûâîä àòðèáóòîâ îáúåêòà - ON comm_atr = 1; - } // Âûâîä àòðèáóòîâ îáúåêòà - ON - if (!memcmp("-seg", argv[i], 5) ) { + if (memcmp("-seg", argv[i], 5) == 0) // Âûâîä èíôîðìàöèè î ñåãìåíòàõ ëèíèé è ïîëèãîíîâ comm_seg = 1; - } // Âûâîä èíôîðìàöèè î ñåãìåíòàõ ëèíèé è ïîëèãîíîâ - if (!memcmp("-dos", argv[i], 5) ) { + if (memcmp("-dos", argv[i], 5) == 0) // Çàïðåò DosToWin // !!!! íå èñïîëüçóåòñÿ comm_dos = 1; - } // Çàïðåò DosToWin // !!!! íå èñïîëüçóåòñÿ - if (!memcmp("-rus", argv[i], 5) ) { + if (memcmp("-rus", argv[i], 5) == 0) // Âûâîä Ðóññêèõ Íàçâàíèé comm_rus = 1; - } // Âûâîä Ðóññêèõ Íàçâàíèé - if (!memcmp("-eng-lines", argv[i], 11) ) { + + // Ïåðåâîäèòü íàçâàíèÿ ëèíåéíûõ îáúåêòîâ â âåðõíèé ðåãèñòð è òðàíñëèòåðèðîâàòü + if (memcmp("-eng-lines", argv[i], 11) == 0) comm_polylinesNamesToUpperAndTransliterate = 1; - } // Äîáàâëÿòü â íàçâàíèÿ ëèíåéíûõ îáúåêòîâ â âåðõíèé ðåãèñòð è òðàíñëèòåðèðîâàòü - if (!memcmp("-nowgs", argv[i], 7)) { + if (memcmp("-nowgs", argv[i], 7) == 0) // Çàïðåò WGS-84 comm_nowgs = 1; - } // Çàïðåò WGS-84 - if (!memcmp("-inf", argv[i], 5) ) { + if (memcmp("-inf", argv[i], 5) == 0) // Îòêðûòü INFO comm_inf = 1; - } // Îòêðûòü INFO - if (!memcmp("-dbf", argv[i], 5) ) { + if (memcmp("-dbf", argv[i], 5) == 0) // ïîêàçàòü âûáðàíûå â DBF comm_dbf = 1; - } // ïîêàçàòü âûáðàíûå â DBF - if (!memcmp("-dbf1", argv[i], 6) ) { + if (memcmp("-dbf1", argv[i], 6) == 0) comm_dbf1 = 1; - } - if (!memcmp("-sel", argv[i], 5) ) { + if (memcmp("-sel", argv[i], 5) == 0) // Âûâîä òîëüêî âûäåëåíûõ îáúåêòîâ // !!!! íå èñïîëüçóåòñÿ comm_sel = 1; - } // Âûâîä òîëüêî âûäåëåíûõ îáúåêòîâ // !!!! íå èñïîëüçóåòñÿ - if (!memcmp("-del", argv[i], 5) ) { + if (memcmp("-del", argv[i], 5) == 0) // Ñáîð ñâîáîäíûõ ñåãìåíòîâ // !!!! íå èñïîëüçóåòñÿ comm_del = 1; - } // Ñáîð ñâîáîäíûõ ñåãìåíòîâ // !!!! íå èñïîëüçóåòñÿ - if (!memcmp("-%%", argv[i], 4) ) { + if (memcmp("-%%", argv[i], 4) == 0) // Ââûâîä %% comm_per = 1; - } // Ââûâîä %% - if (!memcmp("-gt", argv[i], 4) ) { + if (memcmp("-gt", argv[i], 4) == 0) // Info î Ãðàô. òàáë. comm_gt = 1; - } // Info î Ãðàô. òàáë. - //============================================================= - if (!memcmp("-in:", argv[i], 4) ) { + + if (memcmp("-in:", argv[i], 4) == 0) // !!!! íå èñïîëüçóåòñÿ argv_in_dir = i; - } // !!!! íå èñïîëüçóåòñÿ - if (!memcmp("-out:", argv[i], 5) ) { + if (memcmp("-out:", argv[i], 5) == 0) argv_out_dir = i; - } // - if (!memcmp("-dat:", argv[i], 5) ) { + if (memcmp("-dat:", argv[i], 5) == 0) argv_dat_file = i; - } // - if (!memcmp("-dbf:", argv[i], 5) ) { + if (memcmp("-dbf:", argv[i], 5) == 0) argv_dbf_file = i; - } // - if (!memcmp("-cute:", argv[i], 5)) { - argv_cute = i; - } // - if (!memcmp("-cut:", argv[i], 4)) { - argv_cute = i; - } // - - //============================================================= + if (memcmp("-cute:", argv[i], 5) == 0) + argv_cut = i; + if (memcmp("-cut:", argv[i], 4) == 0) + argv_cut = i; } //============================================================= // Êëþ÷è åñòü. @@ -415,81 +365,79 @@ printf("%s\n%s\n\n", cmapVersion, cmapDescription); // Ïå÷àòü âåðñèè ïðîãðàììû dosprint (str_help); #ifdef WIN32 - printf("%s", str_Press_any_key); ch = getch(); #endif - exit (0); } - //if (argv_in_dir != 0) { // Âõîäíîé êàòàëîã êàðò - // memcpy (in_dir, argv[argv_in_dir]+4, strlen(argv[argv_in_dir])-4); - // printf ("Input DIR: %s\n", in_dir); - //} + if (argv_out_dir != 0) { // Âûõîäíîé êàòàëîã êàðò memcpy (out_dir, argv[argv_out_dir] + 5, strlen(argv[argv_out_dir]) - 5); printf ("Output DIR: %s\n", out_dir); } + if (argv_dat_file != 0) { // Èìÿ óïðàâëÿþùåãî "cmap.dat" ôàéëà. memcpy (dat_file, argv[argv_dat_file] + 5, strlen(argv[argv_dat_file]) - 5); printf ("DAT file: %s\n", dat_file); } + if (argv_dbf_file != 0) { // Èìÿ óïðàâëÿþùåãî DBF ôàéëà. memcpy (dbf_file, argv[argv_dbf_file] + 5, strlen(argv[argv_dbf_file]) - 5); printf ("DBF file: %s\n", dbf_file); } - if (argv_cute != 0) { // Îáðåçàíèå + + if (argv_cut != 0) { // Îáðåçàíèå printf ("Border cut:\n"); - Cute_Lon1 = atof(argv[argv_cute] + comm_cute); - char *p = strchr(argv[argv_cute] + comm_cute, ';'); + Cut_Lon1 = atof(argv[argv_cut] + comm_cut); + char *p = strchr(argv[argv_cut] + comm_cut, ';'); if (p != NULL) { - Cute_Lat1 = atof(p + 1); + Cut_Lat1 = atof(p + 1); p = strchr(p + 1, ';'); if (p != NULL) { - Cute_Lon2 = atof(p + 1); + Cut_Lon2 = atof(p + 1); p = strchr(p + 1, ';'); if (p != NULL) - Cute_Lat2 = atof(p + 1); + Cut_Lat2 = atof(p + 1); } } - printf ("%.6f %.6f\n", Cute_Lon1, Cute_Lat1); - printf ("%.6f %.6f\n\n", Cute_Lon2, Cute_Lat2); - + printf ("%.6f %.6f\n", Cut_Lon1, Cut_Lat1); + printf ("%.6f %.6f\n\n", Cut_Lon2, Cut_Lat2); } - if (comm_gps == 1) { // Âûâîä cGPSmap + + if (comm_gps == 1) // Âûâîä cGPSmap printf ("Make cGPSmap files...\n"); - } + if (comm_shp == 1) { // â ôîðìàò SHP printf ("%sSHP.\n", str_not_support); exit (0); } + if (comm_pcx == 1) { // â ôîðìàò PCX5 printf ("%s %sPCX5.\n", cmapVersion, str_not_support); exit (0); } + if (comm_gwgf == 1) { // â ôîðìàò GWGF printf ("%sGWGF.\n", str_not_support); exit (0); } + if (comm_ozi + comm_gps == 0) { printf ("Bad command.\n"); exit (0); } char buf_str[256]; - //========================================================== // Îòêðûòèå ôàéëîâ - FILE *outIMG; - if ( comm_std == 0) { + if (comm_std == 0) { strcpy (FileMaps1, FileMap[1]); strcpy (buf_str, out_dir); ASSERT(strlen(buf_str) > 0); - if (buf_str[strlen(buf_str) - 1] != PATH_SEPARATOR) { + if (buf_str[strlen(buf_str) - 1] != PATH_SEPARATOR) strcat (buf_str, PATH_SEPARATOR_S); - } strcat (buf_str, FileMaps1); strcpy(FileMaps1, buf_str); // FileMaps - âõîäíîé FileMaps1[strlen(FileMaps1) - 3] = 'm'; @@ -502,15 +450,13 @@ exit(1); } printf ("Output file %s\n" , FileMaps1); - } else { + } else outIMG = stdout; - } - //========================================================== + FILE *inHead = fopen("header.txt", "r"); int buf_header; if (!inHead) { printf("header.txt: File not found.\n"); - HeaderIMG (outIMG, cmapVersion, NameMap); } else { fprintf (outIMG, ";\n; Created by %s\n;\n\n\n", cmapVersion); @@ -526,7 +472,6 @@ strcpy(FileIMG, FileMaps); // Äëÿ IMG strcpy (buf_str, in_dir); - //if (buf_str[strlen(buf_str)] !='\\') {strcat (buf_str, "\\");} strcat (buf_str, FileMaps); strcpy(FileMaps, buf_str); // FileMaps - âõîäíîé @@ -544,8 +489,8 @@ printf("\nLoading file: %s\n", FileMaps); printf("Size: %i bytes\n", FileSize); close (inFile); + FILE *inMaps = fopen(FileMaps, "rb"); - //=================================================================================== OffsetOBJ = 0; Offset_Metr = 0; Offset_Grapf_Tab = 0; @@ -560,7 +505,7 @@ N_Poliline = 0; N_Points = 0; N_Other = 0; - //=============================================== + // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ ôàéëà êàðòû. // Free â êîíöå ReadTableOBJ buf = (BYTE *)s_malloc(FileSize); @@ -584,30 +529,24 @@ BYTE xorKey = 0; unsigned long k; - //xorKey = buf[0x6d]^0; //×èòàåì XOR - // xorKey = buf[0x90]^0; //×èòàåì XOR - for (k = 0; k < 16; k++) { + for (k = 0; k < 16; k++) xorKey ^= buf[FileSize - 50 + k]; - } - for (k = 0; k < FileSize; k++) { + for (k = 0; k < FileSize; k++) buf[k] ^= xorKey; - } printf("Searching objects...\n"); - //printf("%i\n", xorKey); - //=============================================== ReadTableOBJ(); - if (Len_code == 8) { + if (Len_code == 8) Read_DBF("topo.dbf"); - } - if (Len_code == 2) { + + if (Len_code == 2) Read_DBF("plan.dbf"); - } + if (Len_code == 6) { printf("Marine maps are not supported"); exit (1); } - //=============================================== + Metr_OBJ = (cord_object *)s_malloc(sizeof(cord_object) * 65536); Export_IMG (outIMG); @@ -632,7 +571,7 @@ Total_Poliline = Total_Poliline + N_Poliline; Total_Poligon = Total_Poligon + N_Poligon; } - if ( comm_std == 1) + if (comm_std == 1) fclose(outIMG); printf("\nEnd export.\n\n"); @@ -642,13 +581,10 @@ printf("Polygons.... %i\n", Total_Poligon); printf ("\nCreated file: %s\n" , FileMaps1); - if (comm_nowgs == 0) { + if (comm_nowgs == 0) printf ("(WGS 84)\n"); - } else { + else printf ("(Pulkovo 1942)\n"); - } return 0; } - - Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- PolishFormat.cpp 5 May 2004 15:33:19 -0000 1.19 +++ PolishFormat.cpp 5 May 2004 16:06:56 -0000 1.20 @@ -183,17 +183,15 @@ //} //========================================================== // Îáðåçàíèå ïî ðàìêå - if (comm_cute != 0) { + if (comm_cut != 0) { for (i = 0; i < num_array; i++) { Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); Lon_pul = Rads2Degrees(Lon_met); // Y Lat_pul = Rads2Degrees(Lat_met); // X - if (Lon_pul < Cute_Lon1 || Lat_pul < Cute_Lat1 ) { + if (Lon_pul < Cut_Lon1 || Lat_pul < Cut_Lat1 ) obj[NunObj].Cod[0] = 'D'; - } - if (Lon_pul > Cute_Lon2 || Lat_pul > Cute_Lat2 ) { + if (Lon_pul > Cut_Lon2 || Lat_pul > Cut_Lat2 ) obj[NunObj].Cod[0] = 'D'; - } } } //========================================================== Index: cmap.h =================================================================== RCS file: /cvsroot/cmap/cmap/cmap.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- cmap.h 5 May 2004 15:33:19 -0000 1.5 +++ cmap.h 5 May 2004 16:06:56 -0000 1.6 @@ -2,21 +2,22 @@ #define __CMAP_CMAP_H__ //=================================================================================== -extern double Cute_Lon1, - Cute_Lat1, - Cute_Lon2, - Cute_Lat2; +extern double + Cut_Lon1, + Cut_Lat1, + Cut_Lon2, + Cut_Lat2; //=================================================================================== extern BYTE - comm_atr , - comm_seg , + comm_atr, + comm_seg, comm_layer, - comm_cute , - comm_feet , - comm_city , + comm_cut, + comm_feet, + comm_city, comm_sel, - comm_del , + comm_del, comm_aff, comm_dos, comm_met, @@ -34,7 +35,7 @@ comm_help, comm_ozi, comm_pcx, - comm_gt , + comm_gt, comm_nowgs, comm_poly; |
From: Denis P. <dy...@us...> - 2004-05-05 15:33:28
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10312 Modified Files: Geodesy.cpp Geodesy.h IngitFile.cpp IngitFile.h IngitHeader.cpp IngitHeader.h IngitTable.cpp IngitTable.h PolishFormat.cpp PolishFormat.h cmap.cpp cmap.h common.cpp common.h dbf.cpp dbf.h Log Message: Format with astyle. Need to edit. Index: dbf.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/dbf.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- dbf.cpp 5 May 2004 11:17:49 -0000 1.11 +++ dbf.cpp 5 May 2004 15:33:19 -0000 1.12 @@ -15,17 +15,17 @@ #include "dbf.h" #include "cmap.h" -//#define MAX_NUM_DESCR 255 -//#define MAX_RECORD_SIZE 1024 -//#define LEN 32 -#define FIELD_NUM ( (headleng-32L) / 32L ) +//#define MAX_NUM_DESCR 255 +//#define MAX_RECORD_SIZE 1024 +//#define LEN 32 +#define FIELD_NUM ( (headleng-32L) / 32L ) //=================================================================================== -BYTE zerobyte; // Òèï DBF ôàéëà -BYTE lastdate[3]=""; // Ïîñëåäíåå èçìåíåíèå (ÃÃÌÌÄÄ) -unsigned short recnum; // ×èñëî çàïèñåé â ôàéëå -unsigned short headleng; // Ïîëîæåíèå ïåðâîé çàïèñè ñ äàííûìè -unsigned short recleng; // +BYTE zerobyte; // Òèï DBF ôàéëà +BYTE lastdate[3] = ""; // Ïîñëåäíåå èçìåíåíèå (ÃÃÌÌÄÄ) +unsigned short recnum; // ×èñëî çàïèñåé â ôàéëå +unsigned short headleng; // Ïîëîæåíèå ïåðâîé çàïèñè ñ äàííûìè +unsigned short recleng; // topo_cod1 *file_cod1 = NULL; @@ -34,17 +34,18 @@ //For DBF; //=================================================================================== typedef struct descr_struct_DBF { - char fieldname[11]; // Íàçâàíèå ïîëÿ (äî 10 ñèìâîëîâ, åñëè > 10, òîò äîïîëíÿåòñÿ ïóñòûì ñèìâîëîì (0x00)) - char fieldtype; // C - ñèìâîëüíîå - // N - ÷èñëîâîå - // L - ëîãè÷åñêîå - // M - òèïà memo - // D - äàòà - // F - ñ ïëàâàþùåé òî÷êîé - // P - øàáëîí - BYTE fieldleng; // Ðàñïîëîæåíèå ïîëÿ âíóòðè çàïèñè - BYTE decimalleng; // Äëèíà ïîëÿ â áàéòàõ -} dbf_descr_type + char fieldname[11]; // Íàçâàíèå ïîëÿ (äî 10 ñèìâîëîâ, åñëè > 10, òîò äîïîëíÿåòñÿ ïóñòûì ñèìâîëîì (0x00)) + char fieldtype; // C - ñèìâîëüíîå + // N - ÷èñëîâîå + // L - ëîãè÷åñêîå + // M - òèïà memo + // D - äàòà + // F - ñ ïëàâàþùåé òî÷êîé + // P - øàáëîí + BYTE fieldleng; // Ðàñïîëîæåíèå ïîëÿ âíóòðè çàïèñè + BYTE decimalleng; // Äëèíà ïîëÿ â áàéòàõ +} +dbf_descr_type #ifdef __GNUC__ __attribute__ ((packed)) #endif @@ -52,15 +53,14 @@ dbf_descr_type descrarray[14]; //descr_type *descrarray=NULL; -char *bufDBF; // Áóôåð çàãðóçêè DBF ôàéëà. +char *bufDBF; // Áóôåð çàãðóçêè DBF ôàéëà. // âñïîìîãîàòåëüíàÿ ôóíêöèÿ äëÿ âûâîäà íà ýêðàí àòðèáóòîâ, êîòîðûå ìîãóò èìåò çíà÷åíèå null (îáîçíà÷àåòñÿ êàê value == -1) -void printPossiblyNullValue(short value) -{ - if(value == -1) - printf("<null> "); - else - printf("0x%.4X ", value); +void printPossiblyNullValue(short value) { + if (value == -1) + printf("<null> "); + else + printf("0x%.4X ", value); } //=================================================================================== @@ -68,213 +68,221 @@ // ÅÑÒÜ è ÂÛÁÐÀÍ - Âîçâðàùàåò íîìåð ñòðîêè, // åñëè èëè íå âûáðàí èëè íå íàéäåí, òî -1 int Check_export (const char *str) { - for (int i = 0; i < recnum; i++) - if (strcmp(str, file_cod1[i].object_cod) == 0) + for (int i = 0; i < recnum; i++) + if (strcmp(str, file_cod1[i].object_cod) == 0) return (file_cod1[i].do_export != 0) ? i : -1; - printf("Warning!!! Type not found in DBF table: '%s'\n", str); - return -1; + printf("Warning!!! Type not found in DBF table: '%s'\n", str); + return -1; } //=================================================================================== // ×òåíèå DBF ôàéëà. //=================================================================================== -void Read_DBF(char *file_dbf) -{ - int f_DBF = open(file_dbf, O_RDONLY); - if (f_DBF == -1) { - printf("Unable to open %s\n\n", file_dbf); - exit(1);} - off_t file_dbf_size = lseek(f_DBF, 0, SEEK_END); - if (file_dbf_size == (off_t)-1) { - printf("Unable to get size of %s\n\n", file_dbf); - exit(1);} - if (comm_dbf == 1){ printf("DBF file size: %i bytes\n", file_dbf_size);} - close (f_DBF); - FILE *inDBF = fopen(file_dbf, "rb"); - //=================================================================================== - // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ ôàéëà DBF. - bufDBF = (char *)s_malloc(file_dbf_size + 1); - fread(bufDBF, 1, file_dbf_size, inDBF); - //×èòàåì çàãîëîâîê DBF - memcpy(&zerobyte, bufDBF, 2); // Òèï ôàéëîâ - // FoxBASE+/dBASE III +, áåç memo - 0x03 - // FoxBASE+/dBASE III +, ñ memo - 0x83 - // FoxPro/dBASE IV, áåç memo - 0x03 - // FoxPro ñ memo - 0xF5 - // dBASE IV ñ memo - 0x8B - memcpy(&lastdate, bufDBF+1, 3); // Ïîñëåäíåå èçìåíåíèå (ÃÃÌÌÄÄ) - memcpy(&recnum, bufDBF+4, 4); // ×èñëî çàïèñåé â ôàéëå - memcpy(&headleng, bufDBF+8, 2); // Ïîëîæåíèå ïåðâîé çàïèñè ñ äàííûìè - memcpy(&recleng, bufDBF+10, 2); // Äëèíà îäíîé çàïèñè ñ äàííûìè (âêëþ÷àÿ ïðèçíàê óäàëåíèÿ) - if (comm_dbf1 == 1){ - printf("Record num...... %i\n", recnum); - printf("Header length... %i\n", headleng); - printf("Record length... %i\n", recleng); - printf("Type DBF........ %x\n", zerobyte); - printf("Filed num....... %i\n", FIELD_NUM); - } - long count = FIELD_NUM; - if (count > 12) {count = 12;} +void Read_DBF(char *file_dbf) { + int f_DBF = open(file_dbf, O_RDONLY); + if (f_DBF == -1) { + printf("Unable to open %s\n\n", file_dbf); + exit(1); + } + off_t file_dbf_size = lseek(f_DBF, 0, SEEK_END); + if (file_dbf_size == (off_t) - 1) { + printf("Unable to get size of %s\n\n", file_dbf); + exit(1); + } + if (comm_dbf == 1) { + printf("DBF file size: %i bytes\n", file_dbf_size); + } + close (f_DBF); + FILE *inDBF = fopen(file_dbf, "rb"); + //=================================================================================== + // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ ôàéëà DBF. + bufDBF = (char *)s_malloc(file_dbf_size + 1); + fread(bufDBF, 1, file_dbf_size, inDBF); + //×èòàåì çàãîëîâîê DBF + memcpy(&zerobyte, bufDBF, 2); // Òèï ôàéëîâ + // FoxBASE+/dBASE III +, áåç memo - 0x03 + // FoxBASE+/dBASE III +, ñ memo - 0x83 + // FoxPro/dBASE IV, áåç memo - 0x03 + // FoxPro ñ memo - 0xF5 + // dBASE IV ñ memo - 0x8B + memcpy(&lastdate, bufDBF + 1, 3); // Ïîñëåäíåå èçìåíåíèå (ÃÃÌÌÄÄ) + memcpy(&recnum, bufDBF + 4, 4); // ×èñëî çàïèñåé â ôàéëå + memcpy(&headleng, bufDBF + 8, 2); // Ïîëîæåíèå ïåðâîé çàïèñè ñ äàííûìè + memcpy(&recleng, bufDBF + 10, 2); // Äëèíà îäíîé çàïèñè ñ äàííûìè (âêëþ÷àÿ ïðèçíàê óäàëåíèÿ) + if (comm_dbf1 == 1) { + printf("Record num...... %i\n", recnum); + printf("Header length... %i\n", headleng); + printf("Record length... %i\n", recleng); + printf("Type DBF........ %x\n", zerobyte); + printf("Filed num....... %i\n", FIELD_NUM); + } + long count = FIELD_NUM; + if (count > 12) { + count = 12; + } - //×èòàåì íàçâàíèÿ ñòîëáöîâ. - int i =0; - int j; - for (j =0; j < count; j++){ - memcpy (descrarray[j+1].fieldname, bufDBF+32+i, 11); - descrarray[j].fieldtype = bufDBF[32+11+i]; - descrarray[j].fieldleng = bufDBF[32+16+i]; - descrarray[j].decimalleng = bufDBF[32+17+i]; - if (comm_dbf1 == 1){ - printf("%11s ", descrarray[j].fieldname); - printf("%c ", descrarray[j].fieldtype); - printf("%2i ", descrarray[j].fieldleng); - printf("%i\n", descrarray[j].decimalleng); - } - i = i+32; - } - if (comm_dbf1 == 1){ - for (i=1; i < count; i++){ - printf("[%12s] ", descrarray[i].fieldname); - printf("%c ", descrarray[i].fieldtype); - printf("%2i\n", descrarray[i].fieldleng); - //printf("%i\n",descrarray[i].decimalleng); - } - printf("\n"); - } - if (strcmp(descrarray[1].fieldname, "EXPORT") == 0 && - strcmp(descrarray[2].fieldname, "OBJECT_COD") == 0 && - strcmp(descrarray[3].fieldname, "CHR_RUS") == 0 && - strcmp(descrarray[4].fieldname, "CHR_ENG") == 0 && - strcmp(descrarray[5].fieldname, "RGN_P") == 0 && - strcmp(descrarray[6].fieldname, "TYPE_P") == 0 && - strcmp(descrarray[7].fieldname, "TYPE_L") == 0 && - strcmp(descrarray[8].fieldname, "TYPE_A") == 0 && - strcmp(descrarray[9].fieldname, "LAYER_MIN") == 0 && - strcmp(descrarray[10].fieldname, "LAYER_MAX") == 0) { - printf("Fields in DBF - Ok!\n\n"); - } else { + //×èòàåì íàçâàíèÿ ñòîëáöîâ. + int i = 0; + int j; + for (j = 0; j < count; j++) { + memcpy (descrarray[j + 1].fieldname, bufDBF + 32 + i, 11); + descrarray[j].fieldtype = bufDBF[32 + 11 + i]; + descrarray[j].fieldleng = bufDBF[32 + 16 + i]; + descrarray[j].decimalleng = bufDBF[32 + 17 + i]; + if (comm_dbf1 == 1) { + printf("%11s ", descrarray[j].fieldname); + printf("%c ", descrarray[j].fieldtype); + printf("%2i ", descrarray[j].fieldleng); + printf("%i\n", descrarray[j].decimalleng); + } + i = i + 32; + } + if (comm_dbf1 == 1) { + for (i = 1; i < count; i++) { + printf("[%12s] ", descrarray[i].fieldname); + printf("%c ", descrarray[i].fieldtype); + printf("%2i\n", descrarray[i].fieldleng); + //printf("%i\n",descrarray[i].decimalleng); + } + printf("\n"); + } + if (strcmp(descrarray[1].fieldname, "EXPORT") == 0 && + strcmp(descrarray[2].fieldname, "OBJECT_COD") == 0 && + strcmp(descrarray[3].fieldname, "CHR_RUS") == 0 && + strcmp(descrarray[4].fieldname, "CHR_ENG") == 0 && + strcmp(descrarray[5].fieldname, "RGN_P") == 0 && + strcmp(descrarray[6].fieldname, "TYPE_P") == 0 && + strcmp(descrarray[7].fieldname, "TYPE_L") == 0 && + strcmp(descrarray[8].fieldname, "TYPE_A") == 0 && + strcmp(descrarray[9].fieldname, "LAYER_MIN") == 0 && + strcmp(descrarray[10].fieldname, "LAYER_MAX") == 0) { + printf("Fields in DBF - Ok!\n\n"); + } else { printf("Incorrect DBF file, check version and columns!!!\n"); exit (0); } - //================================================================ - // Ðåçåðâèðîâàíèå - file_cod1 = (topo_cod1 *)s_malloc(sizeof(topo_cod1) * recnum); - //================================================================ - int do_export; - long pointerDBF; - long pointerDBF1; - char bufsrt[256]; - char del[1]; + //================================================================ + // Ðåçåðâèðîâàíèå + file_cod1 = (topo_cod1 *)s_malloc(sizeof(topo_cod1) * recnum); + //================================================================ + int do_export; + long pointerDBF; + long pointerDBF1; + char bufsrt[256]; + char del[1]; - pointerDBF = headleng; - for (j =0; j < recnum; j++){ - pointerDBF1 = pointerDBF; - del[0] = bufDBF[pointerDBF];// ïðèçíàê óäàëåíèÿ - pointerDBF++; /// ?????? + pointerDBF = headleng; + for (j = 0; j < recnum; j++) { + pointerDBF1 = pointerDBF; + del[0] = bufDBF[pointerDBF]; // ïðèçíàê óäàëåíèÿ + pointerDBF++; /// ?????? - // Ñòîëáåö EXPORT - i = descrarray[0].fieldleng; - memcpy (bufsrt,bufDBF+pointerDBF,i); - bufsrt[i]=0; - if (sscanf(bufsrt, "%i", &do_export) == -1 ){do_export =0;} - file_cod1[j].do_export = do_export; + // Ñòîëáåö EXPORT + i = descrarray[0].fieldleng; + memcpy (bufsrt, bufDBF + pointerDBF, i); + bufsrt[i] = 0; + if (sscanf(bufsrt, "%i", &do_export) == -1 ) { + do_export = 0; + } + file_cod1[j].do_export = do_export; - //Ñòîëáåö OBJECT_COD - pointerDBF = pointerDBF+i; - i = descrarray[1].fieldleng; - memcpy (bufsrt,bufDBF+pointerDBF,i); - bufsrt[i]=0; - if (sscanf(bufsrt, "%8s", file_cod1[j].object_cod) == -1 ){ - // Åñëè ïóñòàÿ ñòðîêà òî ïèøåì - 0 - file_cod1[j].object_cod[0] = 0; - file_cod1[j].do_export = 0; - } - // Ïðîâåðêà íà óäàëåííûé - if ( del[0] == '*') { - file_cod1[j].do_export = 0; - file_cod1[j].object_cod[0] = 0;} + //Ñòîëáåö OBJECT_COD + pointerDBF = pointerDBF + i; + i = descrarray[1].fieldleng; + memcpy (bufsrt, bufDBF + pointerDBF, i); + bufsrt[i] = 0; + if (sscanf(bufsrt, "%8s", file_cod1[j].object_cod) == -1 ) { + // Åñëè ïóñòàÿ ñòðîêà òî ïèøåì - 0 + file_cod1[j].object_cod[0] = 0; + file_cod1[j].do_export = 0; + } + // Ïðîâåðêà íà óäàëåííûé + if ( del[0] == '*') { + file_cod1[j].do_export = 0; + file_cod1[j].object_cod[0] = 0; + } - // Ñòîëáåö CHR_RUS - pointerDBF = pointerDBF+i; - i = descrarray[2].fieldleng; - memcpy (file_cod1[j].CHR_RUS,bufDBF+pointerDBF,i); - file_cod1[j].CHR_RUS[i]=0; + // Ñòîëáåö CHR_RUS + pointerDBF = pointerDBF + i; + i = descrarray[2].fieldleng; + memcpy (file_cod1[j].CHR_RUS, bufDBF + pointerDBF, i); + file_cod1[j].CHR_RUS[i] = 0; - // Ñòîëáåö CHR_ENG - pointerDBF = pointerDBF+i; - i = descrarray[3].fieldleng; + // Ñòîëáåö CHR_ENG + pointerDBF = pointerDBF + i; + i = descrarray[3].fieldleng; - // Ñòîëáåö RGN_P - pointerDBF = pointerDBF+i; - i = descrarray[4].fieldleng; - memcpy (bufsrt,bufDBF+pointerDBF,i); - bufsrt[i]=0; - if (sscanf(bufsrt, "%x", &file_cod1[j].RGN_point) == -1 ){ - file_cod1[j].RGN_point = -1; - } + // Ñòîëáåö RGN_P + pointerDBF = pointerDBF + i; + i = descrarray[4].fieldleng; + memcpy (bufsrt, bufDBF + pointerDBF, i); + bufsrt[i] = 0; + if (sscanf(bufsrt, "%x", &file_cod1[j].RGN_point) == -1 ) { + file_cod1[j].RGN_point = -1; + } - // Ñòîëáåö TYPE_P - pointerDBF = pointerDBF+i; - i = descrarray[5].fieldleng; - memcpy (bufsrt,bufDBF+pointerDBF,i); - bufsrt[i]=0; - if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_point) == -1 ){ - file_cod1[j].TYPE_point = -1; - } + // Ñòîëáåö TYPE_P + pointerDBF = pointerDBF + i; + i = descrarray[5].fieldleng; + memcpy (bufsrt, bufDBF + pointerDBF, i); + bufsrt[i] = 0; + if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_point) == -1 ) { + file_cod1[j].TYPE_point = -1; + } - // Ñòîëáåö TYPE_L - pointerDBF = pointerDBF+i; - i = descrarray[6].fieldleng; - memcpy (bufsrt,bufDBF+pointerDBF,i); - bufsrt[i]=0; - if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_line) == -1 ){ - file_cod1[j].TYPE_line = -1; - } + // Ñòîëáåö TYPE_L + pointerDBF = pointerDBF + i; + i = descrarray[6].fieldleng; + memcpy (bufsrt, bufDBF + pointerDBF, i); + bufsrt[i] = 0; + if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_line) == -1 ) { + file_cod1[j].TYPE_line = -1; + } - // Ñòîëáåö TYPE_A - pointerDBF = pointerDBF+i; - i = descrarray[7].fieldleng; - memcpy (bufsrt,bufDBF+pointerDBF,i); - bufsrt[i]=0; - if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_poly) == -1 ){ - file_cod1[j].TYPE_poly = -1; - } + // Ñòîëáåö TYPE_A + pointerDBF = pointerDBF + i; + i = descrarray[7].fieldleng; + memcpy (bufsrt, bufDBF + pointerDBF, i); + bufsrt[i] = 0; + if (sscanf(bufsrt, "%x", &file_cod1[j].TYPE_poly) == -1 ) { + file_cod1[j].TYPE_poly = -1; + } - // Ñòîëáåö LAYER_MIN - pointerDBF = pointerDBF+i; - i = descrarray[8].fieldleng; - memcpy (bufsrt,bufDBF+pointerDBF,i); - bufsrt[i]=0; - if (sscanf(bufsrt, "%d", &file_cod1[j].img_layer_min) == -1 ){ - file_cod1[j].img_layer_min = 0; - } + // Ñòîëáåö LAYER_MIN + pointerDBF = pointerDBF + i; + i = descrarray[8].fieldleng; + memcpy (bufsrt, bufDBF + pointerDBF, i); + bufsrt[i] = 0; + if (sscanf(bufsrt, "%d", &file_cod1[j].img_layer_min) == -1 ) { + file_cod1[j].img_layer_min = 0; + } - // Ñòîëáåö LAYER_MAX - pointerDBF = pointerDBF+i; - i = descrarray[9].fieldleng; - memcpy (bufsrt,bufDBF+pointerDBF,i); - bufsrt[i]=0; - if (sscanf(bufsrt, "%d", &file_cod1[j].img_layer_max) == -1 ){ - file_cod1[j].img_layer_max = 0; - } + // Ñòîëáåö LAYER_MAX + pointerDBF = pointerDBF + i; + i = descrarray[9].fieldleng; + memcpy (bufsrt, bufDBF + pointerDBF, i); + bufsrt[i] = 0; + if (sscanf(bufsrt, "%d", &file_cod1[j].img_layer_max) == -1 ) { + file_cod1[j].img_layer_max = 0; + } - if (do_export !=0 ){ - //printf("%i ", file_cod1[j].do_export); - if( comm_dbf == 1){ - printf("%s ", file_cod1[j].object_cod); - printf("%20s ", file_cod1[j].CHR_RUS); + if (do_export != 0 ) { + //printf("%i ", file_cod1[j].do_export); + if ( comm_dbf == 1) { + printf("%s ", file_cod1[j].object_cod); + printf("%20s ", file_cod1[j].CHR_RUS); - printPossiblyNullValue(file_cod1[j].RGN_point); - printPossiblyNullValue(file_cod1[j].TYPE_point); - printPossiblyNullValue(file_cod1[j].TYPE_line); - printPossiblyNullValue(file_cod1[j].TYPE_poly); + printPossiblyNullValue(file_cod1[j].RGN_point); + printPossiblyNullValue(file_cod1[j].TYPE_point); + printPossiblyNullValue(file_cod1[j].TYPE_line); + printPossiblyNullValue(file_cod1[j].TYPE_poly); - printf("%i ", file_cod1[j].img_layer_min); - printf("%i ", file_cod1[j].img_layer_max); - //printf("(%s)\n", file_cod1[j].CHR_ENG); - printf("\n"); - } - } - pointerDBF = pointerDBF1+recleng; - } + printf("%i ", file_cod1[j].img_layer_min); + printf("%i ", file_cod1[j].img_layer_max); + //printf("(%s)\n", file_cod1[j].CHR_ENG); + printf("\n"); + } + } + pointerDBF = pointerDBF1 + recleng; + } } Index: IngitFile.h =================================================================== RCS file: /cvsroot/cmap/cmap/IngitFile.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- IngitFile.h 3 May 2004 21:38:58 -0000 1.6 +++ IngitFile.h 5 May 2004 15:33:19 -0000 1.7 @@ -8,121 +8,125 @@ //=================================================================================== //typedef struct Object { -// char cod[10]; //(A, L, P) + êîäèôèêàòîð ÂÒÓ -// char name[32]; // Èìÿ îáúåêòà -// short RGN; // RGN -// short Type; // Type -// char Label[4]; // Èìÿ àòðèáóòà äëÿ èìåíè îáúåêòà -// short Level0, -// Level1, -// Level2, -// Level3; +// char cod[10]; //(A, L, P) + êîäèôèêàòîð ÂÒÓ +// char name[32]; // Èìÿ îáúåêòà +// short RGN; // RGN +// short Type; // Type +// char Label[4]; // Èìÿ àòðèáóòà äëÿ èìåíè îáúåêòà +// short Level0, +// Level1, +// Level2, +// Level3; //}object_cod; //=================================================================================== typedef struct Objects { - char type[1]; //Òèï îáúåêòà - char _b2; // - char view; //Ïðèçíàê îòîáðàæåíèÿ - unsigned short num; //Ïîðÿäêîâûé íîìåð îáúåêòà â òàáëèöå Îáúåêòîâ. - short next_byte; //Êîë-âî ñëåäóþùèõ áàéò - //---------------------------- - unsigned long data; //Ñìåùåíèå ìåòðèêè â buf - unsigned short ATR_num; //Íîìåð â òàáëèöå Îáúåêòîâ Àòðèáóòîâ - char Cod[10]; //(P,L,A) + Êîäèôèêàòîð - char atr_name[256]; // Çíà÷åíèå àòðèáóòà. - char *atr_cod[110]; // 2 áàéòà àòðèáóòà åñëè íåò 1-é áàéò 0 + char type[1]; //Òèï îáúåêòà + char _b2; // + char view; //Ïðèçíàê îòîáðàæåíèÿ + unsigned short num; //Ïîðÿäêîâûé íîìåð îáúåêòà â òàáëèöå Îáúåêòîâ. + short next_byte; //Êîë-âî ñëåäóþùèõ áàéò + //---------------------------- + unsigned long data; //Ñìåùåíèå ìåòðèêè â buf + unsigned short ATR_num; //Íîìåð â òàáëèöå Îáúåêòîâ Àòðèáóòîâ + char Cod[10]; //(P,L,A) + Êîäèôèêàòîð + char atr_name[256]; // Çíà÷åíèå àòðèáóòà. + char *atr_cod[110]; // 2 áàéòà àòðèáóòà åñëè íåò 1-é áàéò 0 -} h_object +} +h_object #ifdef __GNUC__ __attribute__ ((packed)) #endif ; -extern h_object *obj; +extern h_object *obj; //=================================================================================== -typedef struct Cord_OBJ{ - double Lon, - Lat; - unsigned short nun_segment; // Íîìåð Ñåãìåíòà - unsigned short num ; // Ïîðÿäêîâûé íîìåð ñåãìåíòà îáúåêòà. (Ðàñ÷åòíûé) - short type; // Òèï ñåãìåíòà - BYTE t1; - BYTE t2; - BYTE t3; - BYTE t4; -} cord_object +typedef struct Cord_OBJ { + double Lon, + Lat; + unsigned short nun_segment; // Íîìåð Ñåãìåíòà + unsigned short num ; // Ïîðÿäêîâûé íîìåð ñåãìåíòà îáúåêòà. (Ðàñ÷åòíûé) + short type; // Òèï ñåãìåíòà + BYTE t1; + BYTE t2; + BYTE t3; + BYTE t4; +} +cord_object #ifdef __GNUC__ __attribute__ ((packed)) #endif ; -extern cord_object *Metr_OBJ; +extern cord_object *Metr_OBJ; //=================================================================================== // Ñòðóêòóðà Ãðàôè÷åñêîé òàáëèöû ôàéëà êàðòû //=================================================================================== -//char names_gt[300][10]; // Èìåíà êîäèôèêàòîðîâ -extern short n_obj_table_graph; // ÷èñëî îáúåêòîâ -extern short Len_code; // Äëèíà Êîäèôèêàòîðà +//char names_gt[300][10]; // Èìåíà êîäèôèêàòîðîâ +extern short n_obj_table_graph; // ÷èñëî îáúåêòîâ +extern short Len_code; // Äëèíà Êîäèôèêàòîðà -typedef struct IngitGraphTable{ // Ãðàôè÷åñêàÿ òàáëèöà ôàéëà. - char name[10]; // Èìÿ êîäèôèêàòîðà +typedef struct IngitGraphTable { // Ãðàôè÷åñêàÿ òàáëèöà ôàéëà. + char name[10]; // Èìÿ êîäèôèêàòîðà -}gt; -extern gt *names_gt1; +} +gt; +extern gt *names_gt1; //=================================================================================== // Íàéäåííûå â Òàáëèöå Àòðèáóòîâ êîäèôèêàòîðû //=================================================================================== typedef struct Find_object { - BYTE type; // Type êîäèôèêàòîðà (A, L, P) - char name[10]; // 8-çíà÷íûé êîäèôèêàòîð ÂÒÓ - unsigned short num; // Êîë-âî íàõîæäåíèÿ îáúåêòà + BYTE type; // Type êîäèôèêàòîðà (A, L, P) + char name[10]; // 8-çíà÷íûé êîäèôèêàòîð ÂÒÓ + unsigned short num; // Êîë-âî íàõîæäåíèÿ îáúåêòà -}nam_cod +} +nam_cod #ifdef __GNUC__ __attribute__ ((packed)) #endif ; -extern nam_cod *names_codif; -extern unsigned short n_obj_codif; +extern nam_cod *names_codif; +extern unsigned short n_obj_codif; //=================================================================================== -extern BYTE *buf; // Áóôåð çàãðóçêè ôàéëà. -extern unsigned int FileSize; // Äëèíà ôàéëà êàðòû -extern unsigned long *Index_Metr; // îôôñåòû Òàáëèöû Ñåãìåíòîâ. -extern unsigned long *Index_Atr; // îôôñåòû Òàáëèöû Àòðèáóòîâ. +extern BYTE *buf; // Áóôåð çàãðóçêè ôàéëà. +extern unsigned int FileSize; // Äëèíà ôàéëà êàðòû +extern unsigned long *Index_Metr; // îôôñåòû Òàáëèöû Ñåãìåíòîâ. +extern unsigned long *Index_Atr; // îôôñåòû Òàáëèöû Àòðèáóòîâ. //=================================================================================== -extern long OffsetOBJ; // Ñìåùåíèå äî òàáëèöû Îáúåêòîâ -extern long Offset_Metr; // Ñìåùåíèå äî òàáëèöû Ñåãìåíòîâ -extern unsigned long Offset_Grapf_Tab; // Ñìåùåíèå äî Ãðàôè÷åñêîé òàáëèöû -extern long Offset_Atr_Tab; // Ñìåùåíèå äî òàáëèöû Àòðèáóòîâ -extern short FLAG; // Ïðèçíàê ÷òî ôàéë èìååò ìåíüøóþ -// äëèíó òàáëööû îáúåêòîâ -1 +extern long OffsetOBJ; // Ñìåùåíèå äî òàáëèöû Îáúåêòîâ +extern long Offset_Metr; // Ñìåùåíèå äî òàáëèöû Ñåãìåíòîâ +extern unsigned long Offset_Grapf_Tab; // Ñìåùåíèå äî Ãðàôè÷åñêîé òàáëèöû +extern long Offset_Atr_Tab; // Ñìåùåíèå äî òàáëèöû Àòðèáóòîâ +extern short FLAG; // Ïðèçíàê ÷òî ôàéë èìååò ìåíüøóþ +// äëèíó òàáëööû îáúåêòîâ -1 -extern unsigned long Max_Num_Segment, // Íîìåð ïîñëåäíåãî ñåãìåíòà. -Max_Num_OBJ; // êîëè÷åñòâî îáúêòîâ -extern unsigned short Max_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ +extern unsigned long Max_Num_Segment, // Íîìåð ïîñëåäíåãî ñåãìåíòà. + Max_Num_OBJ; // êîëè÷åñòâî îáúêòîâ +extern unsigned short Max_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ -extern long xTopRight; -extern long yTopRight; +extern long xTopRight; +extern long yTopRight; -extern short scaleX, -scaleY; -extern long LAT_SouthWest; //øèðîòà þæíîé ãðàíèöû ëèñòà -extern long LON_SouthWest; //äîëãîòà çàïàäíîé ãðàíèöû êàðòû -extern long LAT_NorthEast; //øèðîòà ñåâåðíîé ãðàíèöû ëèñòà -extern long LON_NorthEast; //äîëãîòà âîñòî÷íîé ãðàíèöû ëèñòà +extern short scaleX, + scaleY; +extern long LAT_SouthWest; //øèðîòà þæíîé ãðàíèöû ëèñòà +extern long LON_SouthWest; //äîëãîòà çàïàäíîé ãðàíèöû êàðòû +extern long LAT_NorthEast; //øèðîòà ñåâåðíîé ãðàíèöû ëèñòà +extern long LON_NorthEast; //äîëãîòà âîñòî÷íîé ãðàíèöû ëèñòà -extern double Kx; -extern double Ky; +extern double Kx; +extern double Ky; void ReadTableOBJ(); short ReadMetric(unsigned short num_OBJ, CIngitMercatorProjection &Maps, double latSW, double lonSW, double latNE, double lonNE); -#endif +#endif // __CMAP_IF_H__ Index: common.h =================================================================== RCS file: /cvsroot/cmap/cmap/common.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- common.h 5 May 2004 10:52:18 -0000 1.6 +++ common.h 5 May 2004 15:33:19 -0000 1.7 @@ -6,9 +6,9 @@ #define BYTE unsigned char //#ifdef _DEBUG -#define ASSERT assert -//#else -// #define ASSERT(x) +#define ASSERT assert +//#else +// #define ASSERT(x) //#endif #ifdef _MSC_VER @@ -16,7 +16,7 @@ #endif char DosToWin (BYTE char_dos); -void DosToWin (char *str_win, BYTE *str_dos); +void DosToWin (char *str_win, BYTE *str_dos); void RusToEng (char *str, char *str_rus); void toUpperWin(char *s); @@ -26,6 +26,6 @@ void s_free(void *ptr); void *s_realloc(void *ptr, size_t size); -#endif +#endif // __CMAP_COMMON_H__ Index: Geodesy.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/Geodesy.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Geodesy.cpp 3 May 2004 17:01:50 -0000 1.4 +++ Geodesy.cpp 5 May 2004 15:33:18 -0000 1.5 @@ -2,24 +2,20 @@ #include "IngitFile.h" //=================================================================================== -double IngitLat2Degrees(long degrees) -{ - return (degrees/360000.0) - 90.0; +double IngitLat2Degrees(long degrees) { + return (degrees / 360000.0) - 90.0; } //=================================================================================== -double IngitLon2Degrees(long degrees) -{ - return (degrees > -50000000) ? (degrees /360000.0) : -(degrees /360000.0); +double IngitLon2Degrees(long degrees) { + return (degrees > -50000000) ? (degrees / 360000.0) : -(degrees / 360000.0); } //=================================================================================== -double Degrees2Rads(double degrees) -{ - return degrees*Pi/180.0; +double Degrees2Rads(double degrees) { + return degrees*Pi / 180.0; } //=================================================================================== -double Rads2Degrees(double rad) -{ - return rad*180.0/Pi; +double Rads2Degrees(double rad) { + return rad*180.0 / Pi; } //================================ @@ -27,27 +23,28 @@ double SQU_area (short n) //================================ { - double area =0; - int i; - double x, y; - double x1, y1; + double area = 0; + int i; + double x, y; + double x1, y1; - for (i = 0; i < n-1; i++) { - x = Metr_OBJ[i].Lon * Kx; - y = Metr_OBJ[i].Lat * Ky; - x1 = Metr_OBJ[i+1].Lon * Kx; - y1 = Metr_OBJ[i+1].Lat * Ky; + for (i = 0; i < n - 1; i++) { + x = Metr_OBJ[i].Lon * Kx; + y = Metr_OBJ[i].Lat * Ky; + x1 = Metr_OBJ[i + 1].Lon * Kx; + y1 = Metr_OBJ[i + 1].Lat * Ky; - //area += ((x * y1) - (y * x1))/2; - area += ((y+y1)*(x-x1))/2; + //area += ((x * y1) - (y * x1))/2; + area += ((y + y1) * (x - x1)) / 2; - //printf ("%.1f %.1f\n", Metr_OBJ[i].Lon, Metr_OBJ[i].Lat); - //printf ("%f %f\n", x1, y1); - //printf ("(%i) %f %f\n", i, area, area/2); - } - //printf ("%.1f %.1f\n", Metr_OBJ[i+1].Lon, Metr_OBJ[i+1].Lat); - //printf ("\n\n %f %f\n", area, area); - return area; + //printf ("%.1f %.1f\n", Metr_OBJ[i].Lon, Metr_OBJ[i].Lat); + //printf ("%f %f\n", x1, y1); + //printf ("(%i) %f %f\n", i, area, area/2); + } + //printf ("%.1f %.1f\n", Metr_OBJ[i+1].Lon, Metr_OBJ[i+1].Lat); + //printf ("\n\n %f %f\n", area, area); + + return area; } //================================ @@ -55,299 +52,304 @@ double LEN_area (short n, long NunObj) //================================ { - int i; - double x, y; - double x1, y1; - double len = 0; - double area =0; - double area1 =0; + int i; + double x, y; + double x1, y1; + double len = 0; + double area = 0; + double area1 = 0; - //Metr_OBJ[i].Lon - //num_array + //Metr_OBJ[i].Lon + //num_array - for (i = 0; i < n-1; i++) { - if (Metr_OBJ[i].type != 0 && i > 0) break; - x = Metr_OBJ[i].Lon * Kx; - y = Metr_OBJ[i].Lat * Ky; - x1 = Metr_OBJ[i+1].Lon * Kx; - y1 = Metr_OBJ[i+1].Lat * Ky; + for (i = 0; i < n - 1; i++) { + if (Metr_OBJ[i].type != 0 && i > 0) + break; + x = Metr_OBJ[i].Lon * Kx; + y = Metr_OBJ[i].Lat * Ky; + x1 = Metr_OBJ[i + 1].Lon * Kx; + y1 = Metr_OBJ[i + 1].Lat * Ky; - len += sqrt((x-x1)*(x-x1) + (y-y1)*(y-y1) ); + len += sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1) ); - //area += ((y-y1)*(x+x1)); - // s:=s+(x[i]+x[i+1])*(y[i]-y[i+1]); + //area += ((y-y1)*(x+x1)); + // s:=s+(x[i]+x[i+1])*(y[i]-y[i+1]); - //for i:=3 to n do - //s:=s+0.5*abs((x[i-1]-x[1])*(y[i]-y[1])- - // (x[i]-x[1])*(y[i-1]-y[1])); - //area += ((x+x1)*(y-y1)); - //Sum({Y(i)+Y(i+1)}*{X(i+1)-X(i)})/2 + //for i:=3 to n do + //s:=s+0.5*abs((x[i-1]-x[1])*(y[i]-y[1])- + // (x[i]-x[1])*(y[i-1]-y[1])); + //area += ((x+x1)*(y-y1)); + //Sum({Y(i)+Y(i+1)}*{X(i+1)-X(i)})/2 - area += ((y+y1)*(x-x1)); - area1 += ((x+x1)*(y-y1)); + area += ((y + y1) * (x - x1)); + area1 += ((x + x1) * (y - y1)); - //printf ("%f\n", (x+x1)*(y-y1)); - //printf ("x-x1 %f y-y1 %f\n", (x-x1), (y-y1) ); - //printf ("(%i) Len %f\n", i, len); - //ch = getch(); - } - //printf ("\n N %i %s\n", n, obj[NunObj].atr_cod[9]); - //printf ("\n %f\n", len); - //printf ("%f\n", area/2); - //printf ("%f\n", area1/2); - //ch = getch(); - return len; + //printf ("%f\n", (x+x1)*(y-y1)); + //printf ("x-x1 %f y-y1 %f\n", (x-x1), (y-y1) ); + //printf ("(%i) Len %f\n", i, len); + //ch = getch(); + } + //printf ("\n N %i %s\n", n, obj[NunObj].atr_cod[9]); + //printf ("\n %f\n", len); + //printf ("%f\n", area/2); + //printf ("%f\n", area1/2); + //ch = getch(); + + return len; } //=================================================================================== CIngitMercatorProjection::CIngitMercatorProjection ( -//=================================================================================== + //=================================================================================== - double southParallel, - double northParallel, - double westMeridian, - double eastMeridian, - double mWidth, - double mHeight - ) -{ - //Ellipsoid Krassowski 1940 a = 6378245.00m 1/f = 298.300 - a=6378245.00; // Áîëüøàÿ ïîëóîñü [m] - f=1/298.300; // Ñæàòèå - // f=0; + double southParallel, + double northParallel, + double westMeridian, + double eastMeridian, + double mWidth, + double mHeight +) { + //Ellipsoid Krassowski 1940 a = 6378245.00m 1/f = 298.300 + a = 6378245.00; // Áîëüøàÿ ïîëóîñü [m] + f = 1 / 298.300; // Ñæàòèå + // f=0; - //then e = 0.08181333 and e^2 = 0.00669342 - e_2=2*f-f*f; // Êâàäðàò ýêñöåíòðèñèòåòà - e=sqrt(e_2); - double e_4=e_2*e_2; - double e_6=e_4*e_2; - double e_8=e_6*e_2; - kE2=e_2/2 + 5*e_4/24 + e_6/12 + 13*e_8/360; - kE4= 7*e_4/48 + 29*e_6/240 + 811*e_8/11520; - kE6= 7*e_6/120 + 81*e_8/1120; - kE8= 4279*e_8/161280; - /* - lat = chi + (esq/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2chi) - + (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4chi) - + (7e^6/120 + 81e^8/1120) sin(6chi) + (4279e^8/161280) sin(8chi) - */ + //then e = 0.08181333 and e^2 = 0.00669342 + e_2 = 2 * f - f * f; // Êâàäðàò ýêñöåíòðèñèòåòà + e = sqrt(e_2); + double e_4 = e_2 * e_2; + double e_6 = e_4 * e_2; + double e_8 = e_6 * e_2; + kE2 = e_2 / 2 + 5 * e_4 / 24 + e_6 / 12 + 13 * e_8 / 360; + kE4 = 7 * e_4 / 48 + 29 * e_6 / 240 + 811 * e_8 / 11520; + kE6 = 7 * e_6 / 120 + 81 * e_8 / 1120; + kE8 = 4279 * e_8 / 161280; + /* + lat = chi + (esq/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2chi) + + (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4chi) + + (7e^6/120 + 81e^8/1120) sin(6chi) + (4279e^8/161280) sin(8chi) + */ - //Latitude first SP 42o00'00"N = 0.73303829 rad - // latSP1=aStandardParallel; - // latSP1=(southParallel+northParallel)/2; - // latSP1=Degrees2Rads(42); - // latSP1=southParallel; - // latSP1=northParallel; - latSP1=(southParallel*.45+northParallel*.55); + //Latitude first SP 42o00'00"N = 0.73303829 rad + // latSP1=aStandardParallel; + // latSP1=(southParallel+northParallel)/2; + // latSP1=Degrees2Rads(42); + // latSP1=southParallel; + // latSP1=northParallel; + latSP1 = (southParallel * .45 + northParallel * .55); - //Longitude Natural Origin 51o00'00"E = 0.89011792 rad - // lon0=aLon0; - lon0=westMeridian; + //Longitude Natural Origin 51o00'00"E = 0.89011792 rad + // lon0=aLon0; + lon0 = westMeridian; - //False Eastings FE 0.00 m - FE=0; + //False Eastings FE 0.00 m + FE = 0; - //False Northings (at equator) FN 0.00 m - FN=0; + //False Northings (at equator) FN 0.00 m + FN = 0; - //then natural origin at latitude of 0oN has scale factor k0= 0.74426089 - // k0 = cos(latSP1)/(1 - e^2*sin^2(latSP1))^0.5 - double sinl1=sin(latSP1); - k0=cos(latSP1)/sqrt(1 - e_2*sinl1*sinl1); - // k0=.373369; + //then natural origin at latitude of 0oN has scale factor k0= 0.74426089 + // k0 = cos(latSP1)/(1 - e^2*sin^2(latSP1))^0.5 + double sinl1 = sin(latSP1); + k0 = cos(latSP1) / sqrt(1 - e_2 * sinl1 * sinl1); + // k0=.373369; - k1x=k1y=1.0; - double x1, y1; - Forward(southParallel, westMeridian, &x1, &y1); - // FE=x1; - FN=-y1; + k1x = k1y = 1.0; + double x1, y1; + Forward(southParallel, westMeridian, &x1, &y1); + // FE=x1; + FN = -y1; - Forward(northParallel, eastMeridian, &x1, &y1); - k1x=x1/mWidth; - k1y=y1/mHeight; - Kx = k1x; - Ky = k1y; - //printf ("********************* mWidth %f mHeight %f\n", mWidth, mHeight); - //printf ("********************* X1 %f Y1 %f\n", x1, y1); - //printf ("********************* Kx %f Ky %f\n", x1/mWidth, y1/mHeight); - //printf ("********************* scaleX %f scaleY %f\n", - // (xTopRight/10.0/scaleX)*x1/mWidth, (yTopRight/10.0/scaleY) * y1/mHeight); + Forward(northParallel, eastMeridian, &x1, &y1); + k1x = x1 / mWidth; + k1y = y1 / mHeight; + Kx = k1x; + Ky = k1y; + //printf ("********************* mWidth %f mHeight %f\n", mWidth, mHeight); + //printf ("********************* X1 %f Y1 %f\n", x1, y1); + //printf ("********************* Kx %f Ky %f\n", x1/mWidth, y1/mHeight); + //printf ("********************* scaleX %f scaleY %f\n", + // (xTopRight/10.0/scaleX)*x1/mWidth, (yTopRight/10.0/scaleY) * y1/mHeight); } //=================================================================================== /// Ïåðåâîä èç Lat / Lon â ìåòðè÷åñêèå êîîðäèíàòû + void CIngitMercatorProjection::Forward(double lat, double lon, double *xP, double *yP) //=================================================================================== { - //Forward calculation for: - //Latitude 53o00'00.00"N = 0.9250245 rad - //Longitude 53o00'00.00"E = 0.9250245 rad + //Forward calculation for: + //Latitude 53o00'00.00"N = 0.9250245 rad + //Longitude 53o00'00.00"E = 0.9250245 rad - *xP=(FE+a*k0*(lon-lon0))/k1x; //E = FE + a*k0(lon - lon0) - //gives Easting E = 165704.29 m + *xP = (FE + a * k0 * (lon - lon0)) / k1x; //E = FE + a*k0(lon - lon0) + //gives Easting E = 165704.29 m - //N = FN + a*k0* ln{tan(pi/4 + lat/2)[(1 - esin(lat))(1 + esin(lat))]^e/2} - double eSinLat=e*sin(lat); - //tan(pi/4 + lat/2)[(1 - esin(lat))(1 + esin(lat))]^e/2 - double tn1=tan(.5*(HalfPi+lat)); - double d1=tn1*pow((1-eSinLat)/(1+eSinLat), .5*e); - *yP=(FN+a*k0*log(d1))/k1y; + //N = FN + a*k0* ln{tan(pi/4 + lat/2)[(1 - esin(lat))(1 + esin(lat))]^e/2} + double eSinLat = e * sin(lat); + //tan(pi/4 + lat/2)[(1 - esin(lat))(1 + esin(lat))]^e/2 + double tn1 = tan(.5 * (HalfPi + lat)); + double d1 = tn1 * pow((1 - eSinLat) / (1 + eSinLat), .5 * e); + *yP = (FN + a * k0 * log(d1)) / k1y; - //Northing N = 5171848.07 m + //Northing N = 5171848.07 m } //=================================================================================== /// Ïåðåâîä èç ìåòðè÷åñêèõ êîîðäèíàò X,Y â Lat / Lon //=================================================================================== + void CIngitMercatorProjection::Reverse(double x, double y, double *latP, double *lonP) //=================================================================================== { - //Reverse calculation for same easting and northing first gives : - // printf("X Y: %.1fx%.1f\n", x, y); + //Reverse calculation for same easting and northing first gives : + // printf("X Y: %.1fx%.1f\n", x, y); - x*=k1x; - y*=k1y; + x *= k1x; + y *= k1y; - //t = B^((FN-N)/a*k0) - //B = base of the natural logarithm, 2.7182818... - double t=exp((FN-y)/(a*k0)); - //where chi = pi/2 - 2 arctan t - double chi=HalfPi-2*atan(t); - //t = 0.33639129 chi = 0.92179596 + //t = B^((FN-N)/a*k0) + //B = base of the natural logarithm, 2.7182818... + double t = exp((FN - y) / (a * k0)); + //where chi = pi/2 - 2 arctan t + double chi = HalfPi - 2 * atan(t); + //t = 0.33639129 chi = 0.92179596 - *lonP=((x - FE)/(a*k0)) + lon0; - //lon = ((E - FE)/a*k0) + lon0 + *lonP = ((x - FE) / (a * k0)) + lon0; + //lon = ((E - FE)/a*k0) + lon0 - /* - lat = chi + (esq/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2chi) - + (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4chi) - + (7e^6/120 + 81e^8/1120) sin(6chi) + (4279e^8/161280) sin(8chi) - */ + /* + lat = chi + (esq/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2chi) + + (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4chi) + + (7e^6/120 + 81e^8/1120) sin(6chi) + (4279e^8/161280) sin(8chi) + */ - *latP=chi+kE2*sin(2*chi)+kE4*sin(4*chi)+kE6*sin(6*chi)+kE8*sin(8*chi); - //Then Latitude = 53o00'00.000"N = 0.9250245 rad - //Longitude = 53o00'00.000"E = 0.9250245 rad + *latP = chi + kE2 * sin(2 * chi) + kE4 * sin(4 * chi) + kE6 * sin(6 * chi) + kE8 * sin(8 * chi); + //Then Latitude = 53o00'00.000"N = 0.9250245 rad + //Longitude = 53o00'00.000"E = 0.9250245 rad } //======================================== + WGS84SK42Projection::WGS84SK42Projection (double H1) //======================================== { - ro = 206264.8062; // ×èñëî óãëîâûõ ñåêóíä â ðàäèàíå + ro = 206264.8062; // ×èñëî óãëîâûõ ñåêóíä â ðàäèàíå - //Ýëëèïñîèä Êðàñîâñêîãî (Ïóëêîâî 1942) - aP = 6378245.00; // Áîëüøàÿ ïîëóîñü - alP = 1/298.300; // Ñæàòèå - e2P = 2 * alP-alP*alP; // Êâàäðàò ýêñöåíòðèñèòåòà + //Ýëëèïñîèä Êðàñîâñêîãî (Ïóëêîâî 1942) + aP = 6378245.00; // Áîëüøàÿ ïîëóîñü + alP = 1 / 298.300; // Ñæàòèå + e2P = 2 * alP - alP * alP; // Êâàäðàò ýêñöåíòðèñèòåòà - // Ýëëèïñîèä GRS80 (WGS84) - aW = 6378137.00; // Áîëüøàÿ ïîëóîñü - alW = 1/298.257223563; // Ñæàòèå - e2W = 2 * alW - alW*alW; // Êâàäðàò ýêñöåíòðèñèòåòà + // Ýëëèïñîèä GRS80 (WGS84) + aW = 6378137.00; // Áîëüøàÿ ïîëóîñü + alW = 1 / 298.257223563; // Ñæàòèå + e2W = 2 * alW - alW * alW; // Êâàäðàò ýêñöåíòðèñèòåòà - // Âñïîìîãàòåëüíûå çíà÷åíèÿ äëÿ ïðåîáðàçîâàíèÿ ýëëèïñîèäîâ - a = (aP + aW)/2; - e2 = (e2P + e2W)/2; - da = aW - aP; - de2 = e2W - e2P; + // Âñïîìîãàòåëüíûå çíà÷åíèÿ äëÿ ïðåîáðàçîâàíèÿ ýëëèïñîèäîâ + a = (aP + aW) / 2; + e2 = (e2P + e2W) / 2; + da = aW - aP; + de2 = e2W - e2P; - // Ëèíåéíûå ýëåìåíòû òðàíñôîðìèðîâàíèÿ, â ìåòðàõ - dx = 23.92; - //dx = 25-1.08; // Exel - dy = -141.27; - //dy = -141-0.27; // Exel - dz = -80.9; - // dz = -80-0.9; // Exel + // Ëèíåéíûå ýëåìåíòû òðàíñôîðìèðîâàíèÿ, â ìåòðàõ + dx = 23.92; + //dx = 25-1.08; // Exel + dy = -141.27; + //dy = -141-0.27; // Exel + dz = -80.9; + // dz = -80-0.9; // Exel - //Óãëîâûå ýëåìåíòû òðàíñôîðìèðîâàíèÿ, â ñåêóíäàõ - //wx = 0+0; // Exel - wx = 0.0; - // wy = -0.35+0; // Exel - wy = -0.35; - //wz = -0.66-0.16; // Exel - wz = -0.82; + //Óãëîâûå ýëåìåíòû òðàíñôîðìèðîâàíèÿ, â ñåêóíäàõ + //wx = 0+0; // Exel + wx = 0.0; + // wy = -0.35+0; // Exel + wy = -0.35; + //wz = -0.66-0.16; // Exel + wz = -0.82; - // Äèôôåðåíöèàëüíîå ðàçëè÷èå ìàñøòàáîâ - ms = -0.12e-6; - //ms = (0-0,12)*0,000001; // Exel + // Äèôôåðåíöèàëüíîå ðàçëè÷èå ìàñøòàáîâ + ms = -0.12e-6; + //ms = (0-0,12)*0,000001; // Exel } //=================================================================================== -// 55.601493, 36.420425, +// 55.601493, 36.420425, + void WGS84SK42Projection::Convert(double Bd, double Ld, double H, - double *Lon, double *Lat) - //=================================================================================== + double *Lon, double *Lat) +//=================================================================================== { - double B, - L, - M, - N, - dB, - dL; - //double dH; - //=================================================================================== - // Lon - B = Bd * Pi / 180; - L = Ld * Pi / 180; + double B, + L, + M, + N, + dB, + dL; + //double dH; + //=================================================================================== + // Lon + B = Bd * Pi / 180; + L = Ld * Pi / 180; - // M = a * (1 - e2) / (1 - e2 * Sin(B) ^ 2) ^ 1.5 - // N = a * (1 - e2 * Sin(B) ^ 2) ^ -0.5 + // M = a * (1 - e2) / (1 - e2 * Sin(B) ^ 2) ^ 1.5 + // N = a * (1 - e2 * Sin(B) ^ 2) ^ -0.5 - M = a * (1 - e2) / pow(1-e2*sin(B)*sin(B), 1.5); - N = a * pow(1 - e2 *(sin(B)*sin(B)), -0.5); + M = a * (1 - e2) / pow(1 - e2 * sin(B) * sin(B), 1.5); + N = a * pow(1 - e2 * (sin(B) * sin(B)), -0.5); - // dB = ro / (M + H) * (N / a * e2 * Sin(B) * Cos(B) * da - // + (N ^ 2 / a ^ 2 + 1) * N * Sin(B) * Cos(B) * de2 / 2 - // - (dx * Cos(L) + dy * Sin(L)) * Sin(B) + dz * Cos(B)) + // dB = ro / (M + H) * (N / a * e2 * Sin(B) * Cos(B) * da + // + (N ^ 2 / a ^ 2 + 1) * N * Sin(B) * Cos(B) * de2 / 2 + // - (dx * Cos(L) + dy * Sin(L)) * Sin(B) + dz * Cos(B)) - dB = ro / (M + H) * (N / a * e2 * sin(B) * cos(B) * da - + ((N*N)/ (a*a) + 1) * N * sin(B) * cos(B) * de2 / 2 - - (dx * cos(L) + dy * sin(L)) * sin(B) + dz * cos(B)); + dB = ro / (M + H) * (N / a * e2 * sin(B) * cos(B) * da + + ((N * N) / (a * a) + 1) * N * sin(B) * cos(B) * de2 / 2 + - (dx * cos(L) + dy * sin(L)) * sin(B) + dz * cos(B)); - // dB = dB - wx * Sin(L) * (1 + e2 * Cos(2 * B)) - // dB = dB + wy * Cos(L) * (1 + e2 * Cos(2 * B)) - // dB = dB - ro * ms * e2 * Sin(B) * Cos(B) + // dB = dB - wx * Sin(L) * (1 + e2 * Cos(2 * B)) + // dB = dB + wy * Cos(L) * (1 + e2 * Cos(2 * B)) + // dB = dB - ro * ms * e2 * Sin(B) * Cos(B) - dB = dB - wx * sin(L) * (1 + e2 * cos(2 * B)); - dB = dB + wy * cos(L) * (1 + e2 * cos(2 * B)); - dB = dB - ro * ms * e2 * sin(B) * cos(B); + dB = dB - wx * sin(L) * (1 + e2 * cos(2 * B)); + dB = dB + wy * cos(L) * (1 + e2 * cos(2 * B)); + dB = dB - ro * ms * e2 * sin(B) * cos(B); - *Lon = Bd + dB / 3600; - //=================================================================== - // Lat - //B = Bd * Pi / 180; - //L = Ld * Pi / 180; - //N = a * pow(1 - e2 *(sin(B)*sin(B)), -0.5); + *Lon = Bd + dB / 3600; + //=================================================================== + // Lat + //B = Bd * Pi / 180; + //L = Ld * Pi / 180; + //N = a * pow(1 - e2 *(sin(B)*sin(B)), -0.5); - // dL = ro / ((N + H) * Cos(B)) * (-dx * Sin(L) + dy * Cos(L)) - // + Tan(B) * (1 - e2) * (wx * Cos(L) + wy * Sin(L)) - wz + // dL = ro / ((N + H) * Cos(B)) * (-dx * Sin(L) + dy * Cos(L)) + // + Tan(B) * (1 - e2) * (wx * Cos(L) + wy * Sin(L)) - wz - dL = ro / ((N + H) * cos(B)) * (-dx * sin(L) + dy * cos(L)) - + tan(B) * (1 - e2) * (wx * cos(L) + wy * sin(L)) - wz; + dL = ro / ((N + H) * cos(B)) * ( -dx * sin(L) + dy * cos(L)) + + tan(B) * (1 - e2) * (wx * cos(L) + wy * sin(L)) - wz; - *Lat = Ld + dL / 3600; - //=================================================================================== - // Alt - /* - B = Bd * Pi / 180; - L = Ld * Pi / 180; + *Lat = Ld + dL / 3600; + //=================================================================================== + // Alt + /* + B = Bd * Pi / 180; + L = Ld * Pi / 180; - // N = a * (1 - e2 * Sin(B) ^ 2) ^ -0.5 + // N = a * (1 - e2 * Sin(B) ^ 2) ^ -0.5 - N = a * pow(1 - e2 *(sin(B)*sin(B)), -0.5); + N = a * pow(1 - e2 *(sin(B)*sin(B)), -0.5); - //dH = -a / N * da + N * Sin(B) ^ 2 * de2 / 2 - // + (dx * Cos(L) + dy * Sin(L)) * Cos(B) + dz * Sin(B) - // - N * e2 * Sin(B) * Cos(B) * (wx / ro * Sin(L) - wy / ro * Cos(L)) - // + (a ^ 2 / N + H) * ms + //dH = -a / N * da + N * Sin(B) ^ 2 * de2 / 2 + // + (dx * Cos(L) + dy * Sin(L)) * Cos(B) + dz * Sin(B) + // - N * e2 * Sin(B) * Cos(B) * (wx / ro * Sin(L) - wy / ro * Cos(L)) + // + (a ^ 2 / N + H) * ms - dH = -a / N * da + N * sin(B)*sin(B) * de2 / 2 - + (dx * cos(L) + dy * sin(L)) * cos(B) + dz * sin(B) - - N * e2 * sin(B) * cos(B) * (wx / ro * sin(L) - wy / ro * cos(L)) - + (a*a / N + H) * ms; + dH = -a / N * da + N * sin(B)*sin(B) * de2 / 2 + + (dx * cos(L) + dy * sin(L)) * cos(B) + dz * sin(B) + - N * e2 * sin(B) * cos(B) * (wx / ro * sin(L) - wy / ro * cos(L)) + + (a*a / N + H) * ms; - *h = H + dH; - */ + *h = H + dH; + */ } Index: IngitFile.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitFile.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- IngitFile.cpp 5 May 2004 10:52:18 -0000 1.10 +++ IngitFile.cpp 5 May 2004 15:33:19 -0000 1.11 @@ -9,64 +9,64 @@ #include "cmap.h" -gt *names_gt1 = NULL; +gt *names_gt1 = NULL; -unsigned short n_obj_codif = 0; // ÷èñëî ðàçíûõ îáúåêòîâ -nam_cod *names_codif = NULL; +unsigned short n_obj_codif = 0; // ÷èñëî ðàçíûõ îáúåêòîâ +nam_cod *names_codif = NULL; -h_object *obj = NULL; +h_object *obj = NULL; // Ìàññèâ êîîðäèíàò îáúåêòà -cord_object *Metr_OBJ = NULL; +cord_object *Metr_OBJ = NULL; -BYTE *buf; // Áóôåð çàãðóçêè ôàéëà. -unsigned int FileSize; // Äëèíà ôàéëà êàðòû -unsigned long *Index_Metr; // îôôñåòû Òàáëèöû Ñåãìåíòîâ. -unsigned long *Index_Atr; // îôôñåòû Òàáëèöû Àòðèáóòîâ. +BYTE *buf; // Áóôåð çàãðóçêè ôàéëà. +unsigned int FileSize; // Äëèíà ôàéëà êàðòû +unsigned long *Index_Metr; // îôôñåòû Òàáëèöû Ñåãìåíòîâ. +unsigned long *Index_Atr; // îôôñåòû Òàáëèöû Àòðèáóòîâ. //=================================================================================== // Ñòðóêòóðà Ãðàôè÷åñêîé òàáëèöû ôàéëà êàðòû //=================================================================================== -//char names_gt[300][10]; // Èìåíà êîäèôèêàòîðîâ -short n_obj_table_graph = 0; // ÷èñëî îáúåêòîâ -short Len_code; // Äëèíà Êîäèôèêàòîðà +//char names_gt[300][10]; // Èìåíà êîäèôèêàòîðîâ +short n_obj_table_graph = 0; // ÷èñëî îáúåêòîâ +short Len_code; // Äëèíà Êîäèôèêàòîðà //=================================================================================== -long OffsetOBJ; // Ñìåùåíèå äî òàáëèöû Îáúåêòîâ -long Offset_Metr; // Ñìåùåíèå äî òàáëèöû Ñåãìåíòîâ -unsigned long Offset_Grapf_Tab; // Ñìåùåíèå äî Ãðàôè÷åñêîé òàáëèöû -long Offset_Atr_Tab; // Ñìåùåíèå äî òàáëèöû Àòðèáóòîâ -short FLAG; // Ïðèçíàê ÷òî ôàéë èìååò ìåíüøóþ -// äëèíó òàáëööû îáúåêòîâ -1 +long OffsetOBJ; // Ñìåùåíèå äî òàáëèöû Îáúåêòîâ +long Offset_Metr; // Ñìåùåíèå äî òàáëèöû Ñåãìåíòîâ +unsigned long Offset_Grapf_Tab; // Ñìåùåíèå äî Ãðàôè÷åñêîé òàáëèöû +long Offset_Atr_Tab; // Ñìåùåíèå äî òàáëèöû Àòðèáóòîâ +short FLAG; // Ïðèçíàê ÷òî ôàéë èìååò ìåíüøóþ +// äëèíó òàáëööû îáúåêòîâ -1 -unsigned long Max_Num_Segment, // Íîìåð ïîñëåäíåãî ñåãìåíòà. -Max_Num_OBJ; // êîëè÷åñòâî îáúêòîâ -unsigned short Max_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ +unsigned long Max_Num_Segment, // Íîìåð ïîñëåäíåãî ñåãìåíòà. +Max_Num_OBJ; // êîëè÷åñòâî îáúêòîâ +unsigned short Max_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ -long xTopRight; -long yTopRight; +long xTopRight; +long yTopRight; -short scaleX, +short scaleX, scaleY; -long LAT_SouthWest; //øèðîòà þæíîé ãðàíèöû ëèñòà -long LON_SouthWest; //äîëãîòà çàïàäíîé ãðàíèöû êàðòû -long LAT_NorthEast; //øèðîòà ñåâåðíîé ãðàíèöû ëèñòà -long LON_NorthEast; //äîëãîòà âîñòî÷íîé ãðàíèöû ëèñòà +long LAT_SouthWest; //øèðîòà þæíîé ãðàíèöû ëèñòà +long LON_SouthWest; //äîëãîòà çàïàäíîé ãðàíèöû êàðòû +long LAT_NorthEast; //øèðîòà ñåâåðíîé ãðàíèöû ëèñòà +long LON_NorthEast; //äîëãîòà âîñòî÷íîé ãðàíèöû ëèñòà -double Kx; -double Ky; +double Kx; +double Ky; //=================================================================================== -// -unsigned long Map_Total_Points; // Êîëè÷åñòâî ïàð êîîðäèíàò +// +unsigned long Map_Total_Points; // Êîëè÷åñòâî ïàð êîîðäèíàò // Âûâåäåíûõ â ôàéë -unsigned long Map_Total_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ +unsigned long Map_Total_Segment; // Îáùåå êîë-âî Ñåãìåíòîâ #define PRECISION 1e-8 #ifdef _DEBUG static void checkCoords(CIngitMercatorProjection &Maps, double lonSW, double latSW, double lonNE, double latNE, int i) { - double Lat_met, - Lon_met; + double Lat_met, + Lon_met; Maps.Reverse (Metr_OBJ[i].Lon, Metr_OBJ[i].Lat, &Lon_met, &Lat_met); ASSERT( @@ -85,234 +85,243 @@ short ReadMetric(unsigned short num_OBJ, CIngitMercatorProjection &Maps, double latSW, double lonSW, double latNE, double lonNE) //================================================= { - unsigned short Num_Segment; - unsigned long pointer; - long Offset_Segment; - short X_Long_Metric, - Y_Long_Metric; - char X_byte, - Y_byte; - short Next_byte; - short num; - double aray_Lon[60000], - aray_Lat[60000]; - //=============================================================================== - num=1; // "Îáíóëÿåì" ïîðÿäêîâûé íîìåð ñåãìåíòà îáúåêòà. - unsigned short num_array = 0; // Óêàçàòåëü çàïèñè â ìàññèâå êîîðäèíàò - unsigned short begin_seg; // - short type_segment = 0x00; // Òèï ñåãìåíòà - pointer = obj[num_OBJ].data; - // âûáèðàòü êîîðäèíàòû íà äëèíó next_byte - //=============================================================================== - while (pointer < obj[num_OBJ].data+obj[num_OBJ].next_byte) { - // Íîìåð Ñåãìåíòà - memcpy(&Num_Segment, buf+pointer,2); + unsigned short Num_Segment; + unsigned long pointer; + long Offset_Segment; + short X_Long_Metric, + Y_Long_Metric; + char X_byte, + Y_byte; + short Next_byte; + short num; + double aray_Lon[60000], + aray_Lat[60000]; + //=============================================================================== + num = 1; // "Îáíóëÿåì" ïîðÿäêîâûé íîìåð ñåãìåíòà îáúåêòà. + unsigned short num_array = 0; // Óêàçàòåëü çàïèñè â ìàññèâå êîîðäèíàò + unsigned short begin_seg; // + short type_segment = 0x00; // Òèï ñåãìåíòà + pointer = obj[num_OBJ].data; + // âûáèðàòü êîîðäèíàòû íà äëèíó next_byte + //=============================================================================== + while (pointer < obj[num_OBJ].data + obj[num_OBJ].next_byte) { + // Íîìåð Ñåãìåíòà + memcpy(&Num_Segment, buf + pointer, 2); if (Index_Metr[Num_Segment] != 0) { - Offset_Segment = Index_Metr[Num_Segment]+1; // Óêàçàòåëü íà íîìåð Ñåãìåíòà - Offset_Segment += 2; - // Ïåðâûå Êîîðäèíàòû Ñåãìåíòà - Word. - memcpy(&X_Long_Metric, buf+Offset_Segment, 2); - memcpy(&Y_Long_Metric, buf+Offset_Segment+2, 2); - Offset_Segment += 4; + Offset_Segment = Index_Metr[Num_Segment] + 1; // Óêàçàòåëü íà íîìåð Ñåãìåíòà + Offset_Segment += 2; + // Ïåðâûå Êîîðäèíàòû Ñåãìåíòà - Word. + memcpy(&X_Long_Metric, buf + Offset_Segment, 2); + memcpy(&Y_Long_Metric, buf + Offset_Segment + 2, 2); + Offset_Segment += 4; - Metr_OBJ[num_array].Lon = X_Long_Metric *(xTopRight/10.0/scaleX); - Metr_OBJ[num_array].Lat = Y_Long_Metric *(yTopRight/10.0/scaleY); - Metr_OBJ[num_array].nun_segment = Num_Segment; - Metr_OBJ[num_array].num = num; + Metr_OBJ[num_array].Lon = X_Long_Metric * (xTopRight / 10.0 / scaleX); + Metr_OBJ[num_array].Lat = Y_Long_Metric * (yTopRight / 10.0 / scaleY); + Metr_OBJ[num_array].nun_segment = Num_Segment; + Metr_OBJ[num_array].num = num; #ifdef _DEBUG - checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); + + checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); #endif - begin_seg = num_array; - num_array++; - Map_Total_Segment++;; // Ñ÷åò÷èê âûâåäåíûõ Ñåãìåíòîâ - Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò - //------------------------------------------ - Next_byte = buf[Offset_Segment++];// ×èòàåì Êîë-âî ñëåäóþùèõ áàéò - //=============================================================================== - // Öèêë âûáîðêè ñëåäóþùèõ áàéò êîîðäèíàò. - while (Next_byte != 0){ - if ((Next_byte & 0x1) == 0){ //Next_byte - ÷åòíûé Cìåùåíèÿ â áàéòàõ - for (short k=0; k < Next_byte/2 ; k++){ - X_byte = buf[Offset_Segment++]; - Y_byte = buf[Offset_Segment++]; - X_Long_Metric += X_byte; - Y_Long_Metric += Y_byte; - Metr_OBJ[num_array].Lon = X_Long_Metric*(xTopRight/10.0/scaleX); - Metr_OBJ[num_array].Lat = Y_Long_Metric*(yTopRight/10.0/scaleY); - Metr_OBJ[num_array].type =0; - Metr_OBJ[num_array].nun_segment = Num_Segment; - Metr_OBJ[num_array].num = num; + + begin_seg = num_array; + num_array++; + Map_Total_Segment++; + ; // Ñ÷åò÷èê âûâåäåíûõ Ñåãìåíòîâ + Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò + //------------------------------------------ + Next_byte = buf[Offset_Segment++]; // ×èòàåì Êîë-âî ñëåäóþùèõ áàéò + //=============================================================================== + // Öèêë âûáîðêè ñëåäóþùèõ áàéò êîîðäèíàò. + while (Next_byte != 0) { + if ((Next_byte & 0x1) == 0) { //Next_byte - ÷åòíûé Cìåùåíèÿ â áàéòàõ + for (short k = 0; k < Next_byte / 2 ; k++) { + X_byte = buf[Offset_Segment++]; + Y_byte = buf[Offset_Segment++]; + X_Long_Metric += X_byte; + Y_Long_Metric += Y_byte; + Metr_OBJ[num_array].Lon = X_Long_Metric * (xTopRight / 10.0 / scaleX); + Metr_OBJ[num_array].Lat = Y_Long_Metric * (yTopRight / 10.0 / scaleY); + Metr_OBJ[num_array].type = 0; + Metr_OBJ[num_array].nun_segment = Num_Segment; + Metr_OBJ[num_array].num = num; #ifdef _DEBUG - checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); + + checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); #endif - num_array++; - Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò - } - } - else{// Äëèííûå ñìåùåíèÿ. Next_byte - ÍÅ ÷åòíûé - for (short k=0; k < (Next_byte-1)/2 ; k++){ - memcpy(&X_Long_Metric, buf+Offset_Segment,2); - memcpy(&Y_Long_Metric, buf+Offset_Segment+2,2); - Offset_Segment += 4; - Metr_OBJ[num_array].Lon = X_Long_Metric*(xTopRight/10.0/scaleX); - Metr_OBJ[num_array].Lat = Y_Long_Metric*(yTopRight/10.0/scaleY); - Metr_OBJ[num_array].type =0; - Metr_OBJ[num_array].nun_segment = Num_Segment; - Metr_OBJ[num_array].num = num; + num_array++; + Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò + } + } + else { // Äëèííûå ñìåùåíèÿ. Next_byte - ÍÅ ÷åòíûé + for (short k = 0; k < (Next_byte - 1) / 2 ; k++) { + memcpy(&X_Long_Metric, buf + Offset_Segment, 2); + memcpy(&Y_Long_Metric, buf + Offset_Segment + 2, 2); + Offset_Segment += 4; + + Metr_OBJ[num_array].Lon = X_Long_Metric * (xTopRight / 10.0 / scaleX); + Metr_OBJ[num_array].Lat = Y_Long_Metric * (yTopRight / 10.0 / scaleY); + Metr_OBJ[num_array].type = 0; + Metr_OBJ[num_array].nun_segment = Num_Segment; + Metr_OBJ[num_array].num = num; #ifdef _DEBUG - checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); + + checkCoords(Maps, latSW, lonSW, latNE, lonNE, num_array); #endif - num_array++; - Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò - } - } - Next_byte = buf[Offset_Segment++]; - num++; - } + + num_array++; + Map_Total_Points++; // Ñ÷åò÷èê âûâåäåíûõ êîîðäèíàò + } + } + Next_byte = buf[Offset_Segment++]; + num++; + } } else printf("Skip segment: %X, %X\n", Num_Segment, buf[pointer + 2]); - // Êîíåö Öèêëà âûáîðêè ñëåäóþùèõ áàéò êîîðäèíàò. - //============================================= - pointer += 2; - //short jj1=0; - type_segment = buf[pointer]; - Metr_OBJ[begin_seg].type = type_segment; - //============================================= - // Îòáðàñûâàíèå ïîâòîðÿþùèõñÿ êîîðäèíàò - //if (num_array > 1){ - // if (Metr_OBJ[begin_seg].Lon == Metr_OBJ[num_array-1].Lon && - // Metr_OBJ[begin_seg].Lat == Metr_OBJ[num_array-1].Lat ) { - //printf ("B %6.f %6.f\n" ,Metr_OBJ[begin_seg].Lon, Metr_OBJ[begin_seg].Lat); - //printf ("E %6.f %6.f\n" ,Metr_OBJ[num_array-1].Lon, Metr_OBJ[num_array-1].Lat); - //printf ("%X\n", type_segment); - // num_array--; - // }//if (type_segment != 0x80){ ch = getch();} - //} - int i1,j1; - switch (type_segment){ -case 0x80: - Metr_OBJ[num_array].t1 = buf[pointer]; - Metr_OBJ[num_array].t2 = buf[pointer+1]; - Metr_OBJ[num_array].t3 = buf[pointer+2]; - Metr_OBJ[num_array].t4 = buf[pointer+3]; - pointer += 4; - break; + // Êîíåö Öèêëà âûáîðêè ñëåäóþùèõ áàéò êîîðäèíàò. + //============================================= + pointer += 2; + //short jj1=0; + type_segment = buf[pointer]; + Metr_OBJ[begin_seg].type = type_segment; + //============================================= + // Îòáðàñûâàíèå ïîâòîðÿþùèõñÿ êîîðäèíàò + //if (num_array > 1){ + // if (Metr_OBJ[begin_seg].Lon == Metr_OBJ[num_array-1].Lon && + // Metr_OBJ[begin_seg].Lat == Metr_OBJ[num_array-1].Lat ) { + //printf ("B %6.f %6.f\n" ,Metr_OBJ[begin_seg].Lon, Metr_OBJ[begin_seg].Lat); + //printf ("E %6.f %6.f\n" ,Metr_OBJ[num_array-1].Lon, Metr_OBJ[num_array-1].Lat); + //printf ("%X\n", type_segment); + // num_array--; + // }//if (type_segment != 0x80){ ch = getch();} + //} + int i1, j1; + switch (type_segment) { + case 0x80: + Metr_OBJ[num_array].t1 = buf[pointer]; + Metr_OBJ[num_array].t2 = buf[pointer + 1]; + Metr_OBJ[num_array].t3 = buf[pointer + 2]; + Metr_OBJ[num_array].t4 = buf[pointer + 3]; + pointer += 4; + break; -case 0x60: - Metr_OBJ[num_array].t1 = buf[pointer]; - Metr_OBJ[num_array].t2 = buf[pointer+1]; - Metr_OBJ[num_array].t3 = buf[pointer+2]; - Metr_OBJ[num_array].t4 = buf[pointer+3]; - pointer += 4; - j1=0; - //if (num_array-begin_seg < 4){ - //printf ("60 %i\n" ,num_array-begin_seg); - //if (Metr_OBJ[begin_seg].Lon == Metr_OBJ[num_array-1].Lon && - // Metr_OBJ[begin_seg].Lat == Metr_OBJ[num_array-1].Lat) { - //printf ("B %6.f %6.f\n" ,Metr_OBJ[begin_seg].Lon, Metr_OBJ[begin_seg].Lat); - //printf ("E %6.f %6.f\n" ,Metr_OBJ[num_array-1].Lon, Metr_OBJ[num_array-1].Lat); - // num_array--; - //} - for (i1 = begin_seg; i1 < num_array; i1++){ - aray_Lon[j1] = Metr_OBJ[begin_seg+j1].Lon; - aray_Lat[j1] = Metr_OBJ[begin_seg+j1].Lat; - //printf ("%6.f %6.f\n" ,Metr_OBJ[begin_seg+j1].Lon, Metr_OBJ[begin_seg+j1].Lat); - j1++; - } - j1=0; - for (i1 = begin_seg; i1 < num_array; i1++){ - Metr_OBJ[begin_seg+j1].Lon = aray_Lon[num_array-1-i1]; - Metr_OBJ[begin_seg+j1].Lat = aray_Lat[num_array-1-i1]; - //printf ("%6.f %6.f\n" ,Metr_OBJ[begin_seg+j1].Lon, Metr_OBJ[begin_seg+j1].Lat); - j1++; - } - break; + case 0x60: + Metr_OBJ[num_array].t1 = buf[pointer]; + Metr_OBJ[num_array].t2 = buf[pointer + 1]; + Metr_OBJ[num_array].t3 = buf[pointer + 2]; + Metr_OBJ[num_array].t4 = buf[pointer + 3]; + pointer += 4; + j1 = 0; + //if (num_array-begin_seg < 4){ + //printf ("60 %i\n" ,num_array-begin_seg); + //if (Metr_OBJ[begin_seg].Lon == Metr_OBJ[num_array-1].Lon && + // Metr_OBJ[begin_seg].Lat == Metr_OBJ[num_array-1].Lat) { + //printf ("B %6.f %6.f\n" ,Metr_OBJ[begin_seg].Lon, Metr_OBJ[begin_seg].Lat); + //printf ("E %6.f %6.f\n" ,Metr_OBJ[num_array-1].Lon, Metr_OBJ[num_array-1].Lat); + // num_array--; + //} + for (i1 = begin_seg; i1 < num_array; i1++) { + aray_Lon[j1] = Metr_OBJ[begin_seg + j1].Lon; + aray_Lat[j1] = Metr_OBJ[begin_seg + j1].Lat; + //printf ("%6.f %6.f\n" ,Metr_OBJ[begin_seg+j1].Lon, Metr_OBJ[begin_seg+j1].Lat); + j1++; + } + j1 = 0; + for (i1 =... [truncated message content] |
From: Denis P. <dy...@us...> - 2004-05-05 13:12:39
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10971 Modified Files: cmap.cpp Log Message: Correct reading of .gct file. XOR whole file buffer (better for optimizer). Index: cmap.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/cmap.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- cmap.cpp 5 May 2004 10:52:18 -0000 1.28 +++ cmap.cpp 5 May 2004 13:12:31 -0000 1.29 @@ -271,7 +271,10 @@ exit(1); } while (fscanf (inGCT, "%s" , FileMap[n_gct]) != -1) - n_gct++; + if (FileMap[n_gct][0] == 0x1A) + break; + else + n_gct++; if (!memcmp("LAYERS", FileMap[0], 7)){ for (int j = 1; j < n_gct; j++){ @@ -509,7 +512,7 @@ //xorKey = buf[0x6d]^0; //×èòàåì XOR // xorKey = buf[0x90]^0; //×èòàåì XOR for (k=0; k < 16; k++){ xorKey ^= buf[FileSize - 50 + k];} - for (k=0; k < FileSize-1; k++){ buf[k] ^= xorKey;} + for (k=0; k < FileSize; k++){ buf[k] ^= xorKey;} printf("Searching objects...\n"); //printf("%i\n", xorKey); |
From: Denis P. <dy...@us...> - 2004-05-05 13:11:00
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10641 Modified Files: IngitTable.cpp Log Message: Add ASSERT(Num_Metric_Object <= Max_Num_Segment); Cleanup Check_name_cod1 Index: IngitTable.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitTable.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- IngitTable.cpp 5 May 2004 10:52:18 -0000 1.8 +++ IngitTable.cpp 5 May 2004 13:10:52 -0000 1.9 @@ -73,6 +73,7 @@ //if (Num_Metric_Object > Max_Num_Segment) { // printf("Segment %i\n", Num_Metric_Object); // } + ASSERT(Num_Metric_Object <= Max_Num_Segment); Index_Metr[Num_Metric_Object] = Offset_Segment-1; if (Num_Metric_Object == Max_Num_Segment) {break;} #ifdef DEBUG_IndexTabSegment @@ -359,12 +360,20 @@ //=================================================================================== { int len; - if (len_code == 8) {len = 7;} - if (len_code == 2) {len = 2;} - for (short i = 0; i < n_obj_codif; i++){ + if (len_code == 8) + len = 7; + else if (len_code == 2) + len = 2; + else { + printf("Unknown len_code: %u\n", len_code); + exit(1); + } + + for (unsigned int i = 0; i < n_obj_codif; i++){ // Ïîñëåäíèé 0 êîäèôèêàòîðå íå âñåãäà 0 - if (!memcmp(str, names_codif[i].name, len)) + if (memcmp(str, names_codif[i].name, len) == 0) return i; } return -1; } + |
From: Denis P. <dy...@us...> - 2004-05-05 11:46:45
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22425 Modified Files: PolishFormat.cpp Log Message: Remove debug output Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- PolishFormat.cpp 5 May 2004 10:52:18 -0000 1.17 +++ PolishFormat.cpp 5 May 2004 11:46:36 -0000 1.18 @@ -29,7 +29,6 @@ if (warnedCODpos >= warnedCODsize) { warnedCODsize = (warnedCODs == NULL) ? 256 : warnedCODsize * 2; - fprintf(stderr, "Resizing to %u\n", warnedCODsize); warnedCODs = (char **)s_realloc(warnedCODs, warnedCODsize * sizeof(char *)); } |
From: Denis P. <dy...@us...> - 2004-05-05 11:17:57
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16541 Modified Files: dbf.cpp Log Message: Replace short with int to fix stack vars overlap for gcc Index: dbf.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/dbf.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- dbf.cpp 5 May 2004 10:52:18 -0000 1.10 +++ dbf.cpp 5 May 2004 11:17:49 -0000 1.11 @@ -160,7 +160,7 @@ // Ðåçåðâèðîâàíèå file_cod1 = (topo_cod1 *)s_malloc(sizeof(topo_cod1) * recnum); //================================================================ - short do_export; + int do_export; long pointerDBF; long pointerDBF1; char bufsrt[256]; |
From: Denis P. <dy...@us...> - 2004-05-05 10:52:29
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12497 Modified Files: IngitFile.cpp IngitTable.cpp PolishFormat.cpp cmap.cpp common.cpp common.h dbf.cpp Log Message: Fix bug 938069. Crash on out of mem. Index: dbf.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/dbf.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- dbf.cpp 4 May 2004 23:15:17 -0000 1.9 +++ dbf.cpp 5 May 2004 10:52:18 -0000 1.10 @@ -92,8 +92,7 @@ FILE *inDBF = fopen(file_dbf, "rb"); //=================================================================================== // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ ôàéëà DBF. - if ((bufDBF = (char *) malloc (file_dbf_size+1)) == NULL) { - printf ("Not enough memory...\n"); exit(1); } + bufDBF = (char *)s_malloc(file_dbf_size + 1); fread(bufDBF, 1, file_dbf_size, inDBF); //×èòàåì çàãîëîâîê DBF memcpy(&zerobyte, bufDBF, 2); // Òèï ôàéëîâ @@ -159,7 +158,7 @@ //================================================================ // Ðåçåðâèðîâàíèå - file_cod1 = (topo_cod1 *) malloc(sizeof(topo_cod1)*recnum); + file_cod1 = (topo_cod1 *)s_malloc(sizeof(topo_cod1) * recnum); //================================================================ short do_export; long pointerDBF; Index: common.h =================================================================== RCS file: /cvsroot/cmap/cmap/common.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- common.h 5 May 2004 10:41:29 -0000 1.5 +++ common.h 5 May 2004 10:52:18 -0000 1.6 @@ -22,6 +22,10 @@ int s_atoi(const char *s); +void *s_malloc(size_t size); +void s_free(void *ptr); +void *s_realloc(void *ptr, size_t size); + #endif // __CMAP_COMMON_H__ Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- PolishFormat.cpp 5 May 2004 10:41:29 -0000 1.16 +++ PolishFormat.cpp 5 May 2004 10:52:18 -0000 1.17 @@ -30,7 +30,7 @@ if (warnedCODpos >= warnedCODsize) { warnedCODsize = (warnedCODs == NULL) ? 256 : warnedCODsize * 2; fprintf(stderr, "Resizing to %u\n", warnedCODsize); - warnedCODs = (char **)realloc(warnedCODs, warnedCODsize * sizeof(char *)); + warnedCODs = (char **)s_realloc(warnedCODs, warnedCODsize * sizeof(char *)); } warnedCODs[warnedCODpos++] = cod; @@ -40,7 +40,7 @@ static void clearWarned() { if (warnedCODs != NULL) - free(warnedCODs); + s_free(warnedCODs); warnedCODs = NULL; warnedCODpos = 0; warnedCODsize = 0; Index: IngitFile.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitFile.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- IngitFile.cpp 5 May 2004 10:32:03 -0000 1.9 +++ IngitFile.cpp 5 May 2004 10:52:18 -0000 1.10 @@ -368,7 +368,7 @@ // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ ñòðóêòóðû îáúåêòîâ // Ñäåëàòü FREE!!! obj = (h_object *) - malloc(sizeof(h_object)*(Max_Num_OBJ+2)); + s_malloc(sizeof(h_object)*(Max_Num_OBJ+2)); memset(obj, 0, sizeof(h_object)*(Max_Num_OBJ+2)); //printf("size %i\n", sizeof(h_object)*Max_Num_OBJ); Index: cmap.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/cmap.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- cmap.cpp 5 May 2004 10:30:51 -0000 1.27 +++ cmap.cpp 5 May 2004 10:52:18 -0000 1.28 @@ -2,7 +2,6 @@ #include <fcntl.h> //'O_RDONLY' #include <stdlib.h> // exit(0); #include <stdio.h> -#include <malloc.h> #include <string.h> #ifdef WIN32 @@ -486,8 +485,7 @@ //=============================================== // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ ôàéëà êàðòû. // Free â êîíöå ReadTableOBJ - if ((buf = (BYTE *) malloc (FileSize)) == NULL) { - printf ("Not enough memory...\n"); exit(1); } + buf = (BYTE *)s_malloc(FileSize); fread(buf, 1, FileSize, inMaps); unsigned short s; @@ -521,17 +519,17 @@ if (Len_code == 2){Read_DBF("plan.dbf");} if (Len_code == 6){ printf("Marine maps are not supported"); exit (1);} //=============================================== - Metr_OBJ = (cord_object *)malloc(sizeof(cord_object) * 65536); + Metr_OBJ = (cord_object *)s_malloc(sizeof(cord_object) * 65536); Export_IMG (outIMG); - free (Metr_OBJ); - free (buf); - free (obj); - free (Index_Metr); - free (Index_Atr); - free (names_codif); - free (names_gt1); + s_free(Metr_OBJ); + s_free(buf); + s_free(obj); + s_free(Index_Metr); + s_free(Index_Atr); + s_free(names_codif); + s_free(names_gt1); printf("Points......%i\n", N_Points); printf("Polylines...%i\n", N_Poliline); Index: common.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/common.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- common.cpp 5 May 2004 10:41:29 -0000 1.4 +++ common.cpp 5 May 2004 10:52:18 -0000 1.5 @@ -1,4 +1,5 @@ #include <stdlib.h> // äëÿ NULL +#include <stdio.h> #include <ctype.h> #include "common.h" @@ -305,3 +306,29 @@ return ::atoi(s); } +void *s_malloc(size_t size) { + void *p = malloc(size); + if (p == NULL) { + printf("Out of memory\n"); + exit(1); + } + return p; +} + +void s_free(void *ptr) { + if (ptr == NULL) { + printf("NULL pointer passed to free\n"); + exit(1); + } + free(ptr); +} + +void *s_realloc(void *ptr, size_t size) { + void *p = realloc(ptr, size); + if (p == NULL) { + printf("Out of memory\n"); + exit(1); + } + return p; +} + Index: IngitTable.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitTable.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- IngitTable.cpp 4 May 2004 13:00:49 -0000 1.7 +++ IngitTable.cpp 5 May 2004 10:52:18 -0000 1.8 @@ -52,7 +52,7 @@ //============================================================== // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ òàáëèöû ñìåùåíèé Ñåãìåíòîâ. // Freee ïîêà â êîíöå ReadTableOBJ - if ((Index_Metr = (unsigned long *) malloc ((Max_Num_Segment+3)*4)) == NULL) { + if ((Index_Metr = (unsigned long *) s_malloc ((Max_Num_Segment+3)*4)) == NULL) { printf ("Not enough memory...\n"); exit(1); } for (unsigned short j=0; j < Max_Num_Segment; j++){ Index_Metr[j] = 0;} //============================================================== @@ -133,14 +133,12 @@ //=================================================================================== // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ òàáëèöû ñìåùåíèé Àòðèáóòîâ. // Free äëÿ Index_Atr äåëàåòñÿ â êîíöå - if ((Index_Atr = (unsigned long *) malloc ((Max_Num_OBJ+1)*4)) == NULL) { - printf ("Not enough memory...\n"); exit(1); } - for (j=0; j < Max_Num_OBJ+1; j++){ Index_Atr[j] = 0;} + Index_Atr = (unsigned long *)s_malloc((Max_Num_OBJ + 1) * sizeof(unsigned long *)); + memset(Index_Atr, 0, (Max_Num_OBJ + 1) * sizeof(unsigned long *)); // Ðåçåðâèðîâàíèå ïàìÿòè äëÿ òàáëèöû Óíèêàëüíûõ èìåí êîäèôèêàòîðîâ // Free äëÿ names_codif äåëàåòñÿ â êîíöå - names_codif = (nam_cod *) - malloc(sizeof(nam_cod)*500); - for (i = 0; i < 500; i++){ names_codif[i].num = 0;} + names_codif = (nam_cod *)s_malloc(sizeof(nam_cod) * 500); + memset(names_codif, 0, sizeof(nam_cod) * 500); fprintf(outF, "Indexing table...\n"); //=================================================================================== n_obj_codif = 0; // Îáíóëèòü C÷åò÷èê óíèêàëüíûõ îáúåêòîâ. @@ -287,11 +285,8 @@ { // Ðåçåðâèðîâàíèå ïàìÿòè // - names_gt1 = (gt *) - malloc(sizeof(gt)*400); - for (short j = 0; j < 400; j++){ - for (short j1 = 0; j1 < 10; j1++){ names_gt1[j].name[j1] = 0;} - } + names_gt1 = (gt *)s_malloc(sizeof(gt) * 400); + memset(names_gt1, 0, sizeof(gt) * 400); // Çàãðóæàåì øàïêó Ãðàôè÷åñêîé Òàáëèöû memcpy(Graph_Tab_signature, buf+Offset_Grapf_Tab, 50); |
From: Denis P. <dy...@us...> - 2004-05-05 10:41:41
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10958 Modified Files: PolishFormat.cpp common.cpp common.h Log Message: move s_atoi to common Index: common.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/common.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- common.cpp 5 May 2004 10:38:16 -0000 1.3 +++ common.cpp 5 May 2004 10:41:29 -0000 1.4 @@ -298,3 +298,10 @@ s[i] = toupper(s[i]); } +int s_atoi(const char *s) { + if (s == NULL) + return -1; + + return ::atoi(s); +} + Index: common.h =================================================================== RCS file: /cvsroot/cmap/cmap/common.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- common.h 5 May 2004 10:38:17 -0000 1.4 +++ common.h 5 May 2004 10:41:29 -0000 1.5 @@ -20,6 +20,8 @@ void RusToEng (char *str, char *str_rus); void toUpperWin(char *s); +int s_atoi(const char *s); + #endif // __CMAP_COMMON_H__ Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- PolishFormat.cpp 5 May 2004 10:38:16 -0000 1.15 +++ PolishFormat.cpp 5 May 2004 10:41:29 -0000 1.16 @@ -18,14 +18,6 @@ //unsigned long plt_points; // Êîë-âî çàïèñàíûõ òî÷åê â .PLT unsigned long pat_points; // Êîë-âî çàïèñàíûõ òî÷åê â .PLT - -static int s_atoi(const char *s) { - if (s == NULL) - return -1; - - return ::atoi(s); -} - static char **warnedCODs = NULL; static size_t warnedCODpos = 0; static size_t warnedCODsize = 0; |
From: Denis P. <dy...@us...> - 2004-05-05 10:38:25
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10352 Modified Files: Makefile PolishFormat.cpp common.cpp common.h Log Message: Remove usage of CharUpperBuff. Add common.cpp to Makefile. Index: Makefile =================================================================== RCS file: /cvsroot/cmap/cmap/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile 2 May 2004 16:03:30 -0000 1.3 +++ Makefile 5 May 2004 10:38:16 -0000 1.4 @@ -1,5 +1,5 @@ cmap_SOURCES = Geodesy.cpp IngitFile.cpp IngitHeader.cpp IngitTable.cpp \ - PolishFormat.cpp cmap.cpp dbf.cpp + PolishFormat.cpp cmap.cpp dbf.cpp common.cpp cmap_HEADERS = Geodesy.h IngitFile.h IngitHeader.h IngitTable.h \ PolishFormat.h cmap.h common.h dbf.h Index: common.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/common.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- common.cpp 4 May 2004 23:18:47 -0000 1.2 +++ common.cpp 5 May 2004 10:38:16 -0000 1.3 @@ -1,4 +1,5 @@ #include <stdlib.h> // äëÿ NULL +#include <ctype.h> #include "common.h" @@ -291,3 +292,9 @@ } str[j]=0; } + +void toUpperWin(char *s) { + for (size_t i = 0; s[i] != 0; i++) + s[i] = toupper(s[i]); +} + Index: common.h =================================================================== RCS file: /cvsroot/cmap/cmap/common.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- common.h 3 May 2004 21:30:45 -0000 1.3 +++ common.h 5 May 2004 10:38:17 -0000 1.4 @@ -18,6 +18,7 @@ char DosToWin (BYTE char_dos); void DosToWin (char *str_win, BYTE *str_dos); void RusToEng (char *str, char *str_rus); +void toUpperWin(char *s); #endif // __CMAP_COMMON_H__ Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- PolishFormat.cpp 5 May 2004 10:32:50 -0000 1.14 +++ PolishFormat.cpp 5 May 2004 10:38:16 -0000 1.15 @@ -1,7 +1,6 @@ #include <memory.h> #include <string.h> #include <stdlib.h> -#include <windows.h> #include "IngitFile.h" #include "IngitTable.h" @@ -1714,14 +1713,14 @@ if(comm_rus && comm_polylinesNamesToUpperAndTransliterate && !isHighway)// ïðè âûâîäå ðóññêèõ íàçâàíèé âûäà¸ì è ðóññêîå è òðàíñëèòåðèðîâàííîå íàçâàíèå ÷åðåç ñïåöèàëüíûé ðàçäåëèòåëü { RusToEng(eng_name, rus_name); - CharUpperBuff(eng_name, strlen(eng_name)); + toUpperWin(eng_name); // ~[0x1e] - ýòî ðàçäåëèòåëü. Íà êàðòå âûâîäèòñÿ ñëîâî ïîñëå ðàçäåëèòåëÿ, à ïðè íàâåäåíèè êóðñîðà - ñëîâî äî è ñëîâî ïîñëå ÷åðåç ïðîáåë fprintf (outIMG,"Label=%s~[0x1e]%s\n", rus_name, eng_name); } else { if(comm_polylinesNamesToUpperAndTransliterate && !isHighway)// ïðè âûâîäå òðàíñëèòåðèðîâàííûõ íàçâàíèé, ëèíåéíûå îáúåêòû ïðèâîäèì ê âåðõíåìó ðåãèñòðó - CharUpperBuff(eng_name, strlen(eng_name)); + toUpperWin(eng_name); fprintf (outIMG,"Label=%s\n", eng_name); } } |
From: Denis P. <dy...@us...> - 2004-05-05 10:32:59
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9238 Modified Files: PolishFormat.cpp Log Message: Fix s_atoi decl Index: PolishFormat.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/PolishFormat.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- PolishFormat.cpp 5 May 2004 03:35:30 -0000 1.13 +++ PolishFormat.cpp 5 May 2004 10:32:50 -0000 1.14 @@ -20,7 +20,7 @@ unsigned long pat_points; // Êîë-âî çàïèñàíûõ òî÷åê â .PLT -static s_atoi(const char *s) { +static int s_atoi(const char *s) { if (s == NULL) return -1; |
From: Denis P. <dy...@us...> - 2004-05-05 10:32:12
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9161 Modified Files: IngitFile.cpp Log Message: Remove unused var Index: IngitFile.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/IngitFile.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- IngitFile.cpp 4 May 2004 14:55:18 -0000 1.8 +++ IngitFile.cpp 5 May 2004 10:32:03 -0000 1.9 @@ -418,7 +418,6 @@ if (!memcmp(buf_atr, "PR",2) ){ATR_cod = 107;} obj[NunObj].atr_cod[ATR_cod] = (char *)(buf + PointerATR); - short _n = 0; while (buf[PointerATR] != 0) PointerATR++; |
From: Denis P. <dy...@us...> - 2004-05-05 10:31:00
|
Update of /cvsroot/cmap/cmap In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8943 Modified Files: cmap.cpp Log Message: Correct strcasecmp usage. Abstract path separators. Index: cmap.cpp =================================================================== RCS file: /cvsroot/cmap/cmap/cmap.cpp,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- cmap.cpp 4 May 2004 23:14:23 -0000 1.26 +++ cmap.cpp 5 May 2004 10:30:51 -0000 1.27 @@ -9,8 +9,12 @@ #include <conio.h> // getch(); #include <io.h> typedef long off_t; +#define PATH_SEPARATOR '\\' +#define PATH_SEPARATOR_S "\\" #define strcasecmp _stricmp #else +#define PATH_SEPARATOR '/' +#define PATH_SEPARATOR_S "/" #include <sys/types.h> #include <unistd.h> #endif @@ -238,17 +242,17 @@ exit (0); } int i = 0; - if (!strcasecmp(".gem", argv[1] + strlen(argv[1]) - 4)){ + if (strcasecmp(".gem", argv[1] + strlen(argv[1]) - 4) == 0){ strcpy(FileMap[1], argv[1]); short n_sl = 0; while (FileMap[1][i++] != 0){ - if (FileMap[1][i] == '\\'){ + if (FileMap[1][i] == PATH_SEPARATOR){ n_sl = i+1; } } strcpy(in_dir, argv[1]); while (in_dir[i++] != 0){ - if (in_dir[i] == '\\'){ + if (in_dir[i] == PATH_SEPARATOR){ n_sl = i+1; } } @@ -261,7 +265,7 @@ n_gct = 1; } //============================================================= - if (!strcasecmp(".gct", argv[1] + strlen(argv[1]) - 4)){ + if (strcasecmp(".gct", argv[1] + strlen(argv[1]) - 4) == 0){ FILE *inGCT = fopen(argv[1], "r"); if (!inGCT ){ printf("Unable to open .gct file.\n"); @@ -283,7 +287,7 @@ strcpy(in_dir, argv[1]); while (in_dir[i++] != 0){ - if (in_dir[i] == '\\'){ + if (in_dir[i] == PATH_SEPARATOR){ n_sl = i+1; } } @@ -416,11 +420,8 @@ strcpy (FileMaps1, FileMap[1]); strcpy (buf_str, out_dir); -#ifdef WIN32 - if (buf_str[strlen(buf_str)] !='\\') {strcat (buf_str, "\\");} -#else - if (buf_str[strlen(buf_str)] !='/') {strcat (buf_str, "/");} -#endif + ASSERT(strlen(buf_str) > 0); + if (buf_str[strlen(buf_str) - 1] != PATH_SEPARATOR) {strcat (buf_str, PATH_SEPARATOR_S);} strcat (buf_str, FileMaps1); strcpy(FileMaps1, buf_str); // FileMaps - âõîäíîé FileMaps1[strlen(FileMaps1)-3]='m'; |