2016-12-21 1 views
1

ShapefileFeatureTable을 사용하여 ArcGIS을 사용하여지도에 모양 파일을 그려 봅니다. 하지만 모양 파일을로드 할 때 File not found 예외가 발생합니다.
이 내가 사용하는 코드입니다 :안드로이드에서 ArcGIS로 ShapefileFeatureTable을 사용할 때 파일을 찾을 수 없습니다.

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는 자바 부분은 완벽하게 보는 동안 파일을 볼 수 없을 것입니다.

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 : 에서 com.esri.core.geodatabase.Geodatabase.a (원본 파일 : 126) 승/System.err : at com.esri. 기음 ore.geodatabase.ShapefileFeatureTable (SourceFile의 79). W/System.err에 : com.hmomeni.arcgis.MainActivity.initView (MainActivity.java:32) W/System.err의 장소 : com.hmomeni.arcgis에서 .MainActivity.onCreate (MainActivity.java:21) W/System.err에 : android.app.Activity.performCreate에서 (Activity.java:5031) W/System.err에 :
에서 android.app.Instrumentation. callActivityOnCreate (Instrumentation.java:1082) W/System.err에 : android.app.ActivityThread.performLaunchActivity에서 (ActivityThread.java:2038) W/System.err에 : android.app.ActivityThread.handleLaunchActivity (ActivityThread에서. java : 2099),691,363,210 W/System.err의 일 : android.app.ActivityThread.access $ 600 (ActivityThread.java:134) W/System.err의 일 : android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1207) W/System.err : android.os.Handler.dispatchMessage (Handler.java:99) 승/System.err :
at android.os.Looper.loop (Looper.java:137) 승/System.err : 에서 android.app.ActivityThread.main (ActivityThread.java:4797) W/System.err : java.lang.reflect.Method.invokeNative (기본 메서드)에서/System.err : 에서 java.lang .reflect.Method.invoke (Method.java:511) W/System.err : at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:776) W/System.err에 : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:543) W/System.err의 장소 : dalvik.system.NativeStart.main에서 (원시 메소드)

무엇이 문제 일 수 있습니까?

답변

0

.shp 파일과 함께 필요한 모든 파일을 포함하지 않은 것으로 밝혀졌습니다. 이 목적으로 필요한 다른 파일은 .shx, .dbf, .prj입니다.
모두 포함하여 문제가 해결되었습니다.

1

AndroidManifest.xml에서 외부 저장소를 읽거나 쓸 수있는 권한을 요청 했습니까?

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

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

또는

그 각각을 시도하고 도움이되는지 확인합니다. 자세한 내용은 the ArcGIS Runtime documentation을 참조하고 "필요한 사용 권한 및 기능"섹션을 읽으십시오.

관련 문제