مقدمة إلى GDAL
GDAL (مكتبة تجريد البيانات الجغرافية المكانية) هي مكتبة تحويل بيانات الفضاء مفتوحة المصدر بموجب اتفاقية ترخيص X/MIT. يستخدم نماذج بيانات مجردة للتعبير عن تنسيقات الملفات المدعومة. كما أن لديها سلسلة من أدوات سطر الأوامر لتحويل البيانات ومعالجتها.
موقع GDAL الرسمي: http://www.gdal.org/ ، يمكن أن يدعم العديد من تنسيقات بيانات الخريطة الشهيرة حاليًا ، بما في ذلك خرائط النقطية والمتجهات ، للحصول على التفاصيل ، راجع الموقع الرسمي. تم تطوير هذه المكتبة باستخدام C/C ++. يتطلب الاضطراب الذاتي عند استخدامه في جافا. لن أتحدث عن عملية التجميع المحددة هنا. دعنا نلقي نظرة على المحتوى الرئيسي لهذه المقالة.
مثال على طريقة Java للقراءة وكتابة الشكل باستخدام GDAL
اقرأ ملف SHP وتحويله إلى JSON
استيراد org.gdal.ogr.*؛ استيراد org.gdal.ogr.driver ؛ استيراد org.gdal.gdal.*؛ الفئة العامة gdalshptest {public static void main (string [] args) {// تسجيل جميع برامج التشغيل ogr.registerall () ؛ // لدعم المسارات الصينية ، يرجى إضافة الكود التالي gdal.setConfigOption ("gdal_filename_is_utf8" ، "نعم") ؛ // لجعل حقل جدول السمات يدعم الصينية ، يرجى إضافة الجملة التالية gdal.setConfigOption ("lape_encoding" ، "") ؛ String strvectorfile = "d: //test//node.shp" ؛ // فتح ملف بيانات ds = ogr.open (strvectorfile ، 0) ؛ if (ds == null) {system.out.println ("فشل الملف المفتوح!") ؛ يعود؛ } system.out.println ("Open File بنجاح!") ؛ DRIVER DV = OGR.GETDRIVERBYNAME ("Geojson") ؛ if (dv == null) {system.out.println ("فشل برنامج التشغيل المفتوح!") ؛ يعود؛ } system.out.println ("Open Driver بنجاح!") ؛ dv.copydatasource (ds ، "d: //test//node.json") ؛ System.out.println ("التحويل الناجح!") ؛ }} اكتب ملف SHP
استيراد 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 ("lape_encoding" ، "cp936") ؛ String strdriverName = "Esri mapacyfile" ؛ org.gdal.ogr.driver odriver = ogd.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 ، ogr.wkbpolygon ، null) ؛ if (olayer == null) {system.out.println ("فشل إنشاء الطبقة! /n") ؛ يعود؛ } // قم بإنشاء جدول السمة أدناه // أولاً قم بإنشاء سمة عدد صحيح تسمى FieldIdielDid = new fieldDefn ("FieldId" ، Ogr.oftinteger) ؛ olayer.createfield (OfieldId) ؛ // قم بإنشاء سمة حرف تسمى featurename ، مع طول حرف 50 fieldDefn ofieldName = new fieldDefn ("fieldName" ، oogr.oftstring) ؛ OfieldName.setWidth (100) ؛ olayer.createfield (OfieldName) ؛ superudefn odefn = olayer.getLayerDefn () ؛ // إنشاء ميزة ميزة Triangle ofeAteAretriangle = ميزة جديدة (ODEFN) ؛ ofeAtureTriangle.setfield (0 ، 0) ؛ ofeAtureTriangle.setfield (1 ، "Triangle") ؛ Geometry Geomtriangle = Geometry.CreateFromWkt ("Polygon ((0 0،20 0،10 15،0 0))") ؛ ofeatureTriangle.SetGeometry (Geomtriangle) ؛ olayer.createfeature (ofeatureTriangle) ؛ // إنشاء ميزة ميزة المستطيل من eaturerEctangle = ميزة جديدة (ODEFN) ؛ ofeaturerectangle.setfield (0 ، 1) ؛ ofeAturerectangle.setfield (1 ، "strend") ؛ Geometry GeomRectangle = Geometry.CreateFromWkt ("Polygon ((30 0،60 0،60 30،30 30،30 0))") ؛ ofeaturerectangle.setgeometry (GeoMRectangle) ؛ olayer.createfeature (ofeaturereCtangle) ؛ // إنشاء ميزة الميزة البنتاغون من eaturepentagon = ميزة جديدة (ODEFN) ؛ ofeaturePentagon.setfield (0 ، 2) ؛ ofeaturePentagon.setfield (1 ، "البنتاغون") ؛ Geometry Geompentagon = Geometry.CreateFromWkt ("Polygon ((70 0،85 0،90 15،80 30،65 15،70 0))") ؛ ofeaturePentagon.SetGeometry (geompentagon) ؛ olayer.createfeature (من eaturepentagon) ؛ ODS.Synctodisk () ؛ system.out.println (" /n يتم الانتهاء من إنشاء مجموعة البيانات! /n") ؛ }}الحصول على test.dbf ، test.shp ، test.shx.
Test.DBF كما يلي:
افتح الشكل على النحو التالي
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون محتوى هذه المقالة من بعض المساعدة لدراستك أو عملك. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل.