基于PostgreSQL的百度或高德等POI多層級分類的數據庫設計

目錄

前言

一、百度 VS 高德 POI分類

1、高德POI分類

2、百度POI分類

3、分類對比與區別

二、POI分類表設計

1、物理表結構

2、數據存儲

3、數據查詢

三、總結


前言

????????在當今數字化快速發展的時代,地理信息數據的重要性日益凸顯,而POI(Point of Interest,興趣點)數據作為地理空間數據的關鍵組成部分,廣泛應用于地圖導航、位置服務、商業選址、城市規劃等諸多領域。例如,在地圖導航軟件中,精準豐富的POI數據能夠為用戶呈現周邊各類設施的位置與信息,幫助其更好地規劃出行路線;對于商業機構而言,分析POI數據則可助力其洞察區域商業布局,為新店選址提供科學依據。目前,百度、高德等地圖服務提供商均積累了海量且細致的POI數據,這些數據涵蓋了餐飲、住宿、購物、旅游景點、交通設施等眾多生活服務類別,并且呈現出多層級的分類結構。以餐飲類為例,先分為中式、西式、日式等菜系大類,中式菜系下又有川菜、粵菜、魯菜等細分,每一細分菜系下還可能包含不同風格、檔次的餐廳子項。如此復雜且層次分明的分類體系,對數據的存儲與管理提出了嚴峻挑戰。

????????傳統的數據庫存儲方式在面對這種多層級、海量的POI數據時,逐漸顯現出諸多弊端。一方面,數據之間的層級關系難以直觀、高效地表達,導致在數據查詢時,尤其是跨層級查詢或鉆取時,操作繁瑣且性能不佳;另一方面,隨著數據量的不斷增長,數據庫的擴展性也受到限制,難以靈活應對業務的快速擴張需求。為了實現多源數據的POI分類的準確管理,同時可以保持各平臺的獨立性,要求我們可以實現對不同的數據源進行管理,因此要求設計一個多層次的POI分類表,以適應多源多層次的分類管理需求。

????????PostgreSQL作為一種功能強大、開源的數據庫管理系統,憑借其在存儲復雜數據結構、支持擴展性以及數據一致性和完整性保障等方面的卓越性能,成為了應對這類挑戰的理想選擇之一。其支持豐富的數據類型,例如可以利用數組類型、JSON類型等來存儲多層級數據結構的特征信息;而且具備強大的函數與索引功能,能夠針對特定的查詢需求進行優化,提升查詢效率。因此,對基于PostgreSQL存儲百度或高德等POI多層級分類的數據庫設計進行深入研究具有重要的現實意義。本研究旨在探索如何根據POI數據的多層級特點,合理規劃數據庫的表結構、字段設計,通過有效的數據關聯方式和索引策略,實現對海量POI數據的高效存儲、快速查詢以及便捷的維護與更新,為各類依賴POI數據的應用場景提供堅實可靠的數據支撐,推動地理信息數據在更廣泛領域的深度應用與創新發展,以更好地滿足人們在智能生活與智慧城市建設進程中對精準地理信息服務的不斷攀升的需求。

一、百度 VS 高德 POI分類

????????本節將重點介紹百度和高德兩個平臺的POI分類信息,不僅詳細說明兩者的官方數據入口。還對比了兩者的層級和各層級的分類信息,通過兩個平臺的分類分層的體系說明,也說明了兩者在細分領域的深入程度。不管是高德還是百度的檢索接口,POI的分類絕對是很重要的一個信息。同時也是區域信息查詢的一個重要條件。

1、高德POI分類

????????首先來看高德POI分類,可以在檢索接口中看到POI分類的第一個應用,如下圖所示:

pes

查詢?POI?類型

可選值:分類代碼?或?漢字(若用漢字,請嚴格按照附件之中的漢字填寫)

規則:?多個關鍵字用“|”分割

分類代碼由六位數字組成,一共分為三個部分,前兩個數字代表大類;中間兩個數字代表中類;最后兩個數字代表小類。

若指定了某個大類,則所屬的中類、小類都會被顯示。

例如:010000為汽車服務(大類)

??????????010100為加油站(中類)

??????????010101為中國石化(小類)

??????????010900為汽車租賃(中類)

??????????010901為汽車租賃還車(小類)

當指定010000,則010100等中類、010101等小類會被包含,當指定010900,則010901等小類會被包含。

注意:返回結果可能會包含中小類POI,但不保證包含所有,如需更精確的信息,推薦輸入小類或縮小范圍查詢

下載?POI 分類編碼和城市編碼表

若不指定?city,返回的內容為城市列表以及此城市內有多少結果符合要求。?

必填(keyword?或者?types?二選一必填)

????????其實在這里就可以下載高德平臺的POI分類和城市信息表,點擊超鏈接將跳轉到具體的下載頁面中,如下圖所示:

?????????點擊下載按鈕就可以將高德的POI分類表格下載到本地。

2、百度POI分類

????????下面再來詳細介紹一下百度的POI分類,同樣是來看一下百度地圖的POI分類的入口,關于POI的介紹有兩個入口,第一個是比較粗略的二級分類,同樣在檢索接口中包含以下分類Tag的定義與使用。

tag

檢索分類偏好,與query組合進行檢索,多個分類以","分隔 (POI分類),如果需要嚴格按分類檢索,請通過query參數設置

美食string(50)

?????????點擊“POI分類”可以查看百度的POI分類信息,如下表所示:

一級行業分類二級行業分類
美食中餐廳、外國餐廳、小吃快餐店、蛋糕甜品店、咖啡廳、茶座、酒吧、其他
酒店星級酒店、快捷酒店、公寓式酒店、民宿、其他
購物購物中心、百貨商場、超市、便利店、家居建材、家電數碼、商鋪、市場、其他
生活服務通訊營業廳、郵局、物流公司、售票處、洗衣店、圖文快印店、照相館、房產中介機構、公用事業、維修點、家政服務、殯葬服務、彩票銷售點、寵物服務、報刊亭、公共廁所、步騎行專用道驛站、其他
麗人美容、美發、美甲、美體、其他
旅游景點公園、動物園、植物園、游樂園、博物館、水族館、海濱浴場、文物古跡、教堂、風景區、景點、寺廟、其他
休閑娛樂度假村、農家院、電影院、ktv、劇院、歌舞廳、網吧、游戲場所、洗浴按摩、休閑廣場、其他
運動健身體育場館、極限運動場所、健身中心、其他
教育培訓高等院校、中學、小學、幼兒園、成人教育、親子教育、特殊教育學校、留學中介機構、科研機構、培訓機構、圖書館、科技館、其他
文化傳媒新聞出版、廣播電視、藝術團體、美術館、展覽館、文化宮、其他
醫療綜合醫院、專科醫院、診所、藥店、體檢機構、療養院、急救中心、疾控中心、醫療器械、醫療保健、核酸檢測點、新冠疫苗接種點、風險點、方艙醫院、發熱門診、其他
汽車服務汽車銷售、汽車維修、汽車美容、汽車配件、汽車租賃、汽車檢測場、其他
交通設施飛機場、火車站、地鐵站、地鐵線路、長途汽車站、公交車站、港口、停車場、停車區、停車位、加油加氣站、服務區、收費站、橋、充電站、路側停車位、普通停車位、接送點、電動自行車充電站、高速公路停車區、其他
金融銀行、ATM、信用社、投資理財、典當行、其他
房地產寫字樓、住宅區、宿舍、內部樓棟、其他
公司企業公司、園區、農林園藝、廠礦、其他
政府機構中央機構、各級政府、行政單位、公檢法機構、涉外機構、黨派團體、福利機構、政治教育機構、社會團體、民主黨派、居民委員會、其他
出入口高速公路出口、高速公路入口、機場出口、機場入口、車站出口、車站入口、門(備注:建筑物和建筑物群的門)、停車場出入口、自行車高速出口、自行車高速入口、自行車高速出入口、停車場出口、停車場入口、其他
自然地物島嶼、山峰、水系、其他
行政地標省、省級城市、地級市、區縣、商圈、鄉鎮、村莊、其他
門址門址點、其他
道路高速公路、國道、省道、縣道、鄉道、城市快速路、城市主干道、城市次干道、城市支路、車渡線、路口、其他
鐵路鐵路、地鐵/輕軌、磁懸浮列車、有軌電車、城際快軌、其他
行政界線其他國家國界、已定國界、未定國界、港澳界線、南海范圍線、已定省界、未定省界、海岸線、其他
其他線要素橋梁、隧道、行政假想線、水域假想線、綠地假想線、島嶼假想線、疫情管控區、其他
行政區劃世界級、國家級、省級、市級、區縣級、熱點區域、建成區、智能區域、其他
水系雙線河、湖沼、海洋、其他
綠地綠地公園、高爾夫球場、島、綠化帶、機場、機場道路、其他
標注大洲標注、大洋標注、海域標注、水系標注、島嶼標注、非水系標注、其他
公交線路普通日行公交車、地鐵\輕軌、有軌電車、機場巴士(前往機場)、機場巴士(從機場返回)、機場巴士(機場之間)、旅游線路車、夜班車、輪渡、快車、慢車、機場快軌(前往機場)、機場快軌(從機場返回)、機場軌道交通環路、其他
電子眼限速電子眼、應急車道電子眼、公交車道電子眼、外地車輛電子眼、違章電子眼、其他

????????當然,以上表格是一個最多到二級的分類信息。如果需要百度的更詳細的POI分類表格,需要在接口文檔的響應參數中進行查看,如下圖:

????????點擊紅框中的超鏈接即可下載百度的POI分類。?

3、分類對比與區別

????????我們將百度和高德兩個平臺的POI類別都下載都本地后,可以打開Excel文件具體的對比一下兩者的聯系和區別。首先來看下高德的POI分類表格,如下圖所示:

????????可以看到,高德的POI分類是三級分類,最多也就是三級。 接下來再看一下百度的分類:

????????可以很明顯的看到,百度的POI分類層級居然到了五級,比高德的三級更多也更細。這也側面應征了前面的話,百度的POI分類比高德更加細致。除了兩個在層級有區別以外,我們也可以對比兩者的一級分類的對應關系,百度地圖POI分類中,旅游景點是一級分類;而高德地圖的一級分類是風景名勝;當然這種分法本身沒有什么問題,分類而已。同時,兩者在層次設計上,高德一般三級分類都是全部設置好的,而百度地圖的POI分類,有的只有二級,不會到更細致的層級,這也是兩者的一個大差別。如果還有其它未說明的區別或者聯系,歡迎大家在評論區留言指出。

二、POI分類表設計

????????不管是百度地圖還是高德地圖,兩者其實都包含了一個層級的概念,而一般層級在樹形結構中用的非常多。相信大家對二叉樹等比較熟悉,這里其實也是一個差不多的意思。因此我們在進行表結構的設計時就考慮到了這種父子關系的樹形結構設計。那么本文將給出一種具體的面向高德或者百度的POI分類存儲表,能夠實現兩個不同平臺的數據存儲與檢索,最后給一個查詢的實例用于說明如何進行數據查詢。

1、物理表結構

????????既然是面向多層級的動態樹結構,這里我們就一定會采用樹形表結構設計。這里我們直接給出存儲POI類型表的物理表結構,當然這里我們給出了數據表結構的SQL語句,如有不足或者有問題的地方,歡迎大家評論區交流,物理表模型如下:

????????對應的物理表SQL如下:

CREATE TABLE "public"."biz_poi_category" ("pk_id" int8 NOT NULL,"category_name" varchar(100) NOT NULL DEFAULT ''::character varying,"origin_code" varchar(100) NOT NULL DEFAULT ''::character varying,"parent_id" int8 NOT NULL DEFAULT 0,"ancestors" varchar(2000) NOT NULL DEFAULT ''::character varying,"category_english_name" varchar(100) NOT NULL DEFAULT ''::character varying,"platform" varchar(10) NOT NULL DEFAULT ''::character varying,"order_num" int4 NOT NULL DEFAULT 0,"status" int2 NOT NULL DEFAULT 0,"del_flag" int2 NOT NULL DEFAULT 0,"create_by" varchar(64) NOT NULL DEFAULT ''::character varying,"create_time" timestamp(6),"update_by" varchar(64) NOT NULL DEFAULT ''::character varying,"update_time" timestamp(6),CONSTRAINT "pk_biz_poi_category" PRIMARY KEY ("pk_id")
);
CREATE INDEX "idx_biz_poi_category_name" ON "public"."biz_poi_category" USING btree ("category_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
COMMENT ON COLUMN "public"."biz_poi_category"."pk_id" IS 'pk_id';
COMMENT ON COLUMN "public"."biz_poi_category"."category_name" IS '分類名稱';
COMMENT ON COLUMN "public"."biz_poi_category"."origin_code" IS '原始分類code';
COMMENT ON COLUMN "public"."biz_poi_category"."parent_id" IS '父分類id';
COMMENT ON COLUMN "public"."biz_poi_category"."ancestors" IS '祖級列表';
COMMENT ON COLUMN "public"."biz_poi_category"."category_english_name" IS '分類名稱-英文';
COMMENT ON COLUMN "public"."biz_poi_category"."platform" IS '所屬平臺';
COMMENT ON COLUMN "public"."biz_poi_category"."order_num" IS '排序號';
COMMENT ON COLUMN "public"."biz_poi_category"."status" IS '狀態';
COMMENT ON COLUMN "public"."biz_poi_category"."del_flag" IS '柵格標記';
COMMENT ON COLUMN "public"."biz_poi_category"."create_by" IS '創建者';
COMMENT ON COLUMN "public"."biz_poi_category"."create_time" IS '創建時間';
COMMENT ON COLUMN "public"."biz_poi_category"."update_by" IS '更新人';
COMMENT ON COLUMN "public"."biz_poi_category"."update_time" IS '更新時間';
COMMENT ON TABLE "public"."biz_poi_category" IS 'POI分類信息表,完全兼容百度、高德等平臺,還可以擴展至其它平臺';

2、數據存儲

????????數據的存儲結構比較簡單,主要就是基于parent_id進行父子關聯使用。這里我們使用web界面對POI分類表進行管理,手動添加示例數據。我們在添加一些演示后演示的數據如下:

3、數據查詢

????????這里我們簡單的講解一下如何在PostgreSQL中進行POI分類表的的數據檢索查詢。這里我們講一種是查詢高德節點和下級子節點。sql如下:

with RECURSIVE r as 
( select t1.* from biz_poi_category t1 where t1.pk_id = 101 
union all 
select t2.* from biz_poi_category t2 inner join r  on r.pk_id = t2.parent_id) 
select * from r order by pk_id;

????????查詢結果如下:

三、總結

????????以上就是本文的主要內容,本研究旨在探索如何根據POI數據的多層級特點,合理規劃數據庫的表結構、字段設計,通過有效的數據關聯方式和索引策略,實現對海量POI數據的高效存儲、快速查詢以及便捷的維護與更新,為各類依賴POI數據的應用場景提供堅實可靠的數據支撐,推動地理信息數據在更廣泛領域的深度應用與創新發展,以更好地滿足人們在智能生活與智慧城市建設進程中對精準地理信息服務的不斷攀升的需求。文章詳細得介紹了百度和高德兩個地圖平臺的POI分類信息,最后基于這個POI分類設計了存儲相關數據的物理表用來存儲相關數據。行文倉促,定有不足之處,歡迎各位朋友在評論區批評指正,不勝感激。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912093.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AutoVLA:端到端自動駕駛中具有自適應推理和強化微調功能的視覺-語言-動作模型

26年6月來自UCLA的論文“AutoVLA: A Vision-Language-Action Model for End-to-End Autonomous Driving with Adaptive Reasoning and Reinforcement Fine-Tuning”。 視覺-語言-動作 (VLA) 模型的最新進展通過利用世界知識和推理能力為端到端自動駕駛帶來了希望。然而&#x…

知攻善防靶機 Windows 近源OS

知攻善防靶機 [hvv訓練]應急響應靶機訓練-近源滲透OS-1 前景需要:小王從某安全大廠被優化掉后,來到了某私立小學當起了計算機老師。某一天上課的時候,發現鼠標在自己動彈,又發現除了某臺電腦,其他電腦連不上網絡。感覺…

「Java基本語法」求三位整數的各位數字之和

引言 現在來玩一個數字拆解游戲。想象一下手里拿著一個三位數的積木,現在需要把它拆成個位、十位和百位三塊,然后把它們加起來。這個操作在實際編程中很常見,例如做密碼校驗、游戲分數計算等都可能會用到。 案例:求三位數各位之和 編寫程序,從鍵盤輸入一個三位的正整數…

SciChart 助力蛋白質結構研究:實時可視化推動生物科學新突破

SciChart是高性能數據可視化領域的優秀圖表產品,深受數據密度和精度至關重要行業的信賴,包括航空航天、石油和天然氣、科學研究和賽車運動等。作為F1中使用的解決方案,SciChart被NASA所依賴,并受到90%的頂級醫療技術公司青睞&…

基于Docker與cpolar的Leantime部署方案實現低成本跨地域團隊協作

文章目錄 前言1.關于Leantime2.本地部署Leantime3.Leantime簡單實用4.安裝內網穿透5.配置Leantime公網地址6. 配置固定公網地址 前言 各位小伙伴們,讓我們暫時把目光從云端的分布式系統轉向本地環境。在您的Linux主機上,我們將搭建一個高性價比的協作平…

阿里云Redhat系Linux修改ssh默認端口

阿里云Redhat系Linux修改ssh默認端口 在阿里云買了個服務器,想著ssh的默認端口是22,這不安全。 我就將修改ssh默認端口的過程記錄下來了,方便日后回看。 本命令適用于 Redhat系Linux,例如 Redhat、Centos、Alibaba Cloud Linux、…

lib61850 代碼結構與系統架構深度分析

一、整體代碼結構概述 lib61850 采用模塊化設計,核心代碼位于src目錄下,主要包含以下子目錄: src/ ├── hal/ # 硬件抽象層 ├── mms/ # MMS協議實現 ├── goose/ # GOOSE協議實現 ├──…

linux程序保活

需要解決的一個情況,在一些比較老的linux系統里,沒有systemctl來進行程序的啟動和重啟。現在需要設計一個讓程序高可用的方案。盡量提高程序可用性。 方案分成幾步,屬于補充和遞進的關系。最簡單的是用systemctl 托管,或者service…

文件加密、隱藏軟件 GiliSoft File Lock Pro v15.0 打造自己的私密空間

“在這個連聊天記錄都可能被截圖的時代,你的電腦硬盤里藏著多少不敢示人的秘密?”上周同事借我電腦改PPT時,我突然想起D盤里存著的年度述職報告草稿——那里面密密麻麻標注著部門每個人的績效短板,要是被誤看到簡直社死現場。好在…

深入淺出Java NIO:原理、實戰與性能優化

深入淺出Java NIO:原理、實戰與性能優化 一、技術背景與應用場景 隨著高并發、低延遲場景愈發常見,傳統的基于阻塞 I/O(BIO)模型難以滿足海量連接的需求。Java NIO(Non-blocking I/O)通過 Selector、Chan…

道可云人工智能每日資訊|中國航空工業集團召開人工智能大會

道可云人工智能&元宇宙每日簡報(2025年6月25日)訊,今日人工智能&元宇宙新鮮事有: 第22屆中國—東盟商務與投資峰會聚焦人工智能熱點 第22屆中國—東盟商務與投資峰會(以下簡稱峰會)聯絡官會議24日在廣西南寧召開。中國貿…

Python實例題:文件內容搜索工具

目錄 Python實例題 題目 要求: 解題思路: 代碼實現: Python實例題 題目 文件內容搜索工具 要求: 實現一個命令行工具,用于在指定目錄下搜索包含特定文本的文件。支持以下功能: 遞歸搜索子目錄區分…

【Pandas】pandas DataFrame resample

Pandas2.2 DataFrame Time Series-related 方法描述DataFrame.asfreq(freq[, method, how, …])用于**將時間序列數據轉換為指定頻率(resample to frequency)**的方法DataFrame.asof(where[, subset])用于查找時間序列中最接近指定時間點的非 NaN 值的…

自動駕駛nuPlan數據集-入門使用和可視化操作

文章目錄 前言一、nuPlan 數據集下載及環境安裝根據個人安裝的路徑將以下內容寫入./bashrc 中二、跑通場景可視化總結 前言 自動駕駛行業知識點太多,不進則退,上班就得學習,天上掉金磚砸我腳好了 參考文檔 參考1 一、nuPlan 數據…

ApplovinMax接入Unity(包括我自己踩的一些坑)

前言 ApplovinMax是一個廣告聚合平臺,他會自帶自己的Applovin平臺廣告,在這個插件上面你可以下載其他的聚合渠道,與谷歌的Admob比較相似。都是廣告聚合平臺。 一. ApplovinMax SDK插件的導入 1.下載插件集成 | SDK 集成指南 | MAX | Suppo…

linux系統執行過程中的5種特殊情況

正在執行的用戶態X切換用戶態進程Y的過程為系統中常用的情況,但并非不能完全準確地反應系統的全部執行場景,還有一些場景比較特殊,主要包括以下5種情況 一.內核線程之間通過中斷處理過程中的調度時機發生進程切換,與一般的情況非常…

9. 元素拖拽

元素拖拽 API 介紹 1. 拖放過程 整個拖放過程中,存在兩個關鍵元素:拖拽元素、放置元素 拖拽元素:被拖拽的元素 drag:元素被拖拽時觸發,從開始拖拽到拖拽結束前整個過程會一直持續的觸發dragstart:元素被…

用來提升同花順軟件進程優先級的C#程序

為了提高炒股軟件同花順的運行速度,消除卡頓,編寫一個C#程序,來設置同花順進程的優先級。 using System; using System.Diagnostics; using System.Security.Principal;namespace ProcessPrioritySetter {class Program{static void Main(st…

linux初階---一些指令

一.快速認識6-8個簡單指令 1.pwd pwd指令是用來查看用戶當前所處在的目錄(目錄的概念在理解上可以等效為文件夾)。 (1)在windows系統中我們通過文件路徑表示唯一的文件,在linux中也是一樣的,所以pwd是一個很…

全國產傳感器外殼的綜合分析:材料選擇、考量因素與尺寸精度影響

全國產傳感器作為現代工業、科研、生活等領域的 “感知觸角”,其外殼的性能與質量直接關乎設備的穩定性、可靠性與使用壽命。從材料選型、關鍵考量因素到尺寸精度的影響,每個環節都需精細把控。 一、全國產傳感器外殼材料的多元選擇 全國產傳感器外殼材…