GDAL 소개
GDAL (Geospatial Data Chartraction Library)은 X/MIT 라이센스 계약에 따른 오픈 소스 래스터 공간 데이터 변환 라이브러리입니다. 추상 데이터 모델을 사용하여 지원되는 파일 형식을 표현합니다. 또한 데이터 변환 및 처리를위한 일련의 명령 줄 도구가 있습니다.
GDAL 공식 웹 사이트 : http://www.gdal.org/, 자세한 내용은 래스터 및 벡터 맵을 포함한 다양한 현재 인기있는지도 데이터 형식을 지원할 수 있습니다. 자세한 내용은 공식 웹 사이트를 참조하십시오. 이 라이브러리는 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) {// 모든 드라이버 gogr.registerall (); // 중국 경로를 지원하려면 다음 코드를 추가하십시오 gdal.setConfigoption ( "gdal_filename_is_utf8", "yes"); // 속성 테이블 필드를 중국어로 지원하려면 다음 문장 gdal.setConfigoption ( "shape_encoding", "")을 추가하십시오. 문자열 strvectorfile = "d : //test//node.shp"; // 파일 열기 DataSource ds = gorg.open (strvectorfile, 0); if (ds == null) {system.out.println ( "파일 열기 실패!"); 반품; } system.out.println ( "성공적인 파일 열기!"); 드라이버 dv = ggegriverbyName ( "geojson"); if (dv == null) {system.out.println ( "열린 드라이버 실패!"); 반품; } system.out.println ( "성공적으로 오픈 드라이버!"); dv.copydatasource (ds, "d : //test//node.json"); System.out.println ( "전환 성공!"); }} SHP 파일을 작성하십시오
import org.gdal.ogr.*; import org.gdal.gdal.*; 클래스 writeshp2 {public static void main (string [] args) {writeshp2 readshpobj = new writeshp2 (); readshpobj.writevectorfile (); } static void writevectorfile () {String strvectorfile = "d : //test//test.shp"; gr.registerall (); gdal.setconfigoption ( "gdal_filename_is_utf8", "no"); gdal.setconfigoption ( "shape_encoding", "cp936"); 문자열 strdrivername = "esri shapefile"; org.gdal.ogr.driver odriver = ost.getdriverbyname (strdrivername); if (odriver == null) {system.out.println (strvectorfile + "드라이버를 사용할 수 없습니다! /n"); 반품; } DataSource ODS = OdRiver.CreatEdatAsource (StrvectorFile, NULL); if (ods == null) {system.out.println ( "벡터 파일 작성 [" + strvectorfile + "] 실패! /n"); 반품; } layer olayer = ods.createlayer ( "testpolygon", null, gr.wkbpolygon, null); if (olayer == null) {system.out.println ( "레이어 생성 실패! /n"); 반품; } // 아래 속성 테이블 작성 // 먼저 fieldId의 정수 속성을 생성하십시오. Olayer.createfield (Ofieldid); // 문자 길이가 50 FieldDefn ofieldName = new FieldDefn ( "FieldName", Og.Ogr.oftString) 인 FeatuRename이라는 문자 속성을 만듭니다. ofieldName.setWidth (100); olayer.createfield (ofieldName); featureDefn Odefn = olayer.getLayerDefn (); // Triangle 기능 생성 기능 기능 제작 기능 = 새로운 기능 (ODEFN); ofeateRetriangle.setfield (0, 0); OfeateRetriangle.setfield (1, "삼각형"); Geometry geomtriangle = geometry.createfromwkt ( "다각형 ((0,20 0,10 15,0))"); OfeateRetriangle .setgeometry (Geomtriangle); olayer.createfeature (ofeateRetriangle); // 사각형 기능 생성 기능 기능의 특징 = 새 기능 (ODEFN); ofeaturerectangle.setfield (0, 1); ofeaturectangle.setfield (1, "사각형"); Geometry GeomRectangle = Geometry.createfromwkt ( "다각형 ((30 0,60 0,60 30,30 30,30 0))"); ofeaturerectangle.setgeometry (geomrectangle); olayer.createfeature (ofeaterectangle); // 펜타곤 기능 생성 기능 기능 생성 기능의 기능은 EaturePentagon = 새로운 기능 (ODEFN); ofeaturepentagon.setfield (0, 2); ofeaturepentagon.setfield (1, "펜타곤"); Geometry Geompentagon = Geometry.createfromwkt ( "다각형 ((70 0,85 0,90 15,80 30,65 15,70 0))"); ofeaturepentagon.setgeometry (Geomctentagon); olayer.createfeature (ofeaturepentagon); ODS.SyncTodisk (); System.out.println ( " /n 데이터 세트 생성이 완료되었습니다! /n"); }}test.dbf, test.shp, test.shx를 받으십시오.
test.dbf는 다음과 같습니다.
다음과 같이 모양을여십시오
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용이 귀하의 연구 나 업무에 도움이되기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다.