shp文件的解析方法


// 需要先引入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;
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM