Introduction à GDAL
GDAL (Geospatial Data Abstraction Library) est une bibliothèque de conversion de données d'espace raster open source dans le cadre de l'accord de licence X / MIT. Il utilise des modèles de données abstraits pour exprimer les formats de fichiers pris en charge. Il dispose également d'une série d'outils de ligne de commande pour la conversion et le traitement des données.
Site officiel de GDAL: http://www.gdal.org/, il peut prendre en charge divers formats de données de carte actuellement populaires, y compris les cartes raster et vectorielles, pour plus de détails, reportez-vous au site officiel. Cette bibliothèque est développée à l'aide de C / C ++. Il nécessite une auto-compilation lorsqu'elle est utilisée en Java. Je ne parlerai pas du processus de compilation spécifique ici. Jetons un œil au contenu principal de cet article.
Exemple de méthode Java à lire et à écrire du fichier de forme à l'aide de GDAL
Lisez le fichier SHP et convertissez-le en JSON
import org.gdal.ogr. *; import org.gdal.ogr.driver; import org.gdal.gdal. *; public class gdalshptest {public static void main (string [] args) {// enregistrer tous les pilotes ogr.registerall (); // Pour prendre en charge les chemins chinois, veuillez ajouter le code suivant gdal.setConfigoption ("gdal_filename_is_utf8", "oui"); // Pour faire en sorte que le champ de table d'attribut prend en charge chinois, veuillez ajouter la phrase suivante gdal.setConfigoption ("Shape_encoding", ""); String strvectorfile = "d: //test//node.shp"; // Ouvrir le fichier DataSource ds = ogr.open (strVectorfile, 0); if (ds == null) {System.out.println ("Open Fichier a échoué!"); retour; } System.out.println ("Ouvrir le fichier avec succès!"); Driver dv = ogr.getDriverByName ("geojson"); if (dv == null) {System.out.println ("Open Driver a échoué!"); retour; } System.out.println ("Open Driver avec succès!"); dv.copyDataSource (ds, "d: //test//node.json"); System.out.println ("Conversion réussi!"); }} Écrivez un fichier SHP
import org.gdal.ogr. *; import org.gdal.gdal. *; class wreteshp2 {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", "non"); gdal.setConfigOption ("shape_encoding", "cp936"); String strDrivername = "Esri ShapeFile"; org.gdal.ogr.driver odriver = ogr.getDriverByName (strDrivername); if (odriver == null) {System.out.println (strVectorfile + "Le pilote n'est pas disponible! / n"); retour; } DataSource ods = odriver.createdataSource (strVectorfile, null); if (ods == null) {System.out.println ("Créer un fichier vectoriel [" + strVectorfile + "] a échoué! / n"); retour; } Calque oLayer = ODS.CreateLayer ("TestPolygon", null, ogr.wkbpolygon, null); if (oLayer == null) {System.out.println ("La création de couche a échoué! / n"); retour; } // Créez la table d'attribut ci-dessous // Créez d'abord un attribut entier appelé FieldIdIdId = new FieldDefn ("FieldId", ogr.oftInteger); oLayer.CreateField (OFIELDID); // Créer un attribut de caractères appelé FeatRename, avec une longueur de caractère de 50 champsDefn de REALDNAME = new FieldDefn ("FieldName", Ogr.OfTString); OFIELDNAME.SetWidth (100); oLayer.CreateField (OFIELDNAME); FeaturedFn odefn = oLayer.getLayerDefn (); // Créer une fonction de fonctionnalité Triangle OfAureTureTriangle = nouvelle fonctionnalité (ODEFN); OFEATURETRIANGLE.SetField (0, 0); OFEATURETRIANGLE.SETFIELD (1, "Triangle"); Géométrie géomtriangle = géométrie.CreateFromwkt ("polygone ((0 0,20 0,10 15,0 0))"); OFEATURETRIANGLE.SetGeometry (Geomtriangle); OLUER.CREATEFEATURE (OFEATURETRIANGLE); // Créer une fonctionnalité Rectangle de la fonctionnalité d'EAtteRectAngle = nouvelle fonctionnalité (odefn); OFEATRECTANGEGLE.SetField (0, 1); OFEATRECTANGEGLE.SetField (1, "Rectangle"); Géométrie Geomrectangle = géométrie.CreateFromwkt ("Polygon ((30 0,60 0,60 30,30 30,30 0))"); OFEATRECTANGEGLE.SetGeometry (GeomRectangle); oLayer.CreateFeature (OFEATRECTANGE); // Créer une fonction de fonctionnalité Pentagone deEATUREPENTAGON = nouvelle fonctionnalité (ODEFN); OFEATUREPENTAGON.SETFIELD (0, 2); OFEATUREPENTAGON.SETFIELD (1, "Pentagone"); Géométrie Geompentagon = Geometry.Createfromwkt ("Polygone ((70 0,85 0,90 15,80 30,65 15,70 0))"); OFEATUREPENTAGON.SetGeometry (Geompentagon); OLUER.CREATEFEATURE (OFEATUREPENTAGON); ODS.SyncTodisk (); System.out.println ("/ n La création de l'ensemble de données est terminée! / N"); }}Obtenez TEST.DBF, test.shp, test.shx.
test.dbf est le suivant:
Ouvrez la forme comme suit
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article sera d'une aide à votre étude ou à votre travail. Si vous avez des questions, vous pouvez laisser un message pour communiquer.