Maison  >  Article  >  Java  >  Java implémente l'affichage de la carte SIG et les fonctions d'interaction des données de formulaire

Java implémente l'affichage de la carte SIG et les fonctions d'interaction des données de formulaire

王林
王林original
2023-08-10 23:25:451124parcourir

Java implémente laffichage de la carte SIG et les fonctions dinteraction des données de formulaire

Java implémente l'affichage de cartes SIG et les fonctions d'interaction des données de formulaire

Introduction :
La technologie SIG (Système d'information géographique) joue un rôle important dans la vie quotidienne, l'urbanisme, la surveillance environnementale et d'autres domaines. Dans les applications SIG, la combinaison des données de formulaire avec l'affichage et l'interaction de la carte peut présenter les données de manière plus intuitive et permettre une interaction utilisateur-carte. Cet article présentera comment utiliser le langage Java pour implémenter l'affichage de cartes SIG et les fonctions interactives des données de formulaire, et donnera des exemples de code pertinents.

1. Configuration de l'environnement :
Avant de commencer, nous devons préparer l'environnement suivant :

  1. Environnement de développement Java (JDK) ;
  2. Bibliothèques d'affichage et d'interaction de cartes, telles que OpenLayers, Leaflet, etc. ; Framework Web, tel que Spring Boot, Spring MVC, etc.
  3. 2. Importation des données du formulaire :
Tout d'abord, nous devons importer les données du formulaire dans la base de données. En prenant MySQL comme exemple, créez une base de données nommée "gis_data" et créez une table nommée "form_data". La structure de la table est la suivante :

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

Ensuite, nous pouvons écrire une classe Java pour lire des fichiers Excel ou CSV, et insérer le données dans la base de données. Un exemple est le suivant :

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. Affichage et interaction de la carte :

Ensuite, nous utilisons Java pour écrire du code en arrière-plan afin de lire les données dans la base de données et de les renvoyer en première page au format JSON. Un exemple est le suivant :

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

Ensuite, introduisez la bibliothèque d'affichage et d'interaction de la carte (telle que OpenLayers) et jQuery dans la page d'accueil, et écrivez le code JavaScript correspondant. Un exemple est le suivant :

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

Résumé :

Grâce aux étapes ci-dessus, nous avons implémenté avec succès l'affichage de la carte SIG et la fonction d'interaction des données de formulaire à l'aide du langage Java. Les utilisateurs peuvent voir la carte sur la première page et visualiser les données du formulaire correspondantes via des opérations interactives. Cela facilite l’affichage visuel des données et des opérations de l’utilisateur. Grâce à une amélioration et une optimisation continues, nous pouvons obtenir des fonctions SIG plus riches et servir une plus large gamme d'applications sur le terrain.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn