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 2022-03-09 15:44  zhanlanzzz  阅读(530)  评论(0)    收藏  举报