Rumah  >  Artikel  >  Java  >  Java melaksanakan paparan peta GIS dan fungsi interaksi data borang

Java melaksanakan paparan peta GIS dan fungsi interaksi data borang

王林
王林asal
2023-08-10 23:25:451153semak imbas

Java melaksanakan paparan peta GIS dan fungsi interaksi data borang

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:

  1. Persekitaran pembangunan Java (JDK)
  2. Paparan peta dan pustaka interaksi, seperti OpenLayers, Leaflet, dll.; Rangka kerja web, seperti Spring Boot, Spring MVC, dsb.
  3. 2. Import data borang:
Pertama, kita perlu mengimport data borang ke dalam pangkalan data. Mengambil MySQL sebagai contoh, buat pangkalan data bernama "gis_data" dan buat jadual bernama "form_data". Struktur jadual adalah seperti 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
);

Kemudian, kita boleh menulis kelas Java untuk membaca fail Excel atau CSV, dan masukkan data ke dalam pangkalan data. Contohnya adalah seperti berikut:

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;
    }
}

Kemudian, perkenalkan paparan peta dan pustaka interaksi (seperti OpenLayers) dan jQuery ke dalam halaman hadapan, dan tulis kod JavaScript yang sepadan. Contohnya adalah seperti berikut:

<!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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn