DataIOAPI UserGuide
DataIOAPI UserGuide
API
Trimble eCognition Suite
for Windows operating system
Version 10.3.0
Revision 1.0
November 2022
7,574,053 B2; US 7,146,380; US 7,467,159 B; US
Trimble Documentation 7,873,223; US 7,801,361 B2.
eCognition 10.3 SDK
Data IO API Acknowledgments
Imprint and Version Portions of this product are based in part on third-
Document Version 10.3.0 party software components.
Copyright © 2022 Trimble Germany GmbH. All eCognition Developer © 2022 Trimble Germany
rights reserved. This document may be copied and GmbH, Arnulfstrasse 126, 80636 Munich, Germany.
printed only in accordance with the terms of the All rights reserved. © 2022 Trimble Documentation,
Frame License Agreement for End Users of the Munich, Germany.
related eCognition software.
Published by: Last updated: November 29, 2022
Trimble Germany GmbH, Arnulfstrasse 126,
D-80636 Munich, Germany
Phone: +49–89–8905–710;
Fax: +49–89–8905–71411
Web: eCognition.com
Dear User,
Thank you for using eCognition software. We
appreciate being of service to you with image
analysis solutions. At Trimble we constantly strive
to improve our products. We therefore appreciate
all comments and suggestions for improvements
concerning our software, training, and
documentation. Feel free to contact us via the web
form on support.ecognition.com. Thank you.
Legal Notes
Trimble® and eCognition® are registered
trademarks of Trimble Germany GmbH in Germany
and other countries. All other product names,
company names, and brand names mentioned in
this document may be trademark properties of
their respective holders.
Protected by patents EP0858051; WO0145033;
WO2004036337; US 6,832,002; US 7,437,004; US
Contents
1 Overview SDK - Data IO API 1
1.1 Related Reference 1
2 Building a Driver 2
2.1 Anatomy of a Driver 2
2.2 Your First Driver – the ‘Hello World’ of Driver Development 2
2.2.1 The Driver Implementation 3
2.2.2 Suggested Design Patterns 10
6 Acknowledgments 21
eCognition Documentation | i
1
Overview SDK - Data IO API
The DataIO API (application programming interfaces) is a component of the eCognition Developer software
development kit (SDK). The DataIO API can be used to develop drivers, or plug-ins for data connectivity and
integration. You can build a connector to many kinds of things; a particular kind of file system, a binary
image format, database, and more.
This DataIO API User Guide provides general instruction about using the DataIO API.
eCognition Documentation | 1
2
Building a Driver
2.1 Anatomy of a Driver
There are four different types of DataIO Drivers – RDI, VDI, ADI, and BDI:
l RDI (Raster Data Interface) allow eCognition software access to raster data image files such as .gif or
.tif.
l VDI (Vector Data Interface) provide an interface to vector file access.
l ADI (Attribute Data Interface) allows access to tabular data, usually read from text file formats such as
.CSV.
l BDI (Browsing Data Interface) is also a similar driver to ADI but was designed to provide repository
support. These drivers are used for interfacing all data that can be represented in a tree structure. This
includes meta-data, composite image files etc.
While all these driver types provide different things to eCognition software, they are all implemented in a
similar fashion. Unlike the eCognition Engine API, there is no class structure to use, no base classes to
derive. This API simply provides the means by which to implement a passive set of function exports which
eCognition applications can use for DATA I/O. It is passive in that the eCognition application initiates all
actions. Never, from the driver, are calls made to the application, and never is an action initiated from the
driver. It is the application which always contacts the driver and requests information or data.
For every driver type, there is a concrete list of functions to be implemented. The implementation of
certain functions Driver DLL is mandatory. They MUST be implemented. If they are not implemented and
exported the application will fail to load the driver and the functionality will not be available. If in some
case, there is no functionality to a particular Function for the driver in question, NULL can be returned (or
empty string – "" – in the case of the return type being const char*).
Other functions are not required for the driver to be useable, but provide however extra functionality to
the driver or opportunities at key events to manage the state of the driver for purposes such as memory
management.
Use the DataIO API help reference to determine which interface function is mandatory, or optional in your
case.
eCognition Documentation | 2
2 Building a Driver
Our first ‘hello world’ will be a raster data driver implementation. It can create, read and write a simple 8
bit image format.
Please investigate a related sample to review and build the source code.
eCognition Documentation | 3
2 Building a Driver
switch(mode)
{
case RDI_READ:
return vFormat[i].read;
break;
case RDI_WRITE:
return vFormat[i].write;
break;
default:
return RDI_Unknown;
};
}
if(pBin8!=NULL)
{
fclose(pBin8->m_hFile);
delete pBin8;
}
}
eCognition Documentation | 4
2 Building a Driver
//-------------------------------------------------------------
// Open the file
//-------------------------------------------------------------
FILE* hFile = fopen(path,"rb");
if(hFile)
{
//---------------------------------------------------------------
// Create a bin8 file header object
//---------------------------------------------------------------
pBin8 = new CBin8;
//---------------------------------------------------------------
// Read image size in the header
//---------------------------------------------------------------
DWORD dwRead = 0;
CBin8Header *pHdr = (CBin8Header *)pBin8;
size_t nBytes = sizeof(CBin8Header);
if(fread(pHdr,nBytes,1,hFile)==1)
{
//------------------------------------------------------------
// Save WIN file header in bin8 file header
//------------------------------------------------------------
pBin8->m_hFile = hFile;
}
eCognition Documentation | 5
2 Building a Driver
else
{
delete pBin8;
fclose(hFile);
pBin8 = NULL;
}
}
return pBin8;
}
//---------------------------------------------------------------
// Check input data
//---------------------------------------------------------------
if(hFile==NULL)
return 1;
if (sx<=0) return 1;
if (sy<=0) return 1;
if (x<0) return 1;
if (y<0) return 1;
if (x+sx>pBin8->m_nSizeX) return 1;
if (y+sy>pBin8->m_nSizeY) return 1;
//---------------------------------------------------------------
// Length of a channel
//---------------------------------------------------------------
int iChnlLng = pBin8->m_nSizeX*pBin8->m_nSizeY;
//---------------------------------------------------------------
// Channel offset from the begginning of the file
//---------------------------------------------------------------
int iChnlOfst = sizeof(CBin8Header) + iChnlLng*chnl;
//---------------------------------------------------------------
// Loop by Y co-ordinate, in each iteration a horizontal line of
// the rectanngle is filled
//---------------------------------------------------------------
for(int iY = y; iY<(y+sy); iY++)
{
//----------------------------------------------------------
eCognition Documentation | 6
2 Building a Driver
//----------------------------------------------------------
// Compute offset of the next line from the beginning of the
// buffer and read the line from the file
//----------------------------------------------------------
BYTE *pBuff = (BYTE*)buf+(iY-y)*sx;
DWORD dwRead = 0;
size_t pos = ftell(pBin8->m_hFile);
dwRead = (DWORD)fread (
pBuff,1,sx,pBin8->m_hFile);
if(dwRead!=sx)
{
iRet = RDI_FAILED;
}
}
return iRet;
}
//---------------------------------------------------------------
// Check input data
//---------------------------------------------------------------
if (sx<=0) return NULL;
if (sy<=0) return NULL;
if (num_chnl!=3) return NULL;
if (type!=RDI_Byte) return NULL;
if (frmt == NULL) return NULL;
if (_stricmp(frmt,"BIN8")!=0) return NULL;
//---------------------------------------------------------------
// Create a new file
//---------------------------------------------------------------
FILE* hFile = fopen(path,"wb");
eCognition Documentation | 7
2 Building a Driver
if(hFile)
{
//---------------------------------------------------------------
// Compute file size
//---------------------------------------------------------------
int iLng = sizeof(CBin8Header) + sx*sy*3;
//---------------------------------------------------------------
// Alloc a buffer for image data
//---------------------------------------------------------------
BYTE *pBytes = (BYTE *)calloc(sizeof(BYTE),iLng);
//---------------------------------------------------------------
// Save image size information in header of the file buffer
//---------------------------------------------------------------
CBin8Header *pHeader = (CBin8Header*)pBytes;
pHeader->m_nSizeX = sx;
pHeader->m_nSizeY = sy;
//---------------------------------------------------------------
// Initialize the file
//---------------------------------------------------------------
DWORD dwWritten = 0;
dwWritten = (DWORD)fwrite(pBytes,iLng,1,hFile);
//---------------------------------------------------------------
// Free buffer
//---------------------------------------------------------------
free(pBytes);
//---------------------------------------------------------------
// Create a bin8 file header and fill it and return as file
// header
//---------------------------------------------------------------
pBin8 = new CBin8;
pBin8->m_hFile = hFile;
pBin8->m_nSizeX = sx;
pBin8->m_nSizeY = sy;
}
return pBin8;
}
//---------------------------------------------------------------
eCognition Documentation | 8
2 Building a Driver
//---------------------------------------------------------------
// Length of a channel data
//---------------------------------------------------------------
int iChnlLng = pBin8->m_nSizeX*pBin8->m_nSizeY;
//---------------------------------------------------------------
// Channel offset from the begginning of the file
//---------------------------------------------------------------
int iChnlOfst = sizeof(CBin8Header) + iChnlLng*chnl;
//---------------------------------------------------------------
// Loop by Y co-ordinate, in each iteration a horizontal line of
// the rectanngle is written
//---------------------------------------------------------------
for(int iY = y; iY<(y+sy); iY++)
{
//----------------------------------------------------------
// Compute offset of the next line from the beginning of the
// file and move file pointher to the position
//----------------------------------------------------------
int iPos = iChnlOfst + iY*pBin8->m_nSizeX + x;
if(fseek(pBin8->m_hFile,iPos,SEEK_SET)!=0)
{
iRet = RDI_FAILED;
break;
}
//----------------------------------------------------------
// Compute offset of the next line from the
// beginning of the buffer
// and write the line to the file
//----------------------------------------------------------
BYTE *pBuff = (BYTE*)buf+(iY-y)*sx;
DWORD dwWritten = 0;
dwWritten = (DWORD)fwrite (pBuff,sizeof(BYTE)*sx,1,
pBin8->m_hFile);
if(dwWritten!=1)
eCognition Documentation | 9
2 Building a Driver
{
iRet = RDI_FAILED;
break;
}
}
return iRet;
}
Data Structures
tFormatInfo
Structure that describes the formats supported by the plug-in
struct tFormatInfo
{
const char *pszID; // Format ID - any unique string that can
// identify a file format
const char *pszName; // Human readable name of a file format
const char *pszExtn; // File extension for the format
RDIDataType read; // Datatype for reading
RDIDataType write; // Datatype for writing
const char *pszDrvID;
bool adi_read; // Can the driver read files with the
// format?
bool adi_write; // Can the driver write files with the
// format?
};
eCognition Documentation | 10
2 Building a Driver
Example Usage
Example Usage 1
//-------------------------------------------------------
//!RDI_DRIVER_GetFormatID
//-------------------------------------------------------
/*!
\brief enumerate all available formats
\return the rdi format id or NULL
\param indx index of the supported Format
*/
RDI_DRIVER_API const char* RDI_DRIVER_GetFormatID(int indx)
{
if (indx<0)
return NULL;
else if (indx>=NUM_FORMATS)
return NULL;
else
return vFormat[indx].pszID;
}
Example Usage 2
//-------------------------------------------------------
//!RDI_DRIVER_GetFormatCaps (mandatory)
//-------------------------------------------------------
/*!
\param mode 0 means read access 1 means write access
\param indx index of the supported Format
*/
RDI_DRIVER_API RDIDataType RDI_DRIVER_GetFormatCaps(int indx,int mode)
{
if (indx<0)
return RDI_Unknown;
if (indx>=NUM_FORMATS)
return RDI_Unknown;
if (mode==RDI_READ)
return vFormat[indx].read;
if (mode==RDI_WRITE)
return vFormat[indx].write;
return RDI_Unknown;
}
eCognition Documentation | 11
3
Installation and Setup
This API is a component of the eCognition Developer software development kit (SDK). The SDK installation
is an optional part of the eCognition installation. If the SDK is not yet installed on your machine, rerun the
eCognition Developer installation. During the installation sequence on the Choose Components dialog box,
you have to activate the SDK checkbox only.
3.1.3 Samples
l .\DataIO\Samples\RDIPlugins\SampleRDIPluginRO
l .\DataIO\Samples\RDIPlugins\SampleRDIPluginRW
l .\DataIO\Samples\SampleADIPlugin
l .\DataIO\Samples\SampleBDIPlugin
l .\DataIO\Samples\SampleVDIPlugin
l For x86 platforms, Shapefile C Library v1.2 or higher is also required
l For x64 platforms, GDAL Library v1.5 or higher is necessary.
eCognition Documentation | 12
4
Sample Cases and Troubleshooting
4.1 Use Case Samples
4.1.1 Read Raster File Format Capapibility
Description: RDIDrivers access raster data
Sample: SampleRDIPluginRO
eCognition Documentation | 13
4 Sample Cases and Troubleshooting
Once we have broken in our constructor, we can set breakpoints wherever we like within our driver.
Program flow will stop at these points allowing us to investigate any functionality where we suspect
problems.
1. First we start the application. If we set our DebugBreak in the _INIT function as suggested, the
application will crash quite soon, displaying a crash dialog box.
2. When given the choice, click the Debug button. The Just-In-Time Debugging dialog box opens.
3. Simply select the Yes button to debug using Visual Studio, whatever your favorite tool is
eCognition Documentation | 14
4 Sample Cases and Troubleshooting
4. When asked to Attach to Process, the eCognition application should already be selected. Just reconfirm
with OK.
5. Now you are given a choice to debug again, or simply continue without breaking.
l Here you should click the Break button.
6. When you finally click through all the pop-up dialogs of Windows, you shall come to the code point
where the application had halted. It should be the point of your DebugBreak, if this is what caused the
crash.
7. Often, immediately the assembly code is first shown. Here you can use the context menu and ask to
see the source-code only. Right-click for the context-menu and choose Go to source code. You should
now be able to see your source.
8. At this point you have control of the program flow. Now is the time where you can set breakpoints
throughout your plug-in code. The eCognition application will gracefully halt at these points. Being able
to debug like this is essential to problem solving, and is—unless things are really bad, or the problem
does not appear in debug—much better than analyzing the result of many debug fprintf
statements.
eCognition Documentation | 15
4 Sample Cases and Troubleshooting
Figure 4.5. Debug break in source code within Microsoft Visual Studio
Your Driver is not Available for Use in the Custom Import Utility
Your drivers implementation of _GetAttrString does not correctly implement the _DRVR_ID
attribute.
eCognition Documentation | 16
4 Sample Cases and Troubleshooting
Driver DLL is Listed in the Application ‘System Inf’ Dialog (from the Help Menu)
as ‘NOT OK’
Plug-in does not correctly implement the mandatory export functions as specified in the API.
eCognition Documentation | 17
5
The eCognition Driver API
5.1 Integration of the Engine Plug-ins into eCognition
Software
The application uses several drivers to read and write files and databases, and manipulate the data. These
are loaded at Start-up. These are implemented as DLLs and can be conceptually divided into two categories:
Drivers and Plug-ins.
Figure 5.1. Displayed warning message if no RDI drivers were available to load
eCognition Documentation | 18
5 The eCognition Driver API
5.1.4 Configurations
The load order of add-ins is as mentined in the XML Configuration file. That is; the first <Load> tag
encountered will be the first add-in loaded, the last <Load> tag will specify the last configured add-in to be
loaded. There are two attributes of the <Load> tag. These are optional.
l use_path – this attribute specifies that the add-in should be loaded from the context of the given
use_path. This can be an absolute path, or a relative path to the driver itself. If no use_path is specified,
the add-in is loaded from the context of the add-in path.
l init_args – this attribute specifies the string argument that should be passed to the add-in in the
Init function (XDI_Driver_Init with DataIO drivers, and EPIInit with Engine Plug-ins).
<LoadOrder>
<RDI>
<Load>rdidrvr_asc</Load>
<Load>rdidrvr_b16</Load>
<Load>rdidrvr_dib</Load>
<Load use_path="extras">rdidrvr_gdal</Load>
<Load use_path="extras/BundleErdas/bin/NTx86"
init_args="../../../">rdidrvr_erdas</Load>
<Load>rdidrvr_pix</Load>
<Load use_path="extras">rdidrvr_lead</Load>
<Load>rdidrvr_frm</Load>
<Load use_path="extras">rdidrvr_aci</Load>
<Load>rdidrvr_aperio</Load>
<Load use_path="extras">rdidrvr_sar</Load>
<Load use_path="extras">rdidrvr_applied</Load>
<Load use_path="extras">rdidrvr_bacus</Load>
<Load use_path="extras">rdidrvr_flex</Load>
<Load>rdidrvr_dcm</Load>
<Load>rdidrvr_3dhis</Load>
</RDI>
<VDI>
<Load use_path="extras">vdidrvr_shp</Load>
</VDI>
<BDI>
<Load>bdidrvr_meta</Load>
<Load>rdidrvr_flex</Load>
<Load>rdidrvr_3dhis</Load>
<Load>rdidrvr_gdal</Load>
<Load>rdidrvr_bacus</Load>
eCognition Documentation | 19
5 The eCognition Driver API
</BDI>
<ADI>
<Load>adidrvr_csv</Load>
</ADI>
</LoadOrder>
eCognition Documentation | 20
6
Acknowledgments
Portions of this product are based on third-party software components. Trimble is required to include the
following text, related to software and distributions. The most recent version of this document can be
found in the installation folder of eCognition (C:\Program Files\Trimble\eCognition Developer
10.3\bin\third-party-acknowledgements.txt).
Snappy
Version 1.0.5
Copyright (c) 2005 Google Inc.
https://github.com/google/snappy
License: Snappy License
CPPREST
Versions 2.9.1 and 2.10.6
Copyright (c) 2019 Microsoft Corporation
https://github.com/microsoft/cpprestsdk
License: MIT License
eCognition Documentation | 21
6 Acknowledgments
GLEW
Version 2.1.0
Copyright (c) 2002-2007, Milan Ikits Copyright (c) 2002-2007, Marcelo E. Magallon
Copyright (c) 2002, Lev Povalahev
http://glew.sourceforge.net/
License: BSD License and MIT License
Geogram
Version 1.3.9
Copyright (c) 2012-2014 Bruno Levy
http://alice.loria.fr/software/geogram/doc/html/geogram_license.html
License: BSD License
LASZIP
Version 3.1.0 and 3.4.3
Copyright(c) 2007-2017, Martin Isenburg
https://laszip.org/
License: LGPL
DEVIL
Version 1.7.8
Copyright (c) Project Contributors 2019
http://openil.sourceforge.net/
License: LGPL 2.1
Nanoflann
Versions 1.3.0 and 1.4.2
Copyright 2008-2009 Marius Muja Copyright
Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
eCognition Documentation | 22
6 Acknowledgments
Ifcplusplus
Version 1.1
Copyright 2010-2015 Fabian Gerold
https://github.com/ifcquery/ifcplusplus
License: MIT License
Boost
Version 1.79
Copyright Beman Dawes, Daniel Frey, David Abrahams, 2003-2004.
Copyright Rene Rivera 2004-2005.
https://boost.org
License: Boost Software License, Version 1.0
Crypto++
Version 7.0.0
Compilation Copyright (c) 1995-2018 by Wei Dai. All rights reserved.
https://cryptopp.com
License: Boost Software License, Version 1.0
DejaVu
Version 2.30
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is trademark of Bitstream,
Inc.
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
eCognition Documentation | 23
6 Acknowledgments
https://dejavu-fonts.github.io/
License: DejaVu Fonts — License
File-geodatabase (FileGDB)
Version 1.5.1
Copyright 2017 Esri
https://github.com/Esri/file-geodatabase-api
License: Apache License 2.0
PGR Ladybug
Version 2.12.3
Copyright © 2017 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
http://www.ptgrey.com
License: PGR Ladybug® SDK License
Ffmpeg codec
Version N-78758-g5156578
Copyright © 2000-2016 FFmpeg Project
https://ffmpeg.org
License: LGPL 2.1+
Freetype
Version 2.9
http://www.freetype.org
Copyright 1996-2002, 2006 by David Turner, Robert Wilhelm, and Werner Lemberg
License: The FreeType Project LICENSE
GDAL
Version 3.2.3
https://gdal.org
© 1998-2022 Frank Warmerdam, Even Rouault, and others
License: GDAL License (https://gdal.org/license.html)
GeoGram
eCognition Documentation | 24
6 Acknowledgments
Version 1.3.9
https://github.com/BrunoLevy/geogram
Copyright (c) 2012-2014, Bruno Levy All rights reserved.
License: BSD 3-Clause "New" or "Revised" License
Graphic gems
Version 1.0
"Graphics Gems" (editor, Andrew S. Glassner, published by
Academic Press, Cambridge, MA, 1990, ISBN 0-12-286165-5, 833 pgs.).
License: Graphic gems license
Graphic gems
Version 1.0
"Graphics Gems" (editor, Andrew S. Glassner, published by
Academic Press, Cambridge, MA, 1990, ISBN 0-12-286165-5, 833 pgs.).
License: Graphic gems license
gSOAP
Version 2.7.9
https://www.genivia.com/dev.html
Copyright (C) 2000-2005 Robert A. van Engelen, Genivia, Inc. All Rights Reserved.
License: gSOAP Public Open Source License (Version 1.3a)
Info-Zip
Version 1.01e
http://www.info-zip.org
Copyright (c) 1990-2007 Info-ZIP. All rights reserved.
License: Info-Zip license (BSD-based)
eCognition Documentation | 25
6 Acknowledgments
Jasper
Version 2.0.14
https://github.com/jasper-software/jasper
Copyright (c) 2001-2016 Michael David Adams
Copyright (c) 1999-2000 Image Power, Inc.
Copyright (c) 1999-2000 The University of British Columbia
License: JasPer License Version 2.0
LASZip
Version 3.1.0
https://laszip.org/
Copyright (c) 2007-2017, Martin Isenburg, rapidlasso - fast tools to catch reality
License: LGPL 2.1
libGeoTiff
Version 1.2.5
https://github.com/OSGeo/libgeotiff
Copyright (c) 1995 Niles D. Ritter
Copyright (c) 1999, Frank Warmerdam
License: libgeotiff license
Libjpeg
Version 9b, 17-Jan-2016
http://libjpeg.sourceforge.net/
Copyright (C) 1991-2016, Thomas G. Lane, Guido Vollbeding.
License: Libjpeg License
Libpng
Version 1.6.37
http://www.libpng.org/pub/png/libpng.html
Copyright (c) 1995-2019 The PNG Reference Library Authors.
Copyright (c) 2018-2019 Cosmin Truta.
Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
Copyright (c) 1996-1997 Andreas Dilger.
eCognition Documentation | 26
6 Acknowledgments
Libpng
Version 1.6.37
http://www.libpng.org/pub/png/libpng.html
Copyright (c) 1995-2019 The PNG Reference Library Authors.
Copyright (c) 2018-2019 Cosmin Truta.
Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
Copyright (c) 1996-1997 Andreas Dilger.
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
License: PNG Reference Library License version 2
Mesa 3-D
Version 7.0
https://www.mesa3d.org/
Copyright (c) 2015 The Android Open Source Project
License: Apache 2.0
MrSid DSDK
Version 9.5.4
Copyright (c) 2010 - 2017 Celartem Inc. d.b.a. LizardTech.
LizardTech Computer Software License Agreement for MrSID Decode SDKs
License: LizardTech Computer Software License Agreement for MrSID Decode SDKs
NSIS
Version 3.6.1.0
https://nsis.sourceforge.io/
Copyright (c) 1999-2020 Contributors
License: Common Public License version 1.0
eCognition Documentation | 27
6 Acknowledgments
License: Modified BSD License, the Mesa 3-D License (MIT) and the Khronos License (MIT).
Pybind11
Version 2.9.2
https://github.com/pybind/pybind11
Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.
License: pybind free license
OpenMP
Version 5.0 (part of IPP)
https://www.openmp.org/
Copyright (c) 2005-2014 Intel Corporation. All rights reserved.
License: Intel Simplified Software License (Version January 2018)
Shapelib
Version 1.92 (part of GDAL)
https://gdal.org
Copyright (c) Frank Warmerdam
License: GDAL License (https://gdal.org/license.html)
SQLite
Version 3.3.03.3.0
https://www.sqlite.org/
Copyright: Public Domain
License: doesn’t require a license
TensorFlow
Version 2.5
https://www.tensorflow.org/
Copyright (c) Google Inc., Yuan Tang <terrytangyuan@gmail.com>, Arm Ltd
License: Apache 2 License
Tesseract library
Version 5.1.0
eCognition Documentation | 28
6 Acknowledgments
https://github.com/tesseract-ocr/tesseract
Copyright (c) Tesseract authors
License: Apache 2 License
wkhtmltopdf executable
version: 0.12.3.2
https://wkhtmltopdf.org/
Copyright (c) 2010-2014 wkhtmltopdf authors
License: LGPL v3
Python
Version: 3.9.12
https://www.python.org/
Copyright (c) 2001-2022. Python Software Foundation
License: Python Software Foundation Version 2
pip
Version: 22.0.4
https://pip.pypa.io/en/stable/
Copyright (c) 2008-present The pip developers
License: MIT License
eCognition Documentation | 29
6 Acknowledgments
eCognition Documentation | 30
6 Acknowledgments
eCognition Documentation | 31