Introducción a GDAL
GDAL (Biblioteca de abstracción de datos geoespaciales) es una biblioteca de conversión de datos de espacio de ráster de código abierto bajo el acuerdo de licencia X/MIT. Utiliza modelos de datos abstractos para expresar los formatos de archivo compatibles. También tiene una serie de herramientas de línea de comandos para la conversión y procesamiento de datos.
Sitio web oficial de GDAL: http://www.gdal.org/, puede admitir varios formatos de datos de mapas actualmente populares, incluidos los mapas de ráster y vectores, para más detalles, consulte el sitio web oficial. Esta biblioteca se desarrolla usando C/C ++. Requiere autocompilación cuando se usa en Java. No hablaré sobre el proceso de compilación específico aquí. Echemos un vistazo al contenido principal de este artículo.
Ejemplo de método Java para leer y escribir un archivo de forma utilizando GDAL
Lea el archivo SHP y conviértalo en JSON
importar org.gdal.gr.*; importar org.gdal.ogr.driver; import org.gdal.gdal.*; clase pública gdalshptest {public static void main (string [] args) {// registrar todos los controladores ogr.registerall (); // Para admitir las rutas chinas, agregue el siguiente código GDAL.SetConfigOntion ("GDAL_FILENAME_IS_UTF8", "SÍ"); // Para que la tabla de atributos sea compatible con el campo chino, agregue la siguiente oración gdal.setConfigotion ("shape_encoding", ""); String strVectorFile = "d: //test//node.shp"; // Abrir el archivo de datos de archivos ds = ogr.open (strvectorFile, 0); if (ds == null) {system.out.println ("¡Abrir archivo fallido!"); devolver; } System.out.println ("¡Abra el archivo con éxito!"); Controlador dv = ogr.getdriverByName ("GeoJson"); if (dv == null) {system.out.println ("¡Abra el controlador fallido!"); devolver; } System.out.println ("¡Abra el controlador con éxito!"); dv.CopyDataSource (ds, "d: //test//node.json"); System.out.println ("¡Conversión exitosa!"); }} Escribe un archivo SHP
importar org.gdal.gr.*; importar 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.setConfigOntion ("gdal_filename_is_utf8", "no"); gdal.setConfigotion ("shape_encoding", "cp936"); Cadena strdrivername = "esri shapefile"; org.gdal.gr.driver odriver = ogr.getdriverByName (strdrivername); if (odriver == null) {system.out.println (strvectorFile + "El controlador no está disponible! /n"); devolver; } DataSource ODS = OdRiver.CreateDataSource (StrVectorFile, NULL); if (ods == null) {System.out.println ("Crear archivo vectorial [" + strvectorFile + "] fallido! /n"); devolver; } Capa Olayer = ODS.CreateLayer ("testPolygon", null, ogr.wkbpolygon, null); if (Olayer == NULL) {System.out.println ("Falló la creación de la capa! /n"); devolver; } // Cree la tabla de atributos a continuación // Primero cree un atributo entero llamado FieldID OfieldId = new FieldDefn ("fieldId", ogr.oftinteger); Olayer.CreateField (Ofieldid); // Cree un atributo de caracteres llamado FootureName, con una longitud de personaje de 50 FieldDefn ofieldName = new FieldDefn ("FieldName", Ogr.oftString); ofieldName.setWidth (100); Olayer.CreateField (OfieldName); SenseFn oDefn = Olayer.getLayerDefn (); // Crear característica de triángulo de eeateRetriangle = nueva función (ODEFN); ofeAtureTriangle.setfield (0, 0); ofeatureTriangle.setfield (1, "Triángulo"); Geometry Geomtriangle = Geometry.CreateFromWkt ("Polígono ((0 0,20 0,10 15,0 0))"); ofeeTuretriangle.setgeometry (geomtriangle); Olayer.CreateFeature (Ofeaturetriangle); // Crear característica de rectángulo de eeTeAdEdectangle = nueva función (ODEFN); OfeATeREdectangle.setfield (0, 1); OfeATeREdectange.setfield (1, "rectángulo"); Geometry Geomrectangle = Geometry.CreateFromWkt ("Polígono ((30 0,60 0,60 30,30 30,30 0))"); OfeATeREdectangle.SetGeometry (geomrectangle); Olayer.CreateFeature (OfeaturerEdectangle); // Crear característica del pentágono deeAturePentagon = nueva función (ODEFN); OfeAturePentagon.setfield (0, 2); ofAteePentagon.setfield (1, "Pentágono"); Geometry geompentagon = geometry.createFromWkt ("Polígono ((70 0,85 0,90 15,80 30,65 15,70 0))"); OfeAturePentagon.SetGeometry (Geompentagon); Olayer.CreateFeature (OfeAturePentagon); ods.synctodisk (); System.out.println (" /n La creación del conjunto de datos se completa! /N"); }}Obtenga test.dbf, test.shp, test.shx.
test.dbf es el siguiente:
Abra la forma de la siguiente manera
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea de ayuda para su estudio o trabajo. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse.