GeometryExtracter.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import Geometry from '../Geometry'
  2. import GeometryCollection from '../GeometryCollection'
  3. import ArrayList from '../../../../../java/util/ArrayList'
  4. import GeometryFilter from '../GeometryFilter'
  5. export default class GeometryExtracter {
  6. constructor() {
  7. GeometryExtracter.constructor_.apply(this, arguments)
  8. }
  9. static constructor_() {
  10. this._geometryType = null
  11. this._comps = null
  12. const geometryType = arguments[0], comps = arguments[1]
  13. this._geometryType = geometryType
  14. this._comps = comps
  15. }
  16. static isOfType(geom, geometryType) {
  17. if (geom.getGeometryType() === geometryType) return true
  18. if (geometryType === Geometry.TYPENAME_LINESTRING && geom.getGeometryType() === Geometry.TYPENAME_LINEARRING) return true
  19. return false
  20. }
  21. static extract() {
  22. if (arguments.length === 2) {
  23. const geom = arguments[0], geometryType = arguments[1]
  24. return GeometryExtracter.extract(geom, geometryType, new ArrayList())
  25. } else if (arguments.length === 3) {
  26. const geom = arguments[0], geometryType = arguments[1], list = arguments[2]
  27. if (geom.getGeometryType() === geometryType)
  28. list.add(geom)
  29. else if (geom instanceof GeometryCollection)
  30. geom.apply(new GeometryExtracter(geometryType, list))
  31. return list
  32. }
  33. }
  34. filter(geom) {
  35. if (this._geometryType === null || GeometryExtracter.isOfType(geom, this._geometryType)) this._comps.add(geom)
  36. }
  37. get interfaces_() {
  38. return [GeometryFilter]
  39. }
  40. }