在Windows上构建支持ECW的GDAL
在nmake.opt中有以下使用4.1或更新的只读SDK构建读取支持的选项,去掉前面的注释,并修改ECWDIR只想的路径。
# Uncomment the following and update to enable ECW read support with the
# 4.1+ readonly SDK
ECWLIB = $(ECWDIR)\lib\VC140\x64\NCSEcw.lib
一旦构建,则需要将一些ECW的dll拷贝到系统路径(程序工作目录也可)中(VC9环境下如下)
copy "C:\Program Files\ERDAS\ERDAS ECW JPEG2000 Read SDK\redistributable\vc90\win32\*.dll" C:\windows\system32 当前最新版本的为ECW JPEG 2000 SDK 5.3.0,使用VC11/12/14编译。
以上将ECW的支持构建到GDAL核心DLL中。
为了构建ECW和JP2ECW驱动程序作为插件,需要取消nmake.opt中注释的插件行:
# To build ECW support as a plugin uncomment the following, and make sure
# to do "nmake /f makefile.vc plugin" in gdal/frmts/ecw and copy the two
# make install
上面配置没有指定安装路径,最后一步需要superuser权限。
在SuSE 11(低版本gcc),你需要传递一个flag给configure脚本去使用c99兼容性。
$ cd /path/to/libecwj2-3.3
$ ./configure CFLAGS="-std=c99"
$ make
# make install
默认情况下,安装时使用prefix指向目录/usr/local来安装libecwj。你可以使用configure的--prefix选项指定。运行configure --help查看更多选项。如果编译libecwj使用了--prefix(例如/usr/local/libecwj2-3.3),则make install会失败,因为不会自动创建<prefix>/include。执行mkdir <prefix>/include(例如mkdir /usr/local/libecwj2-3.3/include),然后再次运行make install。
在较新的平台(Fedora 16/17/18和RHEL/CentOS 6)上,libecwj2可以在读取JPEG2000文件时会导致程序崩溃。错误在与libecwj2绑定的XML处理代码中,显而易见,这是新的编译器带来的问题。上述平台的一个解决办法是在编译libecwj2时禁用优化,可以通过传递-O0来配置:
$ ./configure CFLAGS="-O0" CXXFLAGS="-O0" 或者在make时候指定:
$ make CFLAGS="-O0" CXXFLAGS="-O0" Mac OS X notes
在Mac OS X上构建libecwj2-3.3可能会有一点问题。相关详细信息,参阅#2032。
https://trac.osgeo.org/gdal/attachment/wiki/ECW/libecwj2-3.3.patch
使用libecwj2-3.3打开和关闭ECW文件占用大量内存的问题,可以使用http://trac.osgeo.org/mapserver/ticket/3245补丁来解决。
#3366中提供了一个补丁,来避免在libecwj2-3.3中的NCSPhysicalMemorySize()的linux实现中溢出。这个工作可以解决内存大于2G的计算机中大内存使用情况。
A patch to fix crash when creating 16 bit JP2 (that occurs on 64bit platforms) is available in ticket #2593中提供了修复16 bit JP2(在64为平台发生)时出现故障的补丁。
在最新的平台(如Fedora 17,使用GCC 4.7)上修复ECWInitialize()崩溃的补丁程序可在#4868中找到。
Open Tickets
#2162 ecw_cs.dat文件出自多云天(provenance cloudy)