// 需要先引入gdal.jar架包,同時把文件夾下的dll文件放在項目的根目錄。(親測32位的有效)
// 文件地址 : http://pan.baidu.com/s/1mhAoqvQ
public String readSHP(String path,String addvcd) {
// 注冊所有的驅動
ogr.RegisterAll();
// 為了支持中文路徑,請添加下面這句代碼
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");
// 為了使屬性表字段支持中文,請添加下面這句 (默認的好像是gbk格式的。utf-8用下面的那行代碼)
gdal.SetConfigOption("SHAPE_ENCODING","");
//gdal.SetConfigOption("SHAPE_ENCODING","CP936");
String strVectorFile = path;
//打開數據
//在讀取shp文件時需要將對應的shx文件放在同一目錄下,否則會出錯
DataSource ds = ogr.Open(strVectorFile,0);
//DataSource ds = ogr.Open(strVectorFile);
if(ds == null) {
System.out.println("未找到文件!");
return null;
}
Driver dv = ogr.GetDriverByName("GeoJSON");
if (dv == null)
{
System.out.println("打開驅動失敗!" );
return null;
}
// 獲取編譯后的路徑
String url = "D:\\node.json";
// 判斷文件中是否已存在該json文件,有則刪除.
File file = new File(url);
if (file.exists()) {
file.delete();
} else {
System.out.println("文件不存在");
}
// 把shp格式轉為json格式后,生成json文件
dv.CopyDataSource(ds, url);
// 根據需求,我這里是直接返回生成的路徑就行。如果是要返回json文件的內容,則需要打開下面這些代碼,修改返回值 sresult
// 解析json,拼接json內容
/*String sresult = "";
try {
BufferedReader br = new BufferedReader(new FileReader("D:\\node.json")); // 讀取原始json文件
try {
String valueString = null;
while ((valueString=br.readLine()) != null){ // 循環拼接json文本內容
sresult = sresult + valueString;
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}*/
return url;
}