首先我們首先定義什么叫做自己的地圖。
我認(rèn)為就是從數(shù)據(jù)到發(fā)布都可以自己控制或者說是可以發(fā)布到內(nèi)網(wǎng)址晕。只是有幾點(diǎn)是可控的致讥。
一仅仆、數(shù)據(jù)屬于自己的
二、數(shù)據(jù)可以自己編輯
三垢袱、地圖可以自己發(fā)布
四墓拜、從整體流程到發(fā)布都可以自己把控。
那么我從整體開發(fā)流程盡量簡化一個(gè)文檔请契。有不完善的地方清大家指教咳榜。
一、數(shù)據(jù)
從數(shù)據(jù)來說姚糊,對(duì)于一張地圖來說最重要的就是數(shù)據(jù)贿衍。目前國內(nèi)的數(shù)據(jù)采集都比較麻煩甚至涉密。
政府部門和官方機(jī)構(gòu):中國的交通運(yùn)輸部門救恨、地方政府或城市規(guī)劃部門可能會(huì)提供公開的路網(wǎng)數(shù)據(jù)贸辈。您可以通過官方網(wǎng)站、數(shù)據(jù)開放平臺(tái)或相關(guān)部門的數(shù)據(jù)發(fā)布渠道來獲取這些數(shù)據(jù)肠槽。
開放數(shù)據(jù)平臺(tái):一些開放數(shù)據(jù)平臺(tái)可能會(huì)提供免費(fèi)的中國路網(wǎng)數(shù)據(jù)擎淤,例如國家數(shù)據(jù)共享服務(wù)平臺(tái)、城市數(shù)據(jù)開放平臺(tái)等秸仙。您可以在這些平臺(tái)上搜索并下載所需的路網(wǎng)數(shù)據(jù)嘴拢。
第三方地圖服務(wù)提供商:一些第三方地圖服務(wù)提供商(如百度地圖、高德地圖)可能提供有關(guān)中國路網(wǎng)的數(shù)據(jù)API寂纪,可以通過這些API獲取路網(wǎng)數(shù)據(jù)席吴。您可能需要了解其使用條款和許可要求。
我們講點(diǎn)現(xiàn)實(shí)的捞蛋,其實(shí)中國大部分城市數(shù)據(jù)只有兩個(gè)渠道孝冒。因?yàn)橛鲆姷拇蟛糠终掷锏臄?shù)據(jù)質(zhì)量不高,其次很難獲取并且不同城市的數(shù)據(jù)格式可能完全不同拟杉。
一庄涡、是圖商 但是必須得有項(xiàng)目的合規(guī)性的證明 在一個(gè)需要幾十W左右 成本比較高
二、開發(fā)數(shù)據(jù)平臺(tái) 基本比較全的就是openstreetmap(osm)的搬设。
這里我介紹一個(gè)下載osm數(shù)據(jù)的方案 穴店。就是從科力地圖的官網(wǎng)下載 。
菠蘿頭:OpenStreetMap(OSM)數(shù)據(jù)下載0 贊同 · 0 評(píng)論文章
省份/城市/縣城 級(jí)別的數(shù)據(jù)最佳的下載方案拿穴。本質(zhì)上是基于overpass網(wǎng)站進(jìn)行下載泣洞。但是這個(gè)網(wǎng)站要進(jìn)行一些代碼的拼接很麻煩。所以為了方面用戶下載默色,科力地圖優(yōu)化了整個(gè)下載流程斜棚。不需要進(jìn)行一些代碼的拼接。
科力地圖有個(gè)數(shù)據(jù)下載頁面。
通過這個(gè)搜索欄 可以進(jìn)行城市名稱的搜索弟蚀。
在這里點(diǎn)擊下載就好了蚤霞。這里進(jìn)行點(diǎn)擊下載就可以進(jìn)行省份/城市級(jí)別數(shù)據(jù)的下載了。因?yàn)檫@個(gè)數(shù)據(jù)下載源頭是overpass網(wǎng)站义钉。估計(jì)是動(dòng)態(tài)切分的原理昧绣。所以下載速度不會(huì)很快。但是對(duì)于一些小城市或者縣城來說是最佳選擇捶闸。 因?yàn)榇蟛糠謹(jǐn)?shù)據(jù)下載網(wǎng)站不會(huì)切分的特別細(xì)夜畴。所以導(dǎo)致一些縣城的數(shù)據(jù)都得自己基于別的工具手動(dòng)進(jìn)行切分。
二删壮、空間數(shù)據(jù)庫
數(shù)據(jù)肯定是需要落地的贪绘。常見的關(guān)系型數(shù)據(jù)庫大概就是3種 Mysql、oracle央碟、postgres 税灌。GIS行業(yè)內(nèi)
最常用的反倒是oracle和postgres 。為啥不用Mysql呢亿虽? 肯定是因?yàn)閙ysql 對(duì)空間字段和空間算法支持的不夠好了菱涤?
大數(shù)據(jù)部分的數(shù)據(jù)庫也有部分 ,類似hbase,mongdb等 也會(huì)有部分空間函數(shù)洛勉。但是對(duì)大部分用戶來說沒有那么多數(shù)據(jù)量粘秆。
這里主要講一下postgres和Postgis 。postgis是postgres數(shù)據(jù)庫的一個(gè)插件收毫。postgres數(shù)據(jù)庫最大的優(yōu)勢(shì)也是可以加載各種插件來擴(kuò)充自己的能力攻走。PostGIS通過向PostgreSQL添加對(duì)空間數(shù)據(jù)類型、空間索引和空間函數(shù)的支持此再,將PostgreSQL數(shù)據(jù)庫管理系統(tǒng)轉(zhuǎn)換為空間數(shù)據(jù)庫昔搂。
PostGIS是一個(gè)用于存儲(chǔ)和處理地理空間數(shù)據(jù)的空間數(shù)據(jù)庫擴(kuò)展,而Oracle Spatial和SQL Server(2008及更高版本)也提供了類似的功能引润。將普通數(shù)據(jù)庫轉(zhuǎn)變?yōu)榭臻g數(shù)據(jù)庫意味著擴(kuò)展數(shù)據(jù)庫的功能,使其能夠有效地存儲(chǔ)痒玩、查詢和分析地理空間數(shù)據(jù)淳附。
在空間數(shù)據(jù)庫中,引入了特定的數(shù)據(jù)類型蠢古、索引和函數(shù)奴曙,以支持空間對(duì)象的存儲(chǔ)和操作。這些要素的作用如下:
數(shù)據(jù)類型:空間數(shù)據(jù)庫引入了專門的數(shù)據(jù)類型草讶,如點(diǎn)(point)洽糟、線(line)和面(polygon),用于表示地理空間對(duì)象。這些數(shù)據(jù)類型允許存儲(chǔ)和處理地理坐標(biāo)信息坤溃,并提供了相應(yīng)的操作和計(jì)算功能拍霜。
索引:空間數(shù)據(jù)庫使用多維度空間索引,以提高對(duì)空間數(shù)據(jù)的查詢性能薪介。這些索引結(jié)構(gòu)可以有效地處理空間關(guān)系查詢祠饺,如鄰近搜索、范圍查詢和交叉查詢汁政,以快速定位和檢索空間對(duì)象道偷。
函數(shù):空間數(shù)據(jù)庫提供了一系列內(nèi)置的空間函數(shù),可以執(zhí)行各種空間操作和分析记劈。這些函數(shù)允許進(jìn)行空間屬性查詢(如計(jì)算面積勺鸦、長度),以及空間關(guān)系查詢(如判斷兩個(gè)對(duì)象的相交性目木、包含關(guān)系等)换途,從而支持復(fù)雜的空間分析和查詢需求。
通過結(jié)合這些要素嘶窄,空間數(shù)據(jù)庫能夠有效地存儲(chǔ)和處理地理空間數(shù)據(jù)怀跛,使其具備空間查詢和分析的能力。這為地理信息系統(tǒng)(GIS)柄冲、位置分析和地理空間應(yīng)用提供了強(qiáng)大的數(shù)據(jù)管理和處理功能
有了空間數(shù)據(jù)庫之后吻谋,就不再需要專門的GIS數(shù)據(jù)引擎(GIS Data Engine)去處理和操縱空間數(shù)據(jù)了,應(yīng)用程序只需要通過SQL語言就能輕松地操縱空間數(shù)據(jù)现横。
三漓拾、操作空間數(shù)據(jù)
空間數(shù)據(jù)的特質(zhì)就是這類數(shù)據(jù)可以理解為形狀,也就是人類很難直接操作數(shù)據(jù)戒祠。因?yàn)槿祟惡茈y通過經(jīng)緯度還原成圖形骇两。我舉例一下
wkt格式
LINESTRING (116.397128 39.916527, 116.397800 39.916835, 116.398457 39.917180, 116.399123 39.917542)
geojson格式
{
? "type": "Feature",
? "properties": {},
? "geometry": {
? ? "type": "LineString",
? ? "coordinates": [
? ? ? [116.397128, 39.916527],
? ? ? [116.397800, 39.916835],
? ? ? [116.398457, 39.917180],
? ? ? [116.399123, 39.917542]
? ? ]
? }
}
所以操作空間數(shù)據(jù)必須得使用工具。
這里介紹幾種工具
空間數(shù)據(jù)庫工具 pgadmin4 和navicat
推薦操作空間數(shù)據(jù)使用pgadmin4 這個(gè)是專門為postgres數(shù)據(jù)庫準(zhǔn)備的數(shù)據(jù)庫操作工具姜盈。并且可以對(duì)查詢結(jié)果進(jìn)行地圖的查看 上面的是示意圖也是通過這個(gè)工具出來的低千。提示一下設(shè)置坐標(biāo)系為4326.
Navicat 就不做多介紹了 這個(gè)工具最大的優(yōu)勢(shì)可以鏈接多種數(shù)據(jù)庫比如mysql、oracle馏颂、postgres
桌面gis工具 arcgis示血、qigs、supermap救拉、josm
最常見的就是arcgis這是毋庸置疑的第一难审。這個(gè)軟件也是大學(xué)里必須得學(xué)的軟件。但是這個(gè)軟件是收費(fèi)的亿絮,但是中國嘛告喊。這類軟件一定有中國特質(zhì)版本 大家自己百度吧麸拄。
qgis和supermap的桌面端 也是都可以用的 。 qgis是開源版本的桌面端的軟件黔姜,比較輕量級(jí)但是也十分好用拢切。
supermap也就是超圖 是中國版本可以對(duì)標(biāo)arcgis的版本。但是也是收費(fèi)的哦5氐怼J颉!
josm 就比較特殊了帮毁。這個(gè)是專門為osm數(shù)據(jù)準(zhǔn)備的編輯工具实苞。
網(wǎng)頁端gis工具 超圖網(wǎng)站 和osm官網(wǎng) 但是osm官網(wǎng)可能不好打開。
SuperMap Online-全面的在線GIS數(shù)據(jù)與應(yīng)用平臺(tái)www.supermapol.com/
osm官網(wǎng)雖然可以在線編輯烈疚,但是都是基于所有共享的數(shù)據(jù)黔牵。也就是你編輯的數(shù)據(jù)所有osm數(shù)據(jù)的使用者都可以共享。如果你對(duì)數(shù)據(jù)私密性要求的很高爷肝。千萬別用osm官網(wǎng)編輯數(shù)據(jù)猾浦。并且我個(gè)人不太了解你實(shí)時(shí)編輯的數(shù)據(jù)是否下載的時(shí)候馬上能用。是否有審核的流程和時(shí)間灯抛。
osm官網(wǎng)(openstreetmap)www.openstreetmap.org/#map=6/18.573/118.323
還有一個(gè)專門目前做交通為主的在線地圖編輯網(wǎng)站金赦。科力地圖
科力地圖的核心是可以將地圖數(shù)據(jù)進(jìn)行在線下載并且導(dǎo)入平臺(tái)。
1.科力地圖擁有多人編輯的能力对嚼,桌面端的應(yīng)用沒有辦法應(yīng)對(duì)大型對(duì)周期要求比較緊的項(xiàng)目夹抗。
2.科力地圖提供了一套交通路網(wǎng)架構(gòu),可以直接讓您從數(shù)據(jù)修改到項(xiàng)目部署一條龍支持纵竖。
3.科力地圖提供了一套渲染架構(gòu)漠烧,您直接可以從這個(gè)網(wǎng)站下載數(shù)據(jù)直接進(jìn)行g(shù)eoserver的渲染。
4.科力地圖提供了多源數(shù)據(jù)綁定:
比如您從圖商那拿到了數(shù)據(jù)靡砌,但是數(shù)據(jù)質(zhì)量不高想修改部分?jǐn)?shù)據(jù)但是圖商沒辦法定制化修改已脓。
比如你從各種廠商拿到不同的數(shù)據(jù)(路況、設(shè)備等)通殃,但是最后的項(xiàng)目想多源數(shù)據(jù)融合或者關(guān)聯(lián)的辦法度液。
總之關(guān)于路網(wǎng)的絕大部份解決方案我們都可以提供!;唷堕担! 歡迎您找我們交流!F照宝!
我們的未來也在高精地圖 數(shù)字孿生等方向I呤堋句葵! 您有定制化需求也可以找我們交流。
四、加載使用空間數(shù)據(jù)
如何加載或者使用數(shù)據(jù)呢乍丈?如果你想在你的網(wǎng)頁里面使用地圖或者說是空間數(shù)據(jù)剂碴。那么首先得有一個(gè)地圖框架,國內(nèi)大家比較熟悉的是高德和百度轻专。
其實(shí)使用范圍更大的前端地圖框架有兩種 openlayers 和leaflet忆矛。前端可以通過這兩個(gè)框架來進(jìn)行圖層的加載。
Leaflet是一個(gè)輕量級(jí)的開源JavaScript庫请垛,專注于提供簡單催训、靈活和易于上手的地圖功能。它具有良好的文檔和活躍的社區(qū)支持宗收,適用于各種規(guī)模的項(xiàng)目漫拭。Leaflet支持多種地圖圖層、標(biāo)記混稽、矢量圖形采驻、交互操作等功能。它還提供了豐富的地圖樣式和插件匈勋,可以輕松擴(kuò)展和定制地圖應(yīng)用礼旅。
OpenLayers是另一個(gè)功能強(qiáng)大的開源地圖框架,提供了廣泛的地圖功能和高度可定制化的選項(xiàng)洽洁。OpenLayers支持多種地圖投影痘系、圖層類型和數(shù)據(jù)源,包括瓦片地圖诡挂、矢量數(shù)據(jù)碎浇、WMS/WMTS服務(wù)等。它具有強(qiáng)大的地圖渲染和交互能力璃俗,支持地圖縮放奴璃、平移、標(biāo)記城豁、查詢苟穆、繪制等操作。OpenLayers還提供了豐富的API和模塊化的架構(gòu)唱星,使開發(fā)者能夠構(gòu)建復(fù)雜的地圖應(yīng)用雳旅。
Leaflet和OpenLayers在使用方式和理念上有一些區(qū)別。Leaflet注重簡潔和易用性间聊,適合快速搭建基本的地圖應(yīng)用攒盈。OpenLayers則更加全面和功能豐富,適合需要更高級(jí)功能和復(fù)雜場(chǎng)景的項(xiàng)目哎榴。選擇使用哪個(gè)框架取決于項(xiàng)目需求型豁、開發(fā)經(jīng)驗(yàn)和個(gè)人偏好僵蛛。
其實(shí)從地圖框架來說數(shù)據(jù)來自于兩個(gè)部分,
一迎变、地圖底圖
二充尉、空間數(shù)據(jù)格式加載(geojson、wkt)類似的空間格式衣形。
第一個(gè)大部分?jǐn)?shù)據(jù)是必須得通過地圖圖層加載的驼侠。第一個(gè)是減少客戶端的數(shù)據(jù)處理,因?yàn)榇蟛糠謭D層對(duì)于地圖框架來說都是圖片的加載谆吴。
第二個(gè)就是空間數(shù)據(jù)的加載倒源,也就是可以進(jìn)行用戶交互的部分。使開發(fā)者能夠構(gòu)建復(fù)雜的地圖應(yīng)用句狼。
這個(gè)部分也就是用戶如何構(gòu)建自己的地圖應(yīng)用的部分相速。可以根據(jù)自己的應(yīng)用的進(jìn)行不同邏輯的開發(fā)鲜锚。下圖就是我們開發(fā)的一個(gè)地圖平臺(tái)突诬。
如何發(fā)布自己的地圖圖層呢 。 這個(gè)部分我在之后的文章給大家講述芜繁。