gdal库实现投影转换之类的功能实际上底层都是调用prj4库的功能。如果gdal使用非静态的方式集成prj4库,实际上是采用动态加载prj4库来调用它的接口的。我在gdal库的三个使用心得中提出一个问题:gdal库是如何找到prj4库的路径。今天研究了一下gdal库的源码,弄明白了这个问题。原来有一个ogr选项——PROJSO来专门设置prj4库的全路径的。代码如下:
- std::string strPrjLibFullPath = (_T("C:\\projd.dll"));
- CPLSetConfigOption("PROJSO",strPrjLibFullPath.c_str());
如果不进行设置,prj4库将已以下名字加载:
Linux/Unix? 平台:libproj.so
Windows : proj.dll
MacOSX : libproj.dylib
MinGW32 编译:libproj-0.dll
Cygwin编译:cygproj-0.dll
需要指出的是,在WinCE平台上不支持PROJSO选项的设置。可以通过以下代码获取该选 项的设置值:
- const char *pszLibName = NULL;
- pszLibName = CPLGetConfigOption("PROJSO",NULL);