Mysql Geometry的使用 —— 地圖上數據展示


地圖相關服務選擇的是四維圖新
本文記錄的是,將添加到MySQL中帶有Geometry類型字段的數據,展示在地圖上(后端),前端相關接口服務可看 MineMap for 2D,並進行一定的查詢優化

一、地圖上數據展示

思路:

  • 自定義新增到數據庫中的數據,必需字段包含有 Geometry(經緯度坐標)、code(區分地圖上圖標,如醫院學校顯示的圖標不同),進行查詢返回給前端
  • 前端拿到數據進行渲染展示,根據 code 上圖標

例如向表中新增一條數據,包含名稱,坐標,類型,及Double類型的經緯度

insert into mapdata (ID, name, geometry, code, jd, wd)
value ('1', '名稱', ST_POINTFROMTEXT('POINT(103,36)'), '001', 
        ST_X(ST_POINTFROMTEXT('POINT(103,36)')), ST_Y(ST_POINTFROMTEXT('POINT(103,36)')))

查詢語句:

SELECT id, name, ST_ASGeoJSON(geometry) geometry, code, jd, wd
FROM mapdata

查詢結果:

前端獲得結果(字段名可以自定義):

圖上展示:

二、地圖上查詢優化

  1. 給數據加上圖層標識
    四維的地圖縮放等級范圍為 3~17,不過一般在12級之前,地圖范圍較大,可以在地圖圖層為12級之后,在進行數據的查詢,分層級顯示,例如下圖,圖層在12級左右

  2. 數據上添加單獨的經緯度字段
    在數據添加上 decimal 類型的經度和緯度,在查詢的時候,直接根據經緯度先進行搜索范圍的縮小,再進行精確查找,會比直接使用函數,搜索在指定范圍內的點搜索快很多
    在這里插入圖片描述

  3. 地圖拖動,只查詢電腦屏幕所看到的地方
    先獲得屏幕上對角經緯度,根據對角經緯度獲得Double類型上下左右經緯度,限定搜索結果只搜屏幕所能看得到的

select ST_AsGeoJSON(m.geometry) as geometry
from mapdata
where jd > 103.5 and jd < 104.5 and wd > 35.5 and wd < 36.5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM