الجغرافيا المكانية والخرائط في Java: المكتبات، واجهات برمجة التطبيقات وأمثلة الكود

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

الجغرافيا المكانية والخرائط في Java: مراجعة للمكتبات والأدوات

توفر Java أدوات قوية للعمل مع البيانات الجغرافية المكانية، بناء الخرائط وتنفيذ الجغرافيا المكانية. في هذه المقالة، سنستعرض المكتبات الرئيسية وواجهات برمجة التطبيقات التي تسمح بدمج خدمات الخرائط في تطبيقات Java: من تطبيقات سطح المكتب إلى مشاريع الويب والتطبيقات المحمولة.



1. GeoTools — أساس التحليل الجغرافي المكاني

GeoTools هي مكتبة مفتوحة المصدر (LGPL) للعمل مع البيانات الجغرافية في Java. تدعم معايير Open Geospatial Consortium (OGC) وتسمح بقراءة/كتابة تنسيقات Shapefile، GeoJSON، KML، PostGIS، بالإضافة إلى تنفيذ الاستعلامات المكانية.



الإمكانيات الرئيسية:

  • قراءة وكتابة التنسيقات المتجهة والنقطية
  • أنظمة الإحداثيات (CRS) والتحويلات
  • العمليات الهندسية (التمديد، التقاطع، الدمج)
  • التصور عبر Swing/JavaFX (JMapPane)
  • التكامل مع PostGIS، MySQL Spatial


مثال: تحميل وعرض نقطة على الخريطة

import org.geotools.geometry.jts.JTSFactoryFinder;import org.geotools.map.MapContent;import org.geotools.swing.JMapFrame;import org.locationtech.jts.geom.Coordinate;import org.locationtech.jts.geom.GeometryFactory;import org.locationtech.jts.geom.Point;

public class GeoToolsDemo { public static void main(String[] args) { // إنشاء نقطة (خط العرض، خط الطول) GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); Point point = geometryFactory.createPoint(new Coordinate(37.62, 55.75)); // موسكو

// إنشاء خريطة وإضافة طبقة MapContent map = new MapContent(); map.setTitle("نقطتي");

// عرض النافذة (يتطلب إعدادات إضافية للأنماط) JMapFrame.showMap(map); }}

ملاحظة: للتصور الكامل، ستحتاج إلى إضافة نمط الطبقة وخريطة أساسية (عبر WMS مثلاً).



2. JMapViewer — تضمين OpenStreetMap

JMapViewer هي مكتبة خفيفة لعرض بلاطات OpenStreetMap في تطبيقات Swing. مثالية للتكامل السريع للخريطة في تطبيق سطح المكتب.



مثال: خريطة مع علامة

import org.openstreetmap.gui.jmapviewer.JMapViewer;import org.openstreetmap.gui.jmapviewer.MapMarkerDot;import javax.swing.*;

public class MapViewerDemo { public static void main(String[] args) { JFrame frame = new JFrame("خريطتي"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 600);

JMapViewer map = new JMapViewer(); // تعيين المركز والتكبير (إحداثيات موسكو) map.setDisplayPosition(new org.openstreetmap.gui.jmapviewer.Coordinate(55.75, 37.62), 10); // إضافة علامة map.addMapMarker(new MapMarkerDot(55.75, 37.62));

frame.add(map); frame.setVisible(true); }}

تقوم المكتبة تلقائياً بتحميل البلاطات من OpenStreetMap. للعمل، يلزم تضمين jmapviewer.jar و log4j.



3. Google Maps Java Client — التكامل من جانب الخادم

لتطبيقات الويب (Spring Boot، Jakarta EE) من المناسب استخدام Google Maps Services Java Client. يوفر واجهات برمجة تطبيقات للترميز الجغرافي، بناء المسارات، مصفوفة المسافات والحصول على بيانات الأماكن.



مثال: الترميز الجغرافي لعنوان

import com.google.maps.GeoApiContext;import com.google.maps.GeocodingApi;import com.google.maps.model.GeocodingResult;

public class GeocodingExample { public static void main(String[] args) throws Exception { GeoApiContext context = new GeoApiContext.Builder() .apiKey("YOUR_API_KEY") .build();

GeocodingResult[] results = GeocodingApi.geocode(context

توصيات