Java melaksanakan paparan peta GIS dan fungsi interaksi data borang
Pengenalan:
Teknologi GIS (Sistem Maklumat Geografi) memainkan peranan penting dalam kehidupan seharian, perancangan bandar, pemantauan alam sekitar dan bidang lain. Dalam aplikasi GIS, menggabungkan data borang dengan paparan peta dan interaksi boleh mempersembahkan data dengan lebih intuitif dan membolehkan interaksi peta pengguna. Artikel ini akan memperkenalkan cara menggunakan bahasa Java untuk melaksanakan paparan peta GIS dan fungsi interaktif data borang, dan memberikan contoh kod yang berkaitan.
1. Konfigurasi persekitaran:
Sebelum kita mula, kita perlu menyediakan persekitaran berikut:
CREATE TABLE form_data ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, address VARCHAR(100) NOT NULL, latitude DOUBLE NOT NULL, longitude DOUBLE NOT NULL );
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class DataImporter { public static void importData(File file) throws IOException { try (FileInputStream fis = new FileInputStream(file); Workbook workbook = new XSSFWorkbook(fis); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/gis_data", "root", "password"); PreparedStatement statement = connection.prepareStatement("INSERT INTO form_data (name, address, latitude, longitude) VALUES (?, ?, ?, ?)")) { Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { if (row.getRowNum() == 0) { continue; // skip header row } Cell nameCell = row.getCell(0); Cell addressCell = row.getCell(1); Cell latitudeCell = row.getCell(2); Cell longitudeCell = row.getCell(3); String name = nameCell.getStringCellValue(); String address = addressCell.getStringCellValue(); double latitude = latitudeCell.getNumericCellValue(); double longitude = longitudeCell.getNumericCellValue(); statement.setString(1, name); statement.setString(2, address); statement.setDouble(3, latitude); statement.setDouble(4, longitude); statement.executeUpdate(); } } } }
3. Paparan peta dan interaksi:
Seterusnya, kami menggunakan Java untuk menulis kod latar belakang untuk membaca data dalam pangkalan data dan mengembalikannya ke muka depan dalam format JSON. Contohnya adalah seperti berikut:import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/gis") public class GisController { @GetMapping("/formData") public List<FormData> getFormData() { List<FormData> formDataList = new ArrayList<>(); try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/gis_data", "root", "password"); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM form_data")) { while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); String address = resultSet.getString("address"); double latitude = resultSet.getDouble("latitude"); double longitude = resultSet.getDouble("longitude"); FormData formData = new FormData(id, name, address, latitude, longitude); formDataList.add(formData); } } catch (SQLException e) { e.printStackTrace(); } return formDataList; } }
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>GIS Map</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/openlayers/6.3.1/ol.css" type="text/css"/> <style> #map { width: 100%; height: 400px; } </style> </head> <body> <div id="map"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/openlayers/6.3.1/ol.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $.get("/gis/formData", function (data) { var features = []; data.forEach(function (formData) { var feature = new ol.Feature({ geometry: new ol.geom.Point(ol.proj.fromLonLat([formData.longitude, formData.latitude])), name: formData.name, address: formData.address }); features.push(feature); }); var vectorSource = new ol.source.Vector({ features: features }); var vectorLayer = new ol.layer.Vector({ source: vectorSource, style: new ol.style.Style({ image: new ol.style.Circle({ radius: 6, fill: new ol.style.Fill({ color: 'blue' }) }) }) }); var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }), vectorLayer ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), zoom: 2 }) }); }); }); </script> </body> </html>
Ringkasan:
Melalui langkah di atas, kami berjaya melaksanakan paparan peta GIS dan fungsi interaksi data borang menggunakan bahasa Java. Pengguna boleh melihat peta di muka depan dan melihat data borang yang sepadan melalui operasi interaktif. Ini memudahkan paparan visual data dan operasi pengguna. Melalui penambahbaikan dan pengoptimuman berterusan, kami boleh mencapai lebih banyak fungsi GIS yang kaya dan menyediakan rangkaian aplikasi lapangan yang lebih luas.Atas ialah kandungan terperinci Java melaksanakan paparan peta GIS dan fungsi interaksi data borang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!