📄 history.txt
字号:
MITAB Library - Revision History================================CHANGES - Current Version:--------------------------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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -