WKT
1.WKT项目引入:
window.WKT = require('terraformer-wkt-parser')
const WKT = window.WKT
2.WKT转GeoJSON
parse用于把wkt转为geojson对象,convert方法用于把geojson的geometry转换为wkt字符串
1 var WKT = require('terraformer-wkt-parser'); 2 3 // parse 方法 可以转换POINT, MULTIPOINT, LINESTRING, MULTILINESTRING,POLYGON or MULTIPOLYGON 的WKT字符串 4 var geojson = WKT.parse('LINESTRING (30 10, 10 30, 40 40)'); 5 6 // convert 方法 可以转换GeoJSON的geometry对象,支持类型有Point, MultiPoint, LineString, MultiLineString, Polygon or MultiPolygon 7 var polygon = WKT.convert({ 8 "type": "Polygon", 9 "coordinates": [ 10 [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ], 11 [ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ] 12 ] 13 });
3.转换WKT数据
// 转换WKT数据 function locationPro(param) { window.WKT = require('terraformer-wkt-parser') //使用node引入WKT包 const WKT = window.WKT // POINT(6 10) // LINESTRING(3 4,10 50,20 25) // POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)) // MULTIPOINT(3.5 5.6, 4.8 10.5) // MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4)) // MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,9 2,9 4,6 3))) // const data = 'POINT(6 10)' // const data = 'POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))' const data = 'MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,9 2,9 4,6 3)))' const wktdata = WKT.parse(data) const resarr = [] const posarr = parsearr(wktdata.coordinates, resarr) const posarrCar3 = Cesium.Cartesian3.fromDegreesArray(posarr) } function parsearr(data, resarr) { //把多个数组装在一个数组里面 if (Array.isArray(data)) { data.forEach((el) => { parsearr(el, resarr) }) } else { resarr.push(data) } return resarr }
以下为WKT转化过程的打印结果,最后合并为一个数组是为了Cesium里的坐标传值方便:
Cesium.Cartesian3.fromDegreesArray(posarr)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构