摘要: 今天碰到一件奇怪的事情。想把原来处理带GPS信息的图片的处理程序修改一下,于是找了一些实验图片,结果运行的时候出现下面的错误:
Traceback (most recent call last): File "/...今天碰到一件奇怪的事情。想把原来处理带GPS信息的图片的处理程序修改一下,于是找了一些实验图片,结果运行的时候出现下面的错误:
<pre class="brush:py;"> Traceback (most recent call last): File "/home/bk/progs/pydev/PicGpsInfo/GenGPSInfoFromJpeg2/gpsinfo.py", line 62, in OnClick_run self.export_info_to_file() File "/home/bk/progs/pydev/PicGpsInfo/GenGPSInfoFromJpeg2/gpsinfo.py", line 104, in export_info_to_file easy_ogr.gen_points_from_pointfile(self.**teptxt**, outshp_pt) File "/home/bk/progs/pydev/PicGpsInfo/GenGPSInfoFromJpeg2/easy_ogr.py", line 53, in gen_points_from_pointfile newds = driver.CreateDataSource(extfile) File "/usr/lib/python2.6/dist-packages/osgeo/ogr.py", line 167, in CreateDataSource return _ogr.Driver_CreateDataSource(self, _args, *_kwargs) TypeError: in method 'Driver_CreateDataSource', argument 2 of type 'char const *'
这个程序是原来写的,当时运行没有问题。不管怎样,先找原因吧。 按原来的思路,先对程序进行重构,再运行,问题依旧。看一下输入、输出的文件路径,也没有问题。Google之,找不到结果。把调用ogr的代码封装之后再封装,还是有问题。费了九牛二虎之力,也没找到问题所在。 再后来,心想还是仔细得一步一步检查吧。把所有的变量及其类型都打印出来检查,终于还是找到了。原来代码中使用了wxpython来获取文件的输入、输出路径,而其返回的值是unicode,但是ogr在创建新文件时,不能识别unicode。 程序最初是在Gentoo下开发的,后来移植到Windows下,使用的GDAL版本比较新。而现在使用的系统是Debian Sqeeze,使用的GDAL的版本是1.6.3。估计可能是版本比较老的原因,以后有机会再检查一下。