kikitte / GDAL4Android

Builds GDAL into an Android Archive(AAR) file
10 stars 2 forks source link

读取shp中文路径不支持 #5

Closed lcf001 closed 3 months ago

lcf001 commented 4 months ago

网上说配置GDAL_FILENAME_IS_UTF8,但不行

kikitte commented 4 months ago

我有空试下

kikitte commented 4 months ago

@lcf001 可能有几个情况需要你考虑下:

  1. 确保应用对shp的所有文件都有读取权限,如.dbf, .shp,只有这些文件都存在才是一个有效的shp数据。
  2. 通常情况下,由多个零散文件构成的shp使用zip压缩到一个文件中较为方便使用。这种情况需要用GDAL的虚拟文件系统打开这些文件,如ogr.Open("/vsizip//data/user/0/com.example.gdaltest/files/gdal_test_data/shp中文测试.zip/shp中文测试.shp")
  3. GDAL_FILENAME_IS_UTF8不需要设置。GDAL内部使用的、输入给它的的和它输出的字符串的编码默认都是UTF-8,包括gdal.Open & ogr.Open。加上Android中默认字符集为UTF-8编码,所以应该不需要做转换。https://stackoverflow.com/questions/59323825/what-is-the-meaning-of-default-character-encoding-and-native-character-encodihttps://gdal.org/development/rfc/rfc5_unicode.html
  4. 当前工程gdaltest更新了中文路径shp的读取,可参考。包括从zip中读取,读取单独文件,读取gb2312编码的shpe文件。
  5. 如果问题解决,请关闭该问题。
lcf001 commented 4 months ago

哦,可以了,是我测试数据有问题,谢谢。 还有,我之前想自己编译一个,但没成功,在mac虚拟机装了个ubuntu arm版的,然后一跑到这里就报错了,是arm版不支持还是什么原因 config.log

kikitte commented 3 months ago

gdal/build_cpp.sh 里面配置使用的编译工具链为x86_64版本,没办法在苹果arm上跑。我估计也没兴趣修改支持,还是太小众。

UPDATE:貌似在Android没有提供arm版的ndk,所以好像没办法在苹果arm芯片上编译 https://developer.android.com/ndk/downloads

/home/lichunfeng/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang: line 3: /home/lichunfeng/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang: cannot execute binary file: Exec format error