WebGIS 開發(fā)中常用的 JavaScript 庫(kù)
在瀏覽器端進(jìn)行WebGIS開發(fā)時(shí),使用合適的JavaScript庫(kù)可以大大提升效率和功能性。本文將介紹一些常用的JavaScript庫(kù),涵蓋了數(shù)據(jù)格式轉(zhuǎn)換、空間坐標(biāo)系操作、幾何運(yùn)算、地圖庫(kù)擴(kuò)展以及其他實(shí)用工具。這些庫(kù)可以幫助你輕松處理各種GIS任務(wù)。
一、數(shù)據(jù)格式轉(zhuǎn)換
1.1、WKT 幾何數(shù)據(jù)轉(zhuǎn)換
如果你需要在不同的GIS數(shù)據(jù)格式之間進(jìn)行轉(zhuǎn)換,以下這些庫(kù)都能派上用場(chǎng),具體選擇取決于你的需求和項(xiàng)目體積考慮。

1.2、前端直接讀取 GeoPackage - @ngageoint/geopackage
GeoPackage是一種單文件地理數(shù)據(jù)存儲(chǔ)格式,可以被QGIS、ArcGIS等GIS工具讀取。@ngageoint/geopackage庫(kù)允許你在瀏覽器中直接讀取GeoPackage文件中的地理數(shù)據(jù)。
1.3、前端直接讀取 Esri Shapefile - ts-shapefile
ts-shapefile庫(kù)使你能夠在瀏覽器中解析Esri Shapefile文件,這是一種常見的GIS數(shù)據(jù)格式。它支持類型提示,并且適用于Leaflet.js等地圖庫(kù)。
1.4、把 GDAL 搬進(jìn)瀏覽器 - gdal3.js
GDAL是一個(gè)強(qiáng)大的GIS庫(kù),gdal3.js通過(guò)WebAssembly將其引入瀏覽器中。這個(gè)庫(kù)支持多種格式,但需要注意其較大的體積。
二、空間坐標(biāo)系的操作
2.1、重投影 - proj4
proj4是JavaScript版本的C++投影庫(kù)PROJ。它用于坐標(biāo)的轉(zhuǎn)換和重投影,支持各種坐標(biāo)系的轉(zhuǎn)換。
2.2、糾正“火星”加密坐標(biāo) - gcoord
gcoord庫(kù)專門用于解決“火星坐標(biāo)系”、“百度坐標(biāo)系”等加密坐標(biāo)問(wèn)題。它可以將加密后的坐標(biāo)準(zhǔn)確糾正,并且支持坐標(biāo)數(shù)組和 GeoJSON 的轉(zhuǎn)換。
2.3、空間坐標(biāo)系的 WKT 定義 - spatialreference
spatialreference庫(kù)允許你根據(jù)WKID獲取坐標(biāo)系的WKT定義。它可以從在線API請(qǐng)求查詢坐標(biāo)系信息。
2.4、空間坐標(biāo)系的 PROJ 定義 - epsg
如果你沒(méi)有在線環(huán)境,可以使用epsg庫(kù)獲取坐標(biāo)系的PROJ4定義。它包含了一個(gè)JSON字典。
2.5、從坐標(biāo)系定義字符串推導(dǎo) WKID - get-epsg-code
get-epsg-code庫(kù)的作用與2.3和2.4相反,它從坐標(biāo)系定義字符串中推導(dǎo)WKID。
2.6、對(duì) GeoJSON 的重投影 - reproj-helper、reproject
這兩個(gè)庫(kù)用于對(duì)GeoJSON對(duì)象進(jìn)行重投影操作,支持GeoJSON校驗(yàn)。
三、簡(jiǎn)易空間分析與幾何運(yùn)算
3.1、JTS 的移植 - jsts
jsts庫(kù)是JTS(Java Topology Suite)的JavaScript版本,用于進(jìn)行空間幾何運(yùn)算。它包含了各種幾何操作功能。
3.2、給GeoJSON 設(shè)計(jì)的簡(jiǎn)易版 “turf” - @terraformer/spatial
? ? ? @terraformer/spatial庫(kù)是一個(gè)簡(jiǎn)單版本的turf,用于進(jìn)行GeoJSON對(duì)象的基本空間分析,如交集、凸包、包含等。
3.3、其他一些幾何圖形變換與計(jì)算庫(kù)
這些庫(kù)用于處理各種幾何圖形操作,如三角化、生成網(wǎng)格等。earcut: 用于三角化離散幾何多邊形的庫(kù)。hextile: 用于生成漁網(wǎng)網(wǎng)格的庫(kù)。geometric: 提供簡(jiǎn)單的幾何運(yùn)算功能,可替代部分turf的需求。@flatten-js/core: 用于處理復(fù)雜幾何圖形的幾何計(jì)算。
四、地圖庫(kù)擴(kuò)展
4.1、為 ol、mapboxgl、leaflet.js 擴(kuò)展繪圖工具 - terra-draw
terra-draw是一個(gè)支持OpenLayers、Leaflet.js、MapboxGL等地圖庫(kù)的插件,用于繪制功能的擴(kuò)展。它提供了繪制工具,使得在地圖上進(jìn)行標(biāo)注和編輯更加便捷。
4.2、為 leaflet.js 擴(kuò)展的繪圖工具
這是專門為L(zhǎng)eaflet.js開發(fā)的繪圖插件,功能強(qiáng)大,適用于大多數(shù)2D繪制需求。