GDALの紹介
GDAL(Geospatial Data Abstraction Library)は、X/MITライセンス契約に基づくオープンソースラスタースペースデータ変換ライブラリです。抽象データモデルを使用して、サポートされているファイル形式を表現します。また、データ変換と処理のための一連のコマンドラインツールもあります。
GDAL公式Webサイト:http://www.gdal.org/、RasterおよびVectorマップを含むさまざまな現在人気のマップデータ形式をサポートできます。詳細については、公式Webサイトを参照してください。このライブラリは、C/C ++を使用して開発されています。 Javaで使用する場合、自己コンパイルが必要です。ここでは、特定の編集プロセスについては話しません。この記事の主な内容を見てみましょう。
GDALを使用してShapeFileを読み書きするJavaメソッドの例
SHPファイルを読み、JSONに変換します
import org.gdal.ogr。*; import org.gdal.ogr.driver; import org.gdal.gdal。*; public class gdalshptest {public static void main(string [] args){//すべてのドライバーogr.registerall(); //中国のパスをサポートするには、次のコードを追加してくださいgdal.setConfigoption( "gdal_filename_is_utf8"、 "yes"); //属性テーブルフィールドを中国語サポートするには、次の文を追加してくださいgdal.setconfigoption( "shape_encoding"、 ""); string strvectorfile = "d://test//node.shp"; //ファイルデータソースds = ogr.open(strvectorfile、0); if(ds == null){system.out.println( "open file failed!");戻る; } system.out.println( "ファイルを正常に開く!");ドライバーdv = ogr.getdriverbyname( "geojson"); if(dv == null){system.out.println( "Open Driver Failed!");戻る; } system.out.println( "オープンドライバーに正常に!"); dv.copydatasource(ds、 "d://test//node.json"); System.out.println( "Conversion success!"); }} SHPファイルを書きます
Import org.gdal.ogr。*; import org.gdal.gdal。*; class writeshp2 {public static void main(string [] args){writeshp2 readshpobj = new writeshp2(); readshpobj.writevectorfile(); } static void writevectorfile(){string strvectorfile = "d://test//test.shp"; ogr.registerall(); gdal.setconfigoption( "gdal_filename_is_utf8"、 "no"); gdal.setConfigoption( "Shape_Encoding"、 "cp936");文字列strdrivername = "esri shapefile"; org.gdal.ogr.driver odriver = ogr.getdriverbyname(strdrivername); if(odriver == null){system.out.println(strvectorfile + "ドライバーは利用できません! /n");戻る; } dataSource ods = odriver.createdatasource(strvectorfile、null); if(ods == null){system.out.println( "vectorファイルを作成[" + strvectorfile + "] failed! /n");戻る; }レイヤーolayer = ods.createlayer( "testpolygon"、null、ogr.wkbpolygon、null); if(olayer == null){system.out.println( "レイヤー作成に失敗! /n");戻る; } //以下の属性テーブルを作成//最初にfieldId ofieldId = new fielddefn( "fieldid"、ogr.oftinteger)と呼ばれる整数属性を作成します。 olayer.createfield(ofieldid); // featureNameと呼ばれる文字属性を作成します。 ofieldname.setWidth(100); olayer.createfield(ofieldname); featuredefn odefn = olayer.getlayerdefn(); //トライアングル機能の作成ofeaturetriangle = new feature(odefn); ofeaturetriangle.setfield(0、0); ofeaturetriangle.setfield(1、 "三角"); Geometry geomtriangle = geometry.createfromwkt( "polygon(((0 0,20 0,10 15,0 0))"); ofeaturetriangle.setgeometry(geomtriangle); olayer.createfeature(ofeaturetriangle); // rectangle機能の機能ofeaturerectangle = new feature(odefn); ofeaturerectangle.setfield(0、1); ofeaturerectangle.setfield(1、 "rectangle"); Geometry GeomRectangle = Geometry.CreateFromWkt( "Polygon((30 0,60 0,60 30,30 30,30 0))"); ofeaturerectangle.setgeometry(geomrectangle); olayer.createfeature(ofeaturerectangle); //ペンタゴン機能の作成ofeaturepentagon = new feature(odefn); ofeaturepentagon.setfield(0、2); ofeaturepentagon.setfield(1、 "Pentagon"); Geometry Geompentagon = Geometry.CreateFromWkt( "Polygon((70 0,85 0,90 15,80 30,65 15,70 0)"); ofeaturepentagon.setgeometry(Geompentagon); olayer.createfeature(ofeaturepentagon); ods.synctodisk(); System.out.println( " /nデータセットの作成が完了! /n"); }}test.dbf、test.shp、test.shxを入手してください。
test.dbfは次のとおりです。
次のように形状を開きます
要約します
上記は、この記事のコンテンツ全体です。この記事の内容があなたの研究や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。