-
Notifications
You must be signed in to change notification settings - Fork 22
/
HISTORY.TXT
1019 lines (668 loc) · 39 KB
/
HISTORY.TXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
MITAB Library - Revision History
================================
This is a human-readable revision history which will attempt to document
required changes for users to migrate from one version of MITAB to the
next. Developers are strongly encouraged to document their changes and
their impacts on the users here. (Please add the most recent changes to
the top of the list.)
For a complete change history, please see the CVS log comments.
CHANGES - Current Version:
--------------------------
Version 2.0-dev (CVS)
---------------------
- IMPORTANT - BACKWARDS-INCOMPATIBLE CHANGE:
OGRLayer::SetFeature() is intended to be used only in random write mode.
However, MITAB 1.x had a poorly named SetFeature() that was really doing
the job of OGRLayer::CreateFeature(). In order to implement random write
support through OGRLayer::SetFeature() in a way that is consistent with
the OGRLayer methods, we had to fix this error from the early MITAB days.
In MITAB 2.x, we have replaced the old SetFeature() with a CreateFeature(),
and a new SetFeature() has been added that's in line with the
OGRLayer::SetFeature() signature and behavior.
Application code that was writing features using SetFeature() with
MITAB 1.x will need to be changed to use CreateFeature() with MITAB 2.x.
Note that the return value of CreateFeature() is an OGRErr code and not
a feature id as was the case with the MITAB 1.x SetFeature() implementation.
The feature id of the created feature is returned by updating the id of the
passed in feature instead of through the return value of the method as
was the case with the old SetFeature() method in MITAB 1.x.
In MITAB 2.x, the ID parameter of a style string is now comma-delimited
rather than dot-delimited as per the OGR Feature Style
Specification. Application code that was parsing that string will need to
change the proper delimiter for this parameter.
- Fixed problem with tab delimiter used in MIF files (GDAL #4257)
- Fixed crash when trying to get the same mitab mif feature twice (GDAL #3765)
- Fixed memory leak (GDAL bug #3045)
- Fixed handle differently indented lines in mif files. (GDAL bug #3694)
- Added attribute index support for the sql queries in mapinfo tab format (GDAL bug #3687)
- Fixed bad use of atof when locale setting doesn't use "." for float (GDAL bug #3775)
- Removed incomplete patch for affine params support in mitab. (bug 1155)
- Added the use of OGRGeometryFactory::organizePolygons for mif features
- Fixed Win32 Compile Warnings (GDAL bug #2930)
- Fixed TABText::GetLabelStyleString() doesn't escape the double quote character (bug 2236)
- Fixed incorrect parameters for krovak projection in ogr_srs_proj4.cpp
- Fixed memory leaks in mitab_capi.cpp and mitab_coordsys.cpp and mitab_tabview.cpp
- C API: added mitab_c_bounds_set() function (bug 2233)
- Added support for extended text attributes - new function for text style and symbol style (bug 2232)
- Fixed TABCleanFieldName() function should allow char '#' in field name (bug 2231)
- Added Krovak projection suppoprt (bug 2230)
- Fixed bad feature count after we deleted a feature in MapInfo (bug 2227)
- Fixed MIF driver: doesn't create a layer defn at layer creation (bug 2180)
- Fixed error issued when reading empty TAB with spatial index active (bug 2136)
- Added support to handle duplicate field names (bug 2141)
- Added validation to check if a field name start with a number, which is
an invalid according to MapInfo (bug 2141)
- Added functions to get the file version (API and C API) (bug 1961)
- Fixed Overflow of FIDs in Seamless tables (bug 2015)
- C API: Added mitab_c_set_charset() (bug 2013)
- Fixed SetTextSpacing call in mitab_c_set_text_display() method (bug 1986)
- Fixed wrong return value of IMapInfoFile::SetCharset() method (bug 1987)
- Added Visual Studio Project files in contrib/vcproj, contributed by
Tony Wells (bug 1877)
- Updated contrib/mitab_dyn.pas and contrib/mitab.vb for V1.7.0 changes
- Fixed const char * warnings with GCC 4.3 (GDAL ticket #2325)
- Fixed problem with corrupt pointer if file not found (bug 1899)
- Fixed tabdump build problem if DEBUG option not provided (bug 1898)
- Fixed deprecated warnings generated by mitab.h (bug 1907)
- Fixed multi-line text rendering (bug 1916)
- Fixed multi-line text height problem (bug 1919)
- Fixed the text font size problem (bug 1918)
- Add text outline color support (halo background in MapInfo) (bug 1921)
- Add font text styles support (bold, italic, etc.) (bug 1922)
- Added Font Point styles support (halo, border) (bug 1925)
- C API: Added mitab_c_get_feature_count_by_type() (bug 1952)
- Fixed bug: MITAB doesn't support writing DateTime type (bug 1948)
- Fixed bug with the characters ",\n in the tab2tab application. (bug
1945)
- mitab.h: Export MITABSpatialRef2CoordSys() and MITABCoordSys2SpatialRef()
from the DLL. Mostly for use in GDAL
- Added support to use OFTDateTime/OFTDate/OFTTime type when compiled with
OGR and fixed reading/writing support for these types. (Bug 1948 and
GDAL ticket #2585)
- Fixed threading issue (static buffer) in Time/DateTime code (bug 2058)
- Set m_nCurFeatureId=-1 in TABSeamless::ResetReading() to solve problem
when doing multiple seamless table scans with a spatial filter (bug 2017)
- Improved support for OGR date/time types. New Read/Write methods (bug 1948)
Added support of OGR date/time types for MIF features.
- C API: Added mitab_c_get_table_class() (bug 1957)
- Fixed: mitab mif/mid importer fails when a Text geometry have an
empty text value (bug 1978)
- Fixed incorrect text justification returned by GetLabelStyleString()
for TABTJRight (bug 2085)
- Add EPSG/OGR name for New Zealand datums (GDAL #3187)
- Add support for reading Google Mercator (GDAL #4115) (but not writing!)
- Improve TABBasename() for filenames with extra dots in them (GDAL #4123).
Version 1.7.0-beta1 (2007-02-29)
--------------------------------
- Added support for V8.x large object types: large REGION, PLINE MULTIPLE,
MULTIPOINT and COLLECTION (bug 1496)
- Added support for v9.x Time and DateTime fields (based on patch from
AJD, bug 1754)Q
- Added bounds for Peruvian coordinate systems PSAD56 in mitab_bounds.cpp
(came with patch from AJD sent for bug 1754)
- Use %.15g instead of %.16g as number precision in .MIF output
- Fixed the internal compressed coordinate range detection test to prevent
possible overflow of the compressed integer coordinate values leading
to some coordinate errors in very rare cases while writing to TAB (bug 1854)
Version 1.6.4 (2007-12-10)
--------------------------
- Upgrade of OGR and CPL libs to the version from GDAL/OGR 1.4.3
- Fixed leak of SRS in OGRGeometry (bug 1816)
- Fix asDatumInfoList[] and asSpheroidInfoList[] defns/refs (bug 1826)
- Added reporting access mode to error message in TABINDFile::Open()
(GDAL changeset r12460, ticket 1620)
- Fixed leaks in ITABFeature???::Set???FromStyleString() (GDAL ticket 1696)
Version 1.6.3 (2007-10-12)
--------------------------
- Remove static variables that interfere with reentrancy.
http://trac.osgeo.org/gdal/ticket/1883
Version 1.6.3-beta2 (2007-09-18)
--------------------------------
- Fixed another issue related to splitting of object blocks with the
optimized spatial index. The compressed coordinate origin values were
not initialized properly before being written (bug 1732)
Version 1.6.3-beta1 (2007-09-14)
--------------------------------
- Fixed the splitting of object blocks with the optimized spatial
index mode that was producing files with misaligned bytes that
confused MapInfo (bug 1732)
Note that even if this bug is (hopefully) fixed, the optimized spatial
index is still disabled by default in this release and we still use
the quick (i.e. traditional) spatial index mode by default.
- Fixed problem with MIF parser being confused by special attribute
names (bug 1795)
Version 1.6.2 (2007-07-12)
--------------------------
*** *** *** *** ***
- IMPORTANT: The optimized spatial index introduced in V1.6.0 has been
disabled by default in this release after we found that the current block
splitting technique often produces files that confuse MapInfo (bug 1732).
The Quick Spatial Index Mode is used by default until bug 1732 is fixed.
*** *** *** *** ***
- Fixed error reading compressed text objects introduced in v1.6.0 (bug 1722)
- Fixed memory leaks when reading multipoint objects from .MIF files
- Added IMapInfoFile::SetCharset() method (bug 1734)
- Added TABFile::TwoPointLineAsPolyline() to allow writing two point lines
as polylines (bug 1735)
- Added missing cast in isspace() calls to avoid failed assertion on Windows
(MITAB bug 1737, GDAL ticket 1678))
- Fixed memory leak when writing .TAB with new (optimized) spatial index
introduced in v1.6.0 (bug 1725)
- Fixed another issue related to attempting to read past EOF while writing
collections (bug 1657)
- Fixed a problem writing collections where collection objects were trashed
during object block splitting (bug 1728)
- Fixed support for predefined datums with non-greenwich prime meridians per
http://trac.osgeo.org/gdal/ticket/1416
- Updated mitab_dyn.pas to support both Delphi and Kylix (contrib by
UffeK and MaximV, bug 1746)
- Added support for building libmitab.so shared lib (contrib by UffeK and
MaximV, bug 1746)
- Avoid deprecation warnings for some common functions with VC7+ (bug 1749)
Version 1.6.1 (2007-03-30)
--------------------------
- Added "Quick Spatial Index Mode" which generates a non-optimal spatial
index (similar to MITAB 1.5 and older) but results in faster write
time than the optimized index generated by v1.6.0+ (bug 1669)
(Thanks to Safe Software for funding this.)
- Added mitab_c_set_quick_spatial_index_mode() to C API (bug 1669)
- Fixed problem writing collections where MITAB was sometimes trying to
read past EOF in write mode (bug 1657).
- Fixed another problem writing collections when the header of objects
part of a collection were split on multiple blocks (bug 1663)
- Added missing NULL pointer checks in SetPenFromStyleString(),
SetBrushFromStyleString() and SetSymbolFromStyleString() (bug 1670)
Version 1.6.0 (2007-02-15)
--------------------------
- Improved generation of the .map's internal spatial index and object
data blocks to produce an optimal r-tree, resulting in performance
improvements of up to 30 times faster on some spatial searches,
matching the perfomance of files generated by MapInfo. (bug 1585)
(Thanks to Aircom International (Andrew Blake) for funding this.)
- Fixed problem with null brush bg color becoming black when parsing
style strings (bug 1603)
- Added mitab_is_field_indexed() and mitab_is_field_unique() to C API
(bug 1621)
Version 1.5.1 (2006-07-25)
--------------------------
- Fixed initialization of MBR of TABCollection members (bug 1520)
- Added mapping for datum name "North_American_Datum_1927".
- Fixed problem with uninitialized affine parameters written to .MAP header,
resulting in files not readable in MapInfo, introduced by bug 1155 in
MITAB 1.5.0 (bug 1254, 1319)
- Fixed problem writing PLINE MULTIPLE to TAB format introduced in
MITAB 1.5.0 (bug 1466).
- tab2tab: Set dataset bounds only after setting spatialref to prevent
default coordsys bounds from taking precedence when bounds are
available in source dataset (bug 1511)
- Coordsys false easting and northing are in the units of the coordsys, not
necessarily meters. Adjusted mitab_coordsys.cpp to reflect this.
http://bugzilla.remotesensing.org/show_bug.cgi?id=1113
- Similar problem in mitab_spatialref.cpp for TAB files also fixed.
http://bugzilla.remotesensing.org/show_bug.cgi?id=1113
Version 1.5.0 (2006-02-16)
--------------------------
- Updated contrib/mitab_dyn.pas with new C API functions. Note that other
definition files for VB and .NET have *not* been updated for this release.
- Fixed crash when attempting to write TABPolyline object with an invalid
geometry (GDAL bug 1059)
- cast strstr() results as per email from Charles Savage for VC8.
- Fixed build problem (link with -ldl not available) on MacOSX (bug 1167)
- Fixed problem with white space parsing in mitab_miffile.cpp (bug GDAL:954)
- layers with just regions can't be set as type wkbPolygon because they may
have multipolygons (bug GDAL:958)
http://bugzilla.remotesensing.org/show_bug.cgi?id=958
- Fixed support for multi character delimiters in .mid file (bug 1266)
- Fixed reading Mills.mif (TABPoint::ReadGeometryFromMIFFFile()), the check
for SYMBOL didn't check if pszLine was non-NULL.
- Fixed memory leak of m_pszDelimiter in mitab_middatafile.cpp.
- Fixed OGR problems with setting bounds on MIF files, and wrong bounds
on tab files (bug 1198)
Version 1.5.0-beta1 (2005-10-07)
--------------------------------
- Added read/write support for MapInfo Collections in MIF and TAB (bug 1126)
(Thanks to funding from Comcast (Andy Canfield) and an initial patch and
analysis of collections by Jim Hope of Innogistic Software)
- New C API methods to access collection members (bug 1126):
- mitab_c_get_collection_region_ref()
- mitab_c_get_collection_polyline_ref()
- mitab_c_get_collection_multipoint_ref()
- mitab_c_set_collection_region()
- mitab_c_set_collection_polyline()
- mitab_c_set_collection_multipoint()
- Support for writing affine projection params in .MAP header (AJD, bug 1155)
- New C API methods to get/set various projection parameters (AJD, bug 1155):
- mitab_c_get_projection_info()
- mitab_c_set_projection_info()
- mitab_c_get_datum_info()
- mitab_c_set_datum_info()
- mitab_c_get_affine_params()
- mitab_c_set_affine_params()
- All datum definitions in mitab_spatialref.cpp now have the correct
names (Anthony D, bug 1155)
- Added bounds entries for Finnish KKJ and Swedish projections (AJD, bug 1155)
- mitab_ogr_datasource.cpp: avoid leak of CPLReadDirectory() result.
- gcc4 related warnings in mitab_coordsys.cpp and mitab_utils.cpp avoided.
- Change the way \n and \ are handled internally. Now they are stored
unescaped in memory and escaped only when writing MIF files. (bug 1107)
- Improved handling of Danish modified TM proj#21-24 (HSS, bugs 976,1010)
- Upgraded CPL and OGR source from latest GDAL CVS (as of 2005-05-12)
- Produce a fatal error if creating an index of a size that exceeds the
.IND file format limitation (tree depth > 255) (OGR Bug 839)
- Added mitab_c_set_symbol_angle() and mitab_c_get_symbol_angle() for
point symbols of type TABFC_FontPoint (bug 1002)
- Added rule in cpl/GNUmakefile to copy cpl_config.h from cpl_config.h.in. (FW)
- Changed to use OGRLayers spatial filtering support. (FW)
- A few fixes to support for modified TM projections #21-24 (AJD, bug 1155)
- Fixed missing initialization of default .MID file delimiter ("\t")
(Anthony D - bugs 1155 and 37)
Version 1.4.0 (2005-04-01)
--------------------------
- Added bounds entry to match datum 1011 based on MapInfo's "Svenska
rikssystemet, 2,5 gon väst (RT 90 7 parametrar)" (bug 997)
- Added initial version of .NET bindings, contributed by Graham Sims in
mitab/contrib/dotnet directory (bug 992)
- Added support for Datum Id field in .MAP header, this is new in MapInfo
7.8+ and solves problem with multiple datums with same params (bug 910)
- Fixed internal integer coordinates rounding error (bug 894)
- Fixed potential memory leaks in error conditions in mitab_feature.cpp
and mitab_rawbinblock.cpp (bug 881)
- Support pen width bigger than 7. Note that any pen bigger than 10 are
considered as point, not pixel. (bug 683)
- Updated list of datum parameters from data made available by Bill Wemple
from MapInfo on directionsmag.com: 7 new datum defns and 1 fixed.
List of ellipsoids also updated (Bug 608, patch by Uffe K.)
- Do not output a BG color in style string for transparent brushes (bug 693)
- mitab_tabfile.cpp: Several fixes for TABFile::Open() when loading the
tabfile fails. (provided by Stephen Cheesman).
- mitab_mapfile.cpp: Fixed error return value in LoadNextMatchingObjectBlock()
per http://bugzilla.remotesensing.org/show_bug.cgi?id=615. NFW
- mitab_ogr_datasource.cpp: Modified CreateLayer() to use
-1000,-1000,1000,1000 bounds for GEOGCS much like in mitab_bounds.cpp.
This ensures that geographic files in the range 0-360 works as well as
-180 to 180.
Version 1.3.0 (2004-07-07)
--------------------------
- Use tab as default delimiter (if none is explicitly specified) when
reading .MIF/.MID files (Anthony D, bug 37) We still generate new files
using comma as delimiter.
- C API: Added mitab_c_get_feature_count() and mitab_c_get_field_as_double(),
added ability to create a feature of type TABFC_NoGeom (Anthony D)
- Added support for reading affine coordsys parameters in extended
.map header block of v500+ (Anthony D, bug 41)
- Added mitab_c_getlibversion() to C API. (Uffe K. - bug 21)
- Write 3D geometries to MIF/tab as if they were 2D. NFW
- Flush out .mif header on Close() if no features written. NFW
- Fixed previous flushing logic to only do so for writable files. NFW
- Removed obsolete mif2mif.cpp mif2tab.cpp mif2tabbatch.cpp. They are
all replaced by the more up to date tab2tab.cpp
- Modified the OGR creation logic to properly support creating single
files sets rather than directories full of files. NFW
- Fixed memory leaks with seamless tab files (bug 283)
- Call CPLReadLine(NULL) in MIDDATAFile::Close() to cleanup working buffer.
- Removed special bailout for m_poMAPFile == NULL in TABFile::Close().
It is important to cleanup other used memory.
- mitab_coordsys.cpp: fixed small memory leak for non-earth coordinate
systems. (bug supplied by Stephen Cheeseman, Geosoft).
- Added mitab_c_load_coordsys_table() to C API (bug 469)
- mitab_ogr_datasource.cpp: Don't report single layer that hasn't been
"created" yet via GetLayerCount(). Fixes up single file generation issues.
Version 1.2.4 (2003-07-23)
--------------------------
- Added 'indexed' and 'unique' parameters to mitab_c_add_field().
Applications written for older versions of the C API will have to
be updated to pass these two new parameters.
- Ensure that a blank line in a mid file is treated as one field containing
an empty string instead of being zero fields. NFW
- Fixes to support mif/mid files produced by Geomedia V5 (bug 1631):
- Do not produce an error if .mid data records end with a stray ','
- Treat tabs (\t) as a blank space delimiter when reading coordinate
values in .mif file
- Fixed sign of rotation parameters in TOWGS84 parameters in WKT. MapInfo
uses EPSG 9607's 7 parameter datum shift method, but TOWGS84 is defined
to hold EPSG 9606 style parameters. Only the rotational signs differ. NFW
- Fixed spelling of Provisional_South_American_Datum_1956 in datum list. NFW
- Fixed bug parsing ellipsoid out of CoordSys strings for coordinate
systems with datum 999 or 9999. NFW
- Fixed leak of TABMAPObjHdr when writing NONE geometries in SetFeature().
- Increased MIF reader line buffer size to 10000 chars
- Added support for writing TABFC_NoGeom (NONE) geometries via the C API.
- Fixed crash when reading .mif file that doesn't contain a DATA line
(Thanks to Riccardo Cohen for the fix).
- Implement DeleteDataSource() method on the driver object. NFW
- mitab_spatialref.cpp, mitab_coodsys.cpp: Fixed up regional mercator logic.
It was screwing up transverse mercator with non-zero latitude when writing
to tab, and wasn't being written properly to .mif. NFW
- mitab_feature.cpp: fixed C++ style true/false where TRUE/FALSE required.
As per GDAL bugzilla 311. NFW
- Fixed problem scanning node in TABINDNode::FindNext() - bug 2176, FW
Version 1.2.3 - (2002-10-15)
----------------------------
- Support auto-addition of a dummy "FID" column if TAB files are created
with no fields, instead of producing an error. A corresponding change
has not yet been applied to the MIF driver. NFW
- Fixed lots of places that check for errors by examining CPLGetLastErrorNo().
A warning will trigger all these places as an error. Changed to check that
the last error type was CE_Failure and add a CPLErrorReset() at the
beginning of many affected sections. NFW
- Modified TABGetBasename() (in mitab_utils.cpp) to stop at the first
forward or backslash otherwise "C:/warmerda/mi\can_caps.tab" will result
in a basename of "mi\can_caps.tab". NFW
- Modified datum list in mitab_spatialref.cpp with a bunch of new EPSG/OGC
datum names provided by Siro Martello from Cadcorp. NFW
- Fix memory leak of m_pszIndex in mitab_miffile.cpp, the poSpatialRef
in TABFile::SetMIFCoordSys(), and a leak in MITABExtractCoordSysBounds(). NFW
- Added untested support in mitab_spatialref.cpp, and mitab_coordsys.cpp for
projections Regional Mercator (26), Polyconic (27), Azimuthal Equidistant -
All origin latitudes (28), and Lambert Azimuthal Equal Area - any aspect
(29). NFW
Version 1.2.2 - (2002-07-06)
----------------------------
- Added a validation in TABMAPFile::GetFeatureId(). When there's no .map file
or no spatial indexes or no geometry, the function return -1 like an Eof.
This prevent the reading of a file set to NULL. (bug 169 (MapServer))
- Treat Region as MultiPolygon in mitab_c_set_point() to support Regions
with multiple islands and holes. Passing a part number <= 0 (second
parameter in mitab_c_set_point()) will result in adding a new island
(i.e. polygon). By default, parts > 1 are treated as holes in the
last island (polygon) that was created.
- Added IsInteriorRing() function in the TABRegion class to validate if a ring
in a polygon is an external or an internal ring. The function returns
true if the specified ring is an interior ring. The function
mitab_c_is_interior_ring() in mitab_capi.c has been created too to call
IsInteriorRing() if the feature is a region.
- In mitab_mapheaderblock.cpp, the Coordsys2Int() function used integer values
to check for overflow. However, in some case, integer was to small and caused
problems with applications that called SetSpatialFilter() with a filter
much larger than the file's bounds. So, this function now uses doubles
internally for comparison, but still returns and receives integers.
- Add SetSpatialFilter function in the TABSeamless class, to use seamless
layer in the right way. Now, the filter is applied on each data file and
on the index file. (Bug 164 (MapServer))
Version 1.2.1 - (2002-05-08)
----------------------------
- Implement SetMIFCoordSys in the MIFFile class. The coordsys was not
written when calling mitab_c_create for MIF files because
MIFFile::SetMIFCoordSys always returned -1 (Bug 984).
- Added support for TABFC_FontPoint and TABFC_CustomPoint in
mitab_c_create_feature(), mitab_c_set_points(), mitab_c_set_font() and
mitab_c_get_font().
- mitab_capi.h: Use stdcall by default for all public mitab.dll functions
instead of cdecl. Should still work fine for C/C++ users, and will
allow VB/Delphi users to use the same DLL with Bo T.'s interface files.
Version 1.2.0 - (2002-05-03)
----------------------------
- Made changes in TABRelation to avoid an infinite loop. The m_poCurFeature
object have been deleted and the function GetFeatureRef() have been replace
by GetFeature(). This new function return a TABFeature object that must be
control by the calling method. (bug 706)
- Made important changes in order to support writing objects in 16 bits
coordinate format. New TABMAPObjHdr-derived classes are used to hold
object info in memory until block is full.
This was required in order to fix a problem when very small regions
were written in 32 bits coordinates when 16 bits should have been used
because MBR < 65536. In this case MapInfo would attempt to rewrite the
modified object info in 16 bits format while the coordinates blocks are
still in 32 bits format... resulting in a corrupted the file.
Note that at this point only feature types that use separate coordinate
blocks can be saved in 16 bits format (PLINE, MULTIPLINE and REGION).
- Prevent writing of coordinates outside of the +/-1e9 integer bounds.
If coordinates outside of that range are written then the values are
written as +/-1e9 instead and a warning (ERROR 503) is produced when
the file is closed. Coordinates outside of the +/-1e9 bounds limits
seemed to confuse MapInfo.
- Disabled the warning (ERROR 503) when coordinates outside of the +/-1e9
integer bounds in SetCoordFilter().
- Modified the conversion of double to integer coordinates to fix an old
problem where coordinates written by MITAB would be a little bit off
sometimes compared with the same values written by MapInfo.
- Modified mitab_capi.cpp to correctly produce "point" style arcs from
mitab_c_set_arc(). It now sets a point geometry ensuring that the
TABArc::ValidateMapInfoType() method will succeed. As per DMSG Bug 644. NFW
- Fixed some TABView issues (bug 703):
- Support "select * ..." syntax
- Accept source table names with or without the .tab extension
- Avoid crash if .IND file for related table is missing (i.e. deleted)
- The OGRDriver Create method will now accept the FORMAT=MIF option to
create a dataset of mif files instead of tab files. NFW
- Prevent an infinite loop of calls to LoadNextMatchingObjectBlock() in
GetNextFeatureId() if no objects found in spatial index when using a
spatial filter.
- False Easting/Northing should be in the linear units of measure in MapInfo,
but in OGRSpatialReference/WKT they are always in meters. Convert
accordingly in mitab_coordsys.cpp and mitab_spatialref.cpp. NFW
- Added support for reading and writing new V650 Multipoint for both TAB and
MIF.
- Added support for Cassini Soldner projection (projection 30). NFW
- Add EOF validation in MIDDATAFile::GetLastLine() to fix EOF problems
while reading some MIF/MID files (Bug 819, JSL)
- New VB, Pascal, and MapBasic interfaces contributed by Bo Thomsen.
See contrib/README_VB.TXT
- Added to C API: mitab_c_get_field_width(), mitab_c_get_field_precision()
Version 1.1.3 - (2001-11-02)
----------------------------
- mitab_tabview.cpp: Use VSIUnlink() instead of unlink(). NFW.
- mitab_utils.cpp: Don't use multi-byte support if _WIN32 and unix are
defined to try and preserve cygwin support. NFW
- C API: Added mitab_c_get_text().
Added mitab_c_get_mif_coordsys()
Added mitab_c_get_projinfo() and mitab_c_set_projinfo()
Changed mitab_c_create() to make bounds optional and allow using
default projection bounds if available
- GetLabelStyleString(): take line spacing and num. of lines into account
when calculating text height.
- Test for NULL geometries if spatial filter enabled in GetNextFeature()
(objects with NONE geometry would have caused a crash when a spatial
filter was set).
- Fixed a few memory leaks in mitab_miffile.cpp. NFW.
- Fixed mitab_capi.c to not delete the spatial ref unless dereferencing it
drops the count to 0. NFW.
- Modified TABFile::SetSpatialRef() to clone the passed in OGRSpatialReference
instead of taking a reference to it, so it will work with stack allocated
OGRSpatialReferences or in cases where the caller doesn't check ref counts.
NFW.
- TABPolyline::ValidateMapInfoType(): return TAB_GEOM_NONE if numpoints < 2
- Substantial additions to lots of files adding support for efficient
spatial queries by utilizing the spatial indexes when reading. NFW.
- TABText should not produce an error if reading a 0-length text.
- Seamless files: when reading on Unix, replace '\\' with '/' in file path
read from the index table.
- Modified mitab_miffile.cpp to keep track of the feature id of the
preloaded text line in m_nPreloadedId instead of m_nCurFeatureId to fix
serious problems with access through IMapInfo::GetNextFeature() - this
affects applications using the pure OGRLayer API to access mif files. NFW
- mitab_middatafile.cpp: Use VSIRewind() instead of rewind() to ensure that
IO remains virtualized. NFW
- mitab_miffile.cpp: modified to return extents collected by PreParse. Made
distinction between extents and projection bounds explicit. NFW
- mitab_spatialref.cpp: added OGC name for datum 12.
Version 1.1.2 - (2001-06-24)
----------------------------
- Support reading and writing TEXT objects with strings longer than 512
bytes. MITABMAPCoordBlock's Read/WriteBytes() had to be fixed to
allow reading/writing data split over more than 2 blocks.
- StyleString fixes: include font name in text style string, and placed
brush before pen in region style strings.
- C API: added get methods for all pen, brush, font and symbol properties.
- Fixed MIF Text object output: negative text angles were lost. Also use
TABText::SetTextAngle() when reading MIF instead of setting class members
directly so that negative angles get converted to the [0..360] range.
Version 1.1.1 - (2001-05-01)
----------------------------
- Added implementation for OGRLayer::GetExtent() that returns extents
of the data, which is differents from the bounds of the projection.
- Added code to set TOWGS84 values for mitab_coordsys.cpp and
mitab_spatialref.cpp.
See http://bugzilla.remotesensing.org/show_bug.cgi?id=41
- Fixed serious bug in TABFile::SetSpatialRef() (mitab_spatialref.cpp). A
core dump could occur for type 999 and 9999 datums. Thanks to Stephen
Cheesman of Geosoft for finding and pointing this out. (NFW)
- Modified TABINDFile/TABINDNode to support update (i.e. read/write) access
and created 'tabindex' program to test creation of indexes on existing
datasets.
- Modified reading of TABRegion to maintain outside/inside ring relationship
when it's available in the source file.
- Fixed default for BRUSH when brush index=0 in the source file. It should
be BRUSH(1,0,16777215) and not BRUSH(2,16777215,16777215).
Version 1.1.0 - (2001-03-08)
----------------------------
- Modified mitab_imapinfofile.cpp so that variable width fields (nWidth=0)
is translated to 254 characters, instead of 255 so it will actually be
a legal field width in TAB. (NFW)
- Make default and max char field with 254 chars in TABFile::AddFieldNative()
- Added a warning (TAB_WarningBoundsOverflow) on close of .MAP file if any
object was written with coordinates outside of the file's predefined
bounds. (Causing an overflow of the +/-1e9 integer coord. range)
- Use MI defaults for Pen, Brush, Font, Symbol when creating new objects
and when reading objects with no Pen, Brush, etc. set (used to just set
everything to zero which was inconsistent with MI's behavior)
New defaults are: PEN(1,2,0), BRUSH(2,16777215,16777215),
FONT("Arial",0,0,0), SYMBOL(35,0,12)
- Accept "TABLE TYPE LINKED" and handle them the same way as type NATIVE
i.e. the link to the RDBMS is simply ignored.
- Added support for Swiss Oblique Mercator/Cylindrical. (NFW)
- Expand tabs (NFW)
- Added projection bounds lookup tables, automatically called by
TABFile::SetProjInfo() (and SetSpatialRef() by the same way).
TABFile::IsBoundsSet() can be used after setting projection to
establish if some default bounds were found or not for the projection.
- Fixed IMapInfoFile::CreateFeature(), was leaking feature memory. (NFW)
- Fixed small memory leak in OGRTABDataSource::CreateLayer() (NFW)
- Support SpatialFilter inside IMapInfoFile::GetNextFeature().
TAB files should support spatial filter via their spatial index for
optimal performance.
- Avoid unnecessary cloning of features in IMapInfoFile::GetNextFeature() and
IMapInfoFile::GetFeature().
- Added TABText::Get/SetTextLineEndPoint() and properly read/write label
line end point in TAB files.
- Fixed writing MIF header: for decimal fields, an extra field of type
logical with same name was always added because of a missing break; (Kieron)
- Added support for reading seamless TAB files (TABSeamless class)
- Fixed problem creating new files with mixed case extensions (e.g. ".Tab")
Version 1.0.4 - (2000-11-14)
----------------------------
- Fixed a problem writing indexes - When a new entry was inserted at the
beginning of an index node (changing this node's key) then the parent was
not properly updated and some records were not queriable through that index.
- Handle '\t' just like a space when parsing mif files.
- Fixed MIFFile::GotoFeature() to avoid calling ResetReading() before moving
forward.
- Fixed writing of drawing tool blocks - when more than 512 bytes worth of
drawing tool info had to be written, an error was produced instead of
automatically allocating a new block, resulting in a truncated file.
Version 1.0.3 - (2000-10-19)
----------------------------
- Fixed reading of MAPCoordBlocks to accept text strings that overlap on
2 data blocks.
- Added graceful recovery from NULL OGRSpatialReference pointers in
mitab_capi.cpp, and mitab_spatialref.cpp (NFW).
- Added what I hope to be working support for NonEarth translation
(into LOCAL_CS in WKT format) (NFW).
- Initialize m_dWidth to 0 in TABText constructor. (NFW)
- Made TABFile::GetBounds() return bounds corresponding to the +/- 1e9
integer coordinate limits instead of using min/max int. coord. from header
Version 1.0.2 - (2000-10-03)
----------------------------
- Avoid warnings building with gcc -Wall -O2 (NFW).
- Modified generation of .MAP spatial index to generate a balanced tree
instead of the old 'chained list of nodes' that exceeded the 255 levels
limit on the tree depth with files with > 100,000 objects.
There would still be room for improvement by implementing splitting of
object data blocks.
- Handle m_nOriginQuadrant value of 0 the same way as quadrant 3
- Added bDeletedFlag to TABFeature with get/set methods
- Maintain and/or compute values of regions and polyline center/label point
(Used to always use the center of the MBR and this was not correct)
- Fixes for old Version 100 files:
- Set valid Scale/displacement when reading V100 .map header.
Use m_nCoordPrecision to define scale since scale in header is 0.
- Accept "FORMAT: DBF" in .tab header file.
- Made all open() methods completely case-insensitive on filenames on Unix
(added TABAdjustCaseSensitiveFilename())
- Added new MapInfo 6.0 datums in datum list.
- Added OGR Feature Style String support when reading
- Added support for writing arcs, ellipses and rectangles using the C API
- Flushed tab2mif.cpp and mif2tab.cpp. There is now a single tab2tab.cpp
conversion program that can generate both TAB or MIF output, depending
on output filename extension
- Added #define MITAB_VERSION for apps that want to report library version.
Version 1.0.1 - (2000-04-21)
----------------------------
- Added C API documentation (mitab_capi.cpp) + functions to read vertices
and field information and included C API in public release.
- Modified fltering of new table field name to accept extended chars with
accents.
Version 1.0 - (2000-03-26)
--------------------------
- Changed to use same MIT/X-Consortium license as other CPL + OGR libs.
- Fixed problem opening datasets with 0 features in them.
- Added support for reading TAB datasets with "Table Type DBF"... only
type "NATIVE" was supported until now.
- Produce only a warning when unsupported feature types encountered in the
.MAP file, and return a valid feature with a NONE geometry.
- Done more tests (and required changes) to fix the way the quadrant
setting affects the way to read arc angles... hopefully it's right
this time!
- TABText objects now return their text string with any "\n" escaped on
2 chars (i.e. "\"+"n"). TABText::SetText() also expects newlines to
be escaped in the string it receives.
- Fixed some projection problems, including possible crashes with some
9999 datums with big parameter values or with some unrecognized projections.
- Outside/inside ring relationship from a TABRegion's OGRPolygon is now
properly written to the .MAP file's coord block section header.
Prior to MapInfo 5.0, this info was ignored, but now it has to be valid
otherwise some parts of a region won't be displayed properly in MI5.0
- Added support to write indexed fields and create joined tables (TABView).
- Added validation on field names (no special chars) on write and
produce a warning if name had to be fixed.
- Added support for V450 object types with num_points > 32767 and for
pen width in points.
This also resulted in changes to the ITABFeaturePen methods, mainly the
Get/SetPenStyle() method has been removed since this style value was
actually a part of the point width value.
Finally, the 'style' parameter was also removed in the
mitab_c_set_pen() C API method.
- Support for Version 450 objects forced creation of version 500 .MAP files
with 1024 bytes header (.MAP version 400 were produced before).
- MIF format now reads and writes bounds in coordsys (used to ignore them)
Version 0.2 - (1999-12-20)
--------------------------
- Added TABView class to support views on pairs of .TAB files (read-only)
- Currently supports only 2 tables with a many-to-1 relation through
an integer field.
- Added GetFeatureCountByType() method. Current implementation does
not work (returns all zeros) for MIF files
- Added static ImapInfoFile::SmartOpen() to automatically detect file type,
open a new file for read and return a new object of the appropriate
type (TABFile/TABView/MIFFile) to handle it.
- Changed TABFile::Open(), MIFFile::Open() to use a bTestOpenNoError flag
- OGRMIDDataSource/OGRMIDDriver were removed. Now all file types
handled by MITAB go through the OGRTABDataSource/OGRTABDriver interface
- Fixed problem reading/writing dates (bytes were reversed)
Also, Dates are now returned as "YYYYMMDD", and accepted as one
of "YYYY/MM/DD", "DD/MM/YYYY", or "YYYYMMDD"
- Fixed TABFile::GetBounds() that could sometimes return Min values > Max
- Rounded rectangles with radius bigger than MBR: we used to return a
corrected radius value, but it's now changed to return the real radius
value (even if it's too big) since this is what MapInfo appears to do
when exporting from TAB to MIF
- Fixed some problems that had appeared following a change in OGR's
addGeometry()... use the new addGeometryDirectly() + more error checking.
- TABRegions geometry now returned as OGRMultiPolygon instead of OGRPolygon
with multiple rings. This change had to be done because OGRPolygons
MUST have only one outer ring with a set of inner rings, and this
cannot be guaranteed to be the case with a MapInfo file.
Also added TABRegion::GetNumRings() and TABRegion::GetRing() to
make it simpler to manipulate the complex geometry as if it was a