MapInfo Pro

Expand all | Collapse all

GDAL driver based on EFAL SDK available for download

  • 1.  GDAL driver based on EFAL SDK available for download

    Posted 07-10-2020 21:34
    • EFAL is a Software Developer Kit that provides file format support for MapInfo TAB and MapInfo Enhanced TAB file formats. It supports opening, querying, editing and creation of new files. Querying of data is specified using the MapInfo SQL query language.

    • The SDK is available in 64-bit for Microsoft Windows, Ubuntu, CentOS, Oracle Linux, and Amazon Linux distributions. The SDK also provides several C++ sample applications to demonstrate the API usage. EFAL is C++ based and includes JNI and .NET wrapper layers as well as Java and .NET sample applications.
    • If you are interested in using EFAL through GDAL, you can download separately GDAL driver below. This Driver plugin is built for GDAL version 3.0.X and supports the MapInfo Native and NativeX formats using the EFAL library from Precisely The driver supports reading, writing, and creating data in these formats. Open Source MITAB library does not support the newer MapInfo Extended (NativeX) format which allows for larger file sizes, unicode character encodings, and other internal enhancements. Instructions on how to use this driver with GDAL are included in this download.
    You can download EFAL SDK and GDAL driver from here: https://www.pbinsight.com/support/product-downloads/item/mapinfo-efal-sdk-download

    ------------------------------
    Andrei Veselov
    Pitney Bowes Software Inc.
    Troy NY
    ------------------------------


  • 2.  RE: GDAL driver based on EFAL SDK available for download

    Posted 10-06-2020 20:17
    Hi Andrei,

    The link above links to a generic Precisely page rather than the EFAL page. Have Precisely removed access to the driver and SDK? Will Precisely be providing access in the future?

    ------------------------------
    Lee Crosby
    Campaspe Shire Council
    Echuca VIC
    ------------------------------



  • 3.  RE: GDAL driver based on EFAL SDK available for download

    Posted 10-06-2020 20:28
    Edited by Andrei Veselov 10-06-2020 20:28
    Hi Lee,

    Yes, we are in the process of moving all of our web pages from Pitney Bowes to Precisely. Pbinsight pages are not available starting today. New Precisely web site with MapInfo related product downloads is still under development.

    As a temporary solution, we will be posting direct download links to the Community within next day or two.

    You download EFAL SDK from here:
    http://du8h850wz9371.cloudfront.net/product-downloads/mapinfo-pro/sdks/EFAL_19.0.zip

    EFAL driver for GDAL is available here:
    http://du8h850wz9371.cloudfront.net/product-downloads/mapinfo-pro/sdks/gdal3_efal_drv.zip

    Regards,
    Andrei

    ------------------------------
    Andrei Veselov
    Pitney Bowes Software Inc.
    Troy NY
    ------------------------------



  • 4.  RE: GDAL driver based on EFAL SDK available for download

    Posted 10-16-2020 06:35
    Will there be an option to set the blocksize, when creating a TAB file? We can do it in MapInfo itself, but it seems to be missing from the SDK.

    ------------------------------
    Uffe Kousgaard
    ROUTEWARE
    Roskilde
    ------------------------------



  • 5.  RE: GDAL driver based on EFAL SDK available for download

    Posted 10-16-2020 15:17
    Hi Uffe,

    Blocksize can be set via the table metadata
    EFALFUNCTION EFALHANDLE CreateTable(EFALHANDLE hSession, EFALHANDLE hTableMetadata);

    -Bob

    ------------------------------
    Bob Fortin
    Software Architect and Distinguished Engineer
    MapInfo Pro Development Team
    ------------------------------



  • 6.  RE: GDAL driver based on EFAL SDK available for download

    Posted 10-17-2020 03:46
    Sorry, but I can't see how to do it.

    Roughly speaking a table is created this way, but where do the blocksize go?

    TableMetadata = CreateNativeTableMetadata(aSession,'table1',aPath,aCharset)
    AddColumn(aSession,TableMetadata,'Obj',OT_OBJECT,false,0,0,aCoordSys)
    AddColumn(aSession,TableMetadata,'column1',OT_INTEGER,false,0,0,'')
    Table = CreateTable(aSession,TableMetadata)

    ------------------------------
    Uffe Kousgaard
    ROUTEWARE
    Roskilde
    ------------------------------



  • 7.  RE: GDAL driver based on EFAL SDK available for download

    Posted 10-17-2020 13:29

    Hi Uffe,

     

    Looking at the docs, EFAL seems to have a set metadata function:

    EFALFUNCTION void SetMetadata(EFALHANDLE hSession, EFALHANDLE hTable, const wchar_t * key, const wchar_t * value);

     

    ... which you could call after the initial create and having a valid session and table handle. The documentation doesn't, however, seem to list all the possible key values, which I presume includes blocksize. It might be as simple as "blocksize", or perhaps you can extract a list of possible keys from somewhere, or even write a small program to extract the data values from an existing table and see what secrets that reveals!

     

    Regards,

    Warren Vick

     






  • 8.  RE: GDAL driver based on EFAL SDK available for download

    Posted 10-17-2020 15:02
    Sorry it looks like I rushed the answer. It seems we have not exposed a method in EFAL to set a generic key/value metadata tag, so although the underlying code would use it if it was there, there is currently no way to set it.

    ------------------------------
    Bob Fortin
    Software Architect and Distinguished Engineer
    MapInfo Pro Development Team
    ------------------------------



  • 9.  RE: GDAL driver based on EFAL SDK available for download

    Posted yesterday
    Edited by Bob Fortin yesterday
    Warren is correct.

    It turns out there is a way to set the block size:

    if (bCreateNativeX)
    {
    hMetadata = CreateNativeXTableMetadata(hSession, tableName, tablePath, charset);
    }
    else
    {
    hMetadata = CreateNativeTableMetadata(hSession, tableName, tablePath, charset);
    }

    wchar_t szBlockSize[32];
    swprintf(szBlockSize, sizeof(szBlockSize) / sizeof(wchar_t), L"%d", nBlockSize);
    SetMetadata(hSession, hMetadata, L"\\blockSizeMapFile", szBlockSize);

    We do need to document what metadata values can be set this way.

    -Bob

    ------------------------------
    Bob Fortin
    Software Architect and Distinguished Engineer
    MapInfo Pro Development Team
    ------------------------------



  • 10.  RE: GDAL driver based on EFAL SDK available for download

    Posted 16 hours ago
    I tried this and all I am getting is an additional line in the TAB file:

    begin_metadata
    "\blockSizeMapFile" = "512"
    "\MapInfo" = ""
    "\MapInfo\TableID" = "1dcc620b-d64a-4d23-a5db-758058338867"
    end_metadata



    ------------------------------
    Uffe Kousgaard
    ROUTEWARE
    Roskilde
    ------------------------------