SegmentStringUtil.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import StringBuffer from '../../../../java/lang/StringBuffer'
  2. import hasInterface from '../../../../hasInterface'
  3. import NodedSegmentString from './NodedSegmentString'
  4. import ArrayList from '../../../../java/util/ArrayList'
  5. import LinearComponentExtracter from '../geom/util/LinearComponentExtracter'
  6. import List from '../../../../java/util/List'
  7. export default class SegmentStringUtil {
  8. static toGeometry(segStrings, geomFact) {
  9. const lines = new Array(segStrings.size()).fill(null)
  10. let index = 0
  11. for (let i = segStrings.iterator(); i.hasNext(); ) {
  12. const ss = i.next()
  13. const line = geomFact.createLineString(ss.getCoordinates())
  14. lines[index++] = line
  15. }
  16. if (lines.length === 1) return lines[0]
  17. return geomFact.createMultiLineString(lines)
  18. }
  19. static extractNodedSegmentStrings(geom) {
  20. const segStr = new ArrayList()
  21. const lines = LinearComponentExtracter.getLines(geom)
  22. for (let i = lines.iterator(); i.hasNext(); ) {
  23. const line = i.next()
  24. const pts = line.getCoordinates()
  25. segStr.add(new NodedSegmentString(pts, geom))
  26. }
  27. return segStr
  28. }
  29. static extractSegmentStrings(geom) {
  30. return SegmentStringUtil.extractNodedSegmentStrings(geom)
  31. }
  32. static toString() {
  33. if (arguments.length === 1 && hasInterface(arguments[0], List)) {
  34. const segStrings = arguments[0]
  35. const buf = new StringBuffer()
  36. for (let i = segStrings.iterator(); i.hasNext(); ) {
  37. const segStr = i.next()
  38. buf.append(segStr.toString())
  39. buf.append('\n')
  40. }
  41. return buf.toString()
  42. }
  43. }
  44. }