Einführung in Gdal
GDAL (Geospatial Data Abstraction Library) ist eine Open -Source -Raster -Datenkonvertierungsbibliothek im Rahmen der X/MIT -Lizenzvereinbarung. Es verwendet abstrakte Datenmodelle, um die unterstützten Dateiformate auszudrücken. Es verfügt auch über eine Reihe von Befehlszeilen-Tools für die Datenkonvertierung und -verarbeitung.
Offizielle GDAL -Website: http://www.gdal.org/, kann sie verschiedene aktuell beliebte Kartenformate, einschließlich Raster- und Vektorkarten, unterstützen. Weitere Informationen finden Sie auf der offiziellen Website. Diese Bibliothek wird unter Verwendung von C/C ++ entwickelt. Es erfordert Selbstverbindung, wenn es in Java verwendet wird. Ich werde hier nicht über den spezifischen Zusammenstellungsprozess sprechen. Schauen wir uns den Hauptinhalt dieses Artikels an.
Beispiel für die Java -Methode zum Lesen und Schreiben von Shapefile mit GDAL
Lesen Sie die SHP -Datei und konvertieren Sie sie in JSON
import org.gdal.ogr.*; import org.gdal.ogr.driver; import org.gdal.gdal. // Um chinesische Pfade zu unterstützen, fügen Sie bitte den folgenden Code Gdal.setConfigOption ("Gdal_filename_IS_UTF8", "Ja") hinzu; // Um das Feld Attributtabelle Chinese zu unterstützen, fügen Sie bitte den folgenden Satz Gdal.setConfigOption ("Shape_encoding", "") hinzu; String strvectorfile = "d: //test//node.shp"; // Datei dataSource ds = ogr.open öffnen (StrVectorFile, 0); if (ds == null) {System.out.println ("Open Datei fehlgeschlagen!"); zurückkehren; } System.out.println ("Datei erfolgreich öffnen!"); Treiber dv = ogr.getDriverByName ("Geojson"); if (dv == null) {System.out.println ("Open Treiber fehlgeschlagen!"); zurückkehren; } System.out.println ("Treiber erfolgreich öffnen!"); dv.copyDataSource (ds, "d: //test//node.json"); System.out.println ("Conversion erfolgreich!"); }} Schreiben Sie eine SHP -Datei
import org.gdal.ogr.*; import org.gdal.gdal. 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"); String strDriberName = "Esri Shapefile"; org.gdal.ogr.driver odriver = ogr.getDriverByName (strDriberName); if (odriver == null) {System.out.println (StrvectorFile + "Treiber ist nicht verfügbar! /n"); zurückkehren; } DataSource ods = odriver.createdatasource (strvectorfile, null); if (ods == null) {system.out.println ("Vektordatei erstellen [" + strvectorFile + "] fehlgeschlagen! /n"); zurückkehren; } Layer olayer = ods.createlayer ("testpolygon", null, ogr.wkbpolygon, null); if (olayer == null) {System.out.println ("Schichtschöpfung fehlgeschlagen! /n"); zurückkehren; } // Erstellen Sie die Attributtabelle unten // Erstellen Sie zuerst ein Integer -Attribut mit dem Namen fieldId ofieldId = new fieldDefn ("fieldId", ogr.oftIntinger); Olayer.Createfield (OfieldId); // Erstellen Sie ein Zeichenattribut namens featurename mit einer Charakterlänge von 50 FieldDefn ofieldname = new fielddefn ("fieldname", ogr.oftstring); Ofieldname.Setwidth (100); Olayer.Createfield (OfieldName); Featuredefn odefn = olayer.getLayerdefn (); // Dreieck Feature Feature -Funktion Oneaturetriangle = New Feature (ODEFN); Oneaturetriangle.Setfield (0, 0); Oneaturetriangle.Setfield (1, "Triangle"); Geometrie Geomtriangle = Geometrie.CreateFromWkt ("Polygon ((0 0,20 0,10 15,0 0))"); Oneaturetriangle.setGeometry (Geomtriangle); Olayer.CreateFeature (Oneaturetriangle); // Rechteck -Funktion Feature -Funktion teaturectangangle = Neue Funktion (ODEFN); OREATURECERECTANGLE.SETFIELD (0, 1); aperectangangle.setfield (1, "Rechteck"); Geometrie GeomRectangle = Geometrie.CreateFromWkt ("Polygon ((30 0,60 0,60 30,30 30,30 0))"); OFTURECURECTANGLE.SetGeometry (GeomRectangle); olayer.CreateFeature (Orapurerectangle); // Pentagon Feature Feature -Funktion teaturePentagon = new Feature (ODEFN); ORE -EREPENTAGON.SETFIELD (0, 2); ORE -EREPENTAGON.SETFIELD (1, "Pentagon"); Geometrie Geompentagon = Geometrie. ORE -EREPENTAGON.SETGEOMetry (Geompentagon); Olayer.CreateFeature (One -ERepentagon); ods.synctodisk (); System.out.println (" /n Datensatzerstellung ist abgeschlossen! /N"); }}Get test.dbf, test.shp, test.shx.
test.dbf lautet wie folgt:
Öffnen Sie die Form wie folgt
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, der Inhalt dieses Artikels wird Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.