node-red-contrib-tak-registration
Version:
A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK
45 lines (44 loc) • 1.6 kB
JavaScript
import StringBuffer from '../../../../java/lang/StringBuffer'
import hasInterface from '../../../../hasInterface'
import NodedSegmentString from './NodedSegmentString'
import ArrayList from '../../../../java/util/ArrayList'
import LinearComponentExtracter from '../geom/util/LinearComponentExtracter'
import List from '../../../../java/util/List'
export default class SegmentStringUtil {
static toGeometry(segStrings, geomFact) {
const lines = new Array(segStrings.size()).fill(null)
let index = 0
for (let i = segStrings.iterator(); i.hasNext(); ) {
const ss = i.next()
const line = geomFact.createLineString(ss.getCoordinates())
lines[index++] = line
}
if (lines.length === 1) return lines[0]
return geomFact.createMultiLineString(lines)
}
static extractNodedSegmentStrings(geom) {
const segStr = new ArrayList()
const lines = LinearComponentExtracter.getLines(geom)
for (let i = lines.iterator(); i.hasNext(); ) {
const line = i.next()
const pts = line.getCoordinates()
segStr.add(new NodedSegmentString(pts, geom))
}
return segStr
}
static extractSegmentStrings(geom) {
return SegmentStringUtil.extractNodedSegmentStrings(geom)
}
static toString() {
if (arguments.length === 1 && hasInterface(arguments[0], List)) {
const segStrings = arguments[0]
const buf = new StringBuffer()
for (let i = segStrings.iterator(); i.hasNext(); ) {
const segStr = i.next()
buf.append(segStr.toString())
buf.append('\n')
}
return buf.toString()
}
}
}