使用参数调用C 的gdal_merge.py
calling gdal_merge.py from c++ with arguments
我想从我的c 代码中调用gdal_merge.py脚本,然后将参数传递给该调用。从命令行调用脚本时,您可以这样做:
gdal_merge.py -n 0 -a_nodata 0 -o [someOutputFile] [inputFiles]
但是,我无法从我的C 代码中工作,因为我不知道如何将参数传递给Python脚本的主要方法。我尝试过这样的尝试:
// this is where the gdal_merge.py script is located
setenv("PYTHONPATH", "/usr/bin/", 1);
// Initialize Python.
Py_Initialize();
namespace python = boost::python;
try {
python::object gdal_merge_modul = python::import("gdal_merge");
std::string arguments = "-n 0 -a_nodata 0 -of GTiff -o";
arguments = arguments.append(outputFile);
arguments = arguments.append(inputFiles);
arguments = arguments.append(outputFile).append(",").append(inputFiles);
gdal_merge_modul.attr("main")(arguments);
}catch(const python::error_already_set&)
{
PyErr_Print();
}
这引发了错误:
Traceback (most recent call last):
File "/usr/bin/gdal_merge.py", line 313, in main
argv = gdal.GeneralCmdLineProcessor( argv )
File "/usr/lib/python2.7/dist-packages/osgeo/gdal.py", line 2959, in GeneralCmdLineProcessor
return _gdal.GeneralCmdLineProcessor(*args)
TypeError: not a sequence
我还尝试了一个char*数组,而不是字符串:
const char* arguments[] = {"-n", "0", "-a_nodata", "0", "-of", "GTiff", "-o", outputFile.c_str(), inputFiles.c_str()};
但这引发了错误:
No to_python (by-value) converter found for C++ type: char const* [9]
我应该如何通过这些论点使它起作用?
更新:好的,我进一步使用了boost::python::list
。现在,我正在努力正确地构建清单以使其正常工作
这就是我的做法:
python::list args;
args.append("-n"); args.append("0"); args.append("-a_nodata"); args.append("0"); args.append("-of"); args.append("GTiff");
args.append("-o"); args.append(outputFile);
for(std::string file : filePaths)
{
args.append(file);
}
相关文章:
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 使用 GDAL 获取矢量数组中的所有行数和列数
- 如何使用 C++ gdal 库将栅格地理从 EGM96 转换为 WGS84 椭球体高度基准面
- 无法使用"generate_vcxproj.bat"生成 GDAL Visual Studio 项目
- 使用CMake而不是g++链接GDAL库
- 合并 2 个排序的链表。必需的成员函数 bool Merge(List342 &list1):
- 如何使用 gcc 5.5 在 gdal 2.4 中启用 c++14
- 使用 GDAL 将 DXF 块从一个文件导入到另一个文件
- Java JNI GDAL 本机库在重新部署为 Web 应用程序时出现类加载器错误
- C++ GDAL 算法 GDALFillNodata() 的实现
- 使用 GDAL/OGR C++将 GeoTiff 的 XY 点重新投影到纬度/经度
- GDAL DestroyFeature() 方法产生分割错误
- 在C++中编译/执行 GDAL 时出现问题
- 无法使用 OGR/GDAL 从形状文件中获取 EPSG
- LeetCode #617 "Merge Two Binary Trees"使用C++
- std::list::merge() 对于包含对象的列表失败
- 无法在 Windows 上将 OSG 与 GDAL 一起使用
- 使用GDAL在FAA部分上找到像素位置
- GeoDjango GDAL installation
- 当我尝试运行此代码输出时"merge.exe has stopped working"?