[fdo-internals] Dropping off PSC

Daniel Morissette dmorissette at mapgears.com
Thu Nov 4 10:38:26 EDT 2010

Leaf Li wrote:
> It seems there is no objection to this approach. Ok. I will clean up my changes to MITAB and send it to you for review later so that you can merge it into MITAB trunk.

Well, I wrote that keeping changes in MITAB was the preferred approach
(as opposed to trying to going through the generic OGR interfaces), but
that doesn't mean that I'm very keen on spending a significant amount of
time to review a single mega-patch with all your changes with no
explanation of each individual change and of their possible impact on
other users of MITAB.

I tried to look at your SVN repository the other day following Greg's
suggestion, but unfortunately there are a few hundred small incremental
changes (many of them being fixes on your own additions), making it
really hard (nearly impossible) to track down the architectural
decisions that were made, the reasoning behind each of them and their
possible impact on existing users of the lib... I'd basically have to
replay all your changes and reverse-engineer what you did to compile
that information.

Unfortunately I do not have an easy solution to suggest, perhaps if you
could outline the architectural decisions and related changes that you
made to MITAB and the reasoning for each of them that might help and we
could go from there?

I hate to ask you to do more work especially since this is done on your
own time, hopefully ADSK will see the interest and decide to support
your efforts, but OTOH, the longer we wait, and the more our two
versions of MITAB will diverge... and the harder it will be to merge them.

> By the way, do you know the address of MITAB SVN depot. I just know GDAL/OGR SVN depot contains it. 

It's a CVS repository on the maptools.org server, the CVSROOT is:

  :pserver:dmorissette at cvs.maptools.org:/cvs/maptools/cvsroot

and you should be able to checkout the latest source using user
"anonymous" and an empty password.

This is the master version of MITAB which contains several fixes since
the last public release. The copy of MITAB that you find in the OGR SVN
trunk is updated from this master version every once in a while.

I haven released a new version of MITAB in about 2 years because the CVS
repository contains some changes paving the way to random read/write
support and that I wanted to release as version 2.0... unfortunately as
I explained earlier I never finished read/write support... and never
released 2.0. I will attach the complete list of changes and fixes since
MITAB 1.7.0 at the end of this message.

If you are interested in contributing read/write support based on that
version then that would be ideal. Perhaps one way to go would be to
group your changes into logical pieces (e.g. file locking mechanism, MIF
indexing mechanism, new field types, etc.) and then create a ticket for
each one in the MITAB bugzilla (http://bugzilla.maptools.org/) to
document/discuss them and eventually submit a patch to commit to the CVS
repository for each of them. I realize this may mean quite a bit of work
for both you and I, so hopefully this would happen once ADSK decides to
commit some time and funding into your provider.

I'll let you have a look at that and look forward to your feedback.


Version 2.0-dev (CVS)

  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
  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()
  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 crash when trying to get the same mitab mif feature twice (GDAL

- 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

- 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
 (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

- C API: added mitab_c_bounds_set() function (bug 2233)

- Added support for extended text attributes - new function for text
style and s
ymbol style (bug 2232)

- Fixed TABCleanFieldName() function should allow char '#' in field name
(bug 22

- 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

- 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
  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)

More information about the fdo-internals mailing list