随笔 - 24  文章 - 0  评论 - 0  阅读 - 8478

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)

 

 

 

posted on   zhanlanzzz  阅读(484)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示