安裝gdal的話控汉,將shp轉(zhuǎn)geojson會(huì)非常簡(jiǎn)單心铃。本文因項(xiàng)目需要拯欧,以java-gdal講述如何實(shí)現(xiàn)碉熄。ps:當(dāng)然只要裝有g(shù)dal就都可以實(shí)現(xiàn)功能桨武。
ogr2ogr命令
在控制臺(tái)執(zhí)行如下語(yǔ)句:
D:\PostgreSQL\9.5\bin> ogr2ogr -f GeoJson test.geojson test.shp
gdal中的ogr2ogr工具非常好用肋拔,很多開源工具都集成了該命令锈津,所以雖然作者并未安裝gdal,但是由于postgresql的空間擴(kuò)展postgis集成了ogr2ogr命令凉蜂,所以我們直接使用即可琼梆。
參數(shù)說(shuō)明:
-f:輸出格式性誉,本文指定是GeoJson
dst_datasource_name:轉(zhuǎn)換目標(biāo)數(shù)據(jù)源名稱,本文要求將shp轉(zhuǎn)儲(chǔ)為名稱為test.geojson
src_datasource_name:轉(zhuǎn)儲(chǔ)源數(shù)據(jù)茎杂,本文要轉(zhuǎn)的shp名稱
java-gdal代碼實(shí)現(xiàn)
java-gdal安裝配置
下載地址:https://yunpan.cn/cB2tdzVMQ3nLB 訪問密碼 d03f
1 將java-gdal文件夾中所有的dll復(fù)制到Java\jre7\bin文件夾中错览。
2 將java-gdal文件夾中的gdal.jar在java工程中引用即可完成配置。
轉(zhuǎn)換主要代碼
package GIS;
import org.gdal.*;
import org.gdal.ogr.DataSource;
import org.gdal.ogr.Driver;
import org.gdal.ogr.ogr;
import org.gdal.gdal.*;
public class Test {
public static void main(String[] args) {
// 注冊(cè)所有的驅(qū)動(dòng)
ogr.RegisterAll();
// 為了支持中文路徑煌往,請(qǐng)?zhí)砑酉旅孢@句代碼
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");
// 為了使屬性表字段支持中文倾哺,請(qǐng)?zhí)砑酉旅孢@句
gdal.SetConfigOption("SHAPE_ENCODING","");
String strVectorFile = "D:\\data\\fibercable.shp";
//打開數(shù)據(jù)
DataSource ds = ogr.Open(strVectorFile,0);
if (ds == null)
{
System.out.println("打開文件失敗刽脖!" );
return;
}
System.out.println("打開文件成功羞海!" );
Driver dv = ogr.GetDriverByName("GeoJSON");
if (dv == null)
{
System.out.println("打開驅(qū)動(dòng)失敗曲管!" );
return;
}
System.out.println("打開驅(qū)動(dòng)成功却邓!" );
dv.CopyDataSource(ds, "D:\\data\\fibercable.geojson");
System.out.println("轉(zhuǎn)換成功!" );
}
}