2016-12-21 5 views
1

Я пытаюсь использовать ArcGIS, чтобы нарисовать файл формы на карте, используя его ShapefileFeatureTable. Но когда я пытаюсь загрузить файл формы, я получаю исключение File not found.
Это код, я использую:Файл не найден Исключение при использовании ShapefileFeatureTable с ArcGIS на Android

ShapefileFeatureTable shapefileFeatureTable; 
try { 
    shapefileFeatureTable = new ShapefileFeatureTable(Environment.getExternalStorageDirectory().getAbsolutePath() + "/shape.shp"); 
} catch (Exception e) { 
    e.printStackTrace(); 
    Toast.makeText(this, "loading shape failed", Toast.LENGTH_SHORT).show(); 
    return; 
} 

Подвох в том, что файл на самом деле существует форма на SDCard. Я отлажена код и достиг этой части, которая бросает исключение:

static Geodatabase a(String var0) throws FileNotFoundException { 
    File var1 = new File(var0); 
    if(!var1.exists()) { 
     throw new FileNotFoundException(var1 + " does not exist."); 
    } else { 
     return new Geodatabase(nativeOpenShapefile(var0)); // this is where it happens 
    } 
} 

Уроженец nativeOpenShapefile, кажется, не быть в состоянии видеть файл в то время как Java часть прекрасно видит. Проверьте StackTrace:

D/dalvikvm: Пытаюсь загрузить Lib /data/data/com.hmomeni.arcgis/lib/libruntimecore_java.so 0x4163daf0 D/dalvikvm: Добавлен общий Lib /данные/данные/com.hmomeni.arcgis/lib/libruntimecore_java.so 0x4163daf0 W/System.err: java.lang.RuntimeException: Файл формы не найден: /storage/sdcard0/shape.shp W/System.err: at com.esri .core.geodatabase.Geodatabase.nativeOpenShapefile (родной метод ) W/System.err: at com.esri.core.geodatabase.Geodatabase.a (SourceFile: 126) W/System.err: по адресу com.esri. с ore.geodatabase.ShapefileFeatureTable (SourceFile: 79). Вт/System.err: в com.hmomeni.arcgis.MainActivity.initView (MainActivity.java:32) Вт/System.err: в com.hmomeni.arcgis .MainActivity.onCreate (MainActivity.java:21) Вт/System.err: в android.app.Activity.performCreate (Activity.java:5031) Вт/System.err:
на android.app.Instrumentation. callActivityOnCreate (Instrumentation.java:1082) Вт/System.err: в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2038) Вт/System.err: в android.app.ActivityThread.handleLaunchActivity (ActivityThread. java: 2099) Вт/System.err: в android.app.ActivityThread.access $ 600 (ActivityThread.java:134) Вт/System.err: в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1207) W/System.err: at android.os.Handler.dispatchMessage (Handler.java:99) W/System.err:
at android.os.Looper.loop (Looper.java:137) W/System.err : at android.app.ActivityThread.main (ActivityThread.java:4797) W/System.err: at java.lang.reflect.Method.invokeNative (родной метод) W/System.err: at java.lang .reflect.Method.invoke (Method.java:511) W/System.err: at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:776) Вт/System.err: в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:543) Вт/System.err: при dalvik.system.NativeStart.main (нативный метод)

Интересно, в чем проблема?

ответ

0

Проблема оказалась в том, что я не включил все необходимые файлы, которые поставляются с файлом .shp. Для этой цели нужны другие файлы, такие как .shx, .dbf, .prj.
В том числе все они исправили проблему.

1

В AndroidManifest.xml запрашивали ли вы разрешение на чтение и/или запись внешнего хранилища?

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

или

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Попробуйте каждый из них и посмотреть, если это помогает. См. the ArcGIS Runtime documentation и прочтите раздел «Необходимые разрешения и функции» для получения дополнительной информации.