安裝gdal的話,將shp轉geojson會非常簡單。本文因項目需要,以java-gdal講述如何實現。ps:當然只要裝有gdal就都可以實現功能。
ogr2ogr命令
在控制臺執行如下語句:
D:\PostgreSQL\9.5\bin> ogr2ogr -f GeoJson test.geojson test.shp
gdal中的ogr2ogr工具非常好用,很多開源工具都集成了該命令,所以雖然作者并未安裝gdal,但是由于postgresql的空間擴展postgis集成了ogr2ogr命令,所以我們直接使用即可。
參數說明:
-f:輸出格式,本文指定是GeoJson
dst_datasource_name:轉換目標數據源名稱,本文要求將shp轉儲為名稱為test.geojson
src_datasource_name:轉儲源數據,本文要轉的shp名稱
java-gdal代碼實現
java-gdal安裝配置
下載地址:https://yunpan.cn/cB2tdzVMQ3nLB 訪問密碼 d03f
1 將java-gdal文件夾中所有的dll復制到Java\jre7\bin文件夾中。
2 將java-gdal文件夾中的gdal.jar在java工程中引用即可完成配置。
轉換主要代碼
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) {
// 注冊所有的驅動
ogr.RegisterAll();
// 為了支持中文路徑,請添加下面這句代碼
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");
// 為了使屬性表字段支持中文,請添加下面這句
gdal.SetConfigOption("SHAPE_ENCODING","");
String strVectorFile = "D:\\data\\fibercable.shp";
//打開數據
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("打開驅動失敗!" );
return;
}
System.out.println("打開驅動成功!" );
dv.CopyDataSource(ds, "D:\\data\\fibercable.geojson");
System.out.println("轉換成功!" );
}
}