成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot與PostGIS整合,實現(xiàn)智能交通GIS系統(tǒng)

數(shù)據(jù)庫 其他數(shù)據(jù)庫
智能交通GIS系統(tǒng)就是利用地理信息系統(tǒng)(GIS)技術來管理和分析交通數(shù)據(jù),幫助城市管理者優(yōu)化交通規(guī)劃、提高交通效率并減少擁堵。

PostGIS是一個開源的空間數(shù)據(jù)庫擴展,專門用于增強PostgreSQL數(shù)據(jù)庫以支持地理空間對象。智能交通GIS系統(tǒng)就是利用地理信息系統(tǒng)(GIS)技術來管理和分析交通數(shù)據(jù),幫助城市管理者優(yōu)化交通規(guī)劃、提高交通效率并減少擁堵。

我們?yōu)槭裁催x擇PostGIS?

  • 存儲空間數(shù)據(jù):PostGIS 允許你直接在關系型數(shù)據(jù)庫中存儲和管理空間數(shù)據(jù),而不需要額外的文件或外部系統(tǒng)。
  • 空間索引:通過 GIST(Generalized Search Tree)索引加速空間查詢,提高性能。
  • PostGIS 提供了一系列內(nèi)置函數(shù)和操作符,可以高效地處理空間數(shù)據(jù),包括距離計算、面積測量、交集檢測等。
  • PostGIS 支持多種行業(yè)標準和開放協(xié)議,確保數(shù)據(jù)的互操作性和可移植性。
  • 免費使用:完全開源,遵循 GNU General Public License (GPL)。
  • 節(jié)省預算:減少對專有 GIS 軟件的依賴,降低運營成本。

哪些機構(gòu)使用了PostGIS?

  • 美國環(huán)境保護局:使用 PostGIS 來存儲和分析環(huán)境數(shù)據(jù),包括空氣質(zhì)量、水質(zhì)等,以支持政策制定和公眾健康保護。
  • 加拿大自然資源部: 利用 PostGIS 進行土地覆蓋分類、地形分析等,支持國家的自然資源管理和環(huán)境保護工作。
  • 英國政府:多個部門使用 PostGIS 來管理公共服務設施的位置數(shù)據(jù),如醫(yī)院、學校、公共交通站點等。
  • Uber: 使用 PostGIS 來優(yōu)化司機的路線規(guī)劃,提高出行效率,并進行實時交通數(shù)據(jù)分析。
  • Airbnb: 使用 PostGIS 存儲和查詢房源的位置數(shù)據(jù),幫助用戶找到附近的住宿,并提供個性化的推薦服務。
  • Mapbox : 提供的地圖服務和 SDKs 基于 PostGIS,用于存儲和處理大規(guī)模的地理空間數(shù)據(jù),支持全球范圍內(nèi)的地圖渲染和分析。
  • TomTom:  使用 PostGIS 進行交通數(shù)據(jù)的存儲和分析,提供實時交通更新和導航建議。
  • QGIS : 一個流行的開源 GIS 軟件,支持與 PostGIS 數(shù)據(jù)庫的集成,允許用戶在桌面環(huán)境中進行空間數(shù)據(jù)編輯和分析。
  • 悉尼大學: 研究團隊使用 PostGIS 分析城市擴張、土地使用變化等環(huán)境科學問題。

代碼實操

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>smart-traffic-gis-system</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SmartTrafficGisSystem</name>
    <description>Demo project for Spring Boot with PostgreSQL and PostGIS</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/><!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!-- 引入PostgreSQL JDBC驅(qū)動 -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- 引入PostGIS JDBC驅(qū)動 -->
        <dependency>
            <groupId>net.postgis</groupId>
            <artifactId>postgis-jdbc</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/trafficdb?currentSchema=public&createDatabaseIfNotExist=true
spring.datasource.username=postgres
spring.datasource.password=123456

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.postgis.PostgisDialect

初始化腳本

-- 啟用PostGIS擴展
CREATE EXTENSION IF NOT EXISTS postgis;

-- 創(chuàng)建traffic_data表,包含id、name和location字段
CREATE TABLE traffic_data (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255),
    location GEOMETRY(Point, 4326)
);

交通數(shù)據(jù)實體類

package com.example.smarttrafficsystem.model;

import org.locationtech.jts.geom.Point;
import javax.persistence.*;

/**
 * 交通數(shù)據(jù)實體類,對應數(shù)據(jù)庫中的traffic_data表
 */
@Entity
@Table(name = "traffic_data")
publicclass TrafficData {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id; // 主鍵ID,自增

    private String name; // 交通點名稱

    /**
     * 地理位置字段,類型為Point,坐標系為WGS84 (EPSG:4326)
     */
    @Column(columnDefinition = "geometry(Point,4326)")
    private Point location;

    // Getters and Setters

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Point getLocation() {
        return location;
    }

    public void setLocation(Point location) {
        this.location = location;
    }
}

Repository接口

package com.example.smarttrafficsystem.repository;

import com.example.smarttrafficsystem.model.TrafficData;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface TrafficDataRepository extends JpaRepository<TrafficData, Long> {
}

Service層

package com.example.smarttrafficsystem.service;

import com.example.smarttrafficsystem.model.TrafficData;
import com.example.smarttrafficsystem.repository.TrafficDataRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 業(yè)務邏輯層服務類,處理與交通數(shù)據(jù)相關的業(yè)務邏輯
 */
@Service
publicclass TrafficDataService {

    @Autowired
    private TrafficDataRepository trafficDataRepository;

    /**
     * 獲取所有交通數(shù)據(jù)
     * @return 所有交通數(shù)據(jù)列表
     */
    public List<TrafficData> getAllTrafficData() {
        return trafficDataRepository.findAll();
    }

    /**
     * 保存新的交通數(shù)據(jù)
     * @param trafficData 要保存的交通數(shù)據(jù)對象
     * @return 保存后的交通數(shù)據(jù)對象
     */
    public TrafficData saveTrafficData(TrafficData trafficData) {
        return trafficDataRepository.save(trafficData);
    }
}

Controller層

package com.example.smarttrafficsystem.controller;

import com.example.smarttrafficsystem.model.TrafficData;
import com.example.smarttrafficsystem.service.TrafficDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/v1/traffic")
publicclass TrafficController {

    @Autowired
    private TrafficDataService trafficDataService;

    /**
     * 獲取所有交通數(shù)據(jù)
     * @return 所有交通數(shù)據(jù)列表
     */
    @GetMapping("/")
    public List<TrafficData> getAllTrafficData() {
        return trafficDataService.getAllTrafficData();
    }

    /**
     * 創(chuàng)建新的交通數(shù)據(jù)
     * @param trafficData 要創(chuàng)建的交通數(shù)據(jù)對象
     * @return 創(chuàng)建后的交通數(shù)據(jù)對象
     */
    @PostMapping("/")
    public TrafficData createTrafficData(@RequestBody TrafficData trafficData) {
        return trafficDataService.saveTrafficData(trafficData);
    }
}

Application

package com.example.smarttrafficsystem;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SmartTrafficSystemApplication {

    public static void main(String[] args) {
        SpringApplication.run(SmartTrafficSystemApplication.class, args);
    }
}

測試

插入新的交通數(shù)據(jù)
$ curl -X POST http://localhost:8080/api/v1/traffic/ \
-H "Content-Type: application/json" \
-d '{"name": "New Traffic Point", "location": {"type": "Point", "coordinates": [125.678, 80.123]}}'

Respons:

{
    "id": 1,
    "name": "New Traffic Point",
    "location": {
        "type": "Point",
        "coordinates": [125.678, 80.123]
    }
}
獲取所有交通數(shù)據(jù)以驗證插入結(jié)果
$ curl -X GET http://localhost:8080/api/v1/traffic/

Respons:

[
    {
        "id": 1,
        "name": "New Traffic Point",
        "location": {
            "type": "Point",
            "coordinates": [125.678, 80.123]
        }
    }
]


責任編輯:武曉燕 來源: Java知識日歷
相關推薦

2025-02-28 08:40:28

ZooKeeperSpringBoot計費系統(tǒng)

2025-06-03 02:10:00

SpringInfluxDB數(shù)據(jù)

2025-04-23 08:50:00

SpringBootCurator分布式鎖

2012-06-25 11:48:14

ibmdw

2025-04-08 08:50:37

SpringCamel系統(tǒng)

2025-05-09 08:34:57

RSocketSpringBoot聊天系統(tǒng)

2025-03-31 08:43:34

SpringTika優(yōu)化

2025-03-03 07:30:00

SpringBootJGraphT網(wǎng)絡建模

2013-04-03 11:30:35

2025-03-13 08:37:58

Spring智能條款系統(tǒng)

2025-03-11 09:28:34

2025-04-21 03:00:00

2025-02-26 09:24:54

SpringMySQLMyBatis

2025-03-26 01:55:00

Spring協(xié)議物聯(lián)網(wǎng)

2025-03-20 08:57:54

Spring日志存儲系統(tǒng)

2025-04-25 08:34:52

2010-04-28 10:22:17

世博信息化交通

2025-03-21 08:55:36

SpringOpenFeignAPI

2025-04-01 08:38:41

2025-04-18 08:54:30

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草在线在线精品观看 | 久久久精品综合 | 亚洲成人黄色 | 91在线一区二区 | 美女拍拍拍网站 | 久久久久久一区 | 精品久久久久一区二区国产 | 亚洲精久久久 | 国产精品网址 | 亚洲国产小视频 | 在线免费中文字幕 | 国产亚洲一区二区三区 | 国产精品福利网站 | 亚洲国产日本 | 精品国产一区二区三区久久久蜜月 | 日韩中文字幕免费在线观看 | 中文字幕1区2区3区 日韩在线视频免费观看 | 精品视频一区在线 | 祝你幸福电影在线观看 | 九九久久久 | 国产精品乱码一区二区三区 | 国产96色在线 | 日韩视频成人 | 中文字幕一区在线观看视频 | 嫩草懂你的影院入口 | 日韩欧美中文在线 | 91精品久久久久久久久 | 日韩精品av一区二区三区 | 中文字幕在线人 | 成人午夜视频在线观看 | 日韩在线观看一区 | 日韩在线视频观看 | 日韩一区在线播放 | 97精品超碰一区二区三区 | 日日草夜夜草 | 国产视频一区二区 | 一区二区三区欧美在线观看 | 久久国 | 91精品国产91久久久久福利 | 久久久久久久久久久久一区二区 | 亚洲综合久久精品 |