UNPKG

well-known-parser

Version:

A WKT/WKB/EWKT/EWKB/TWKB/GeoJSON parser and serializer

66 lines (65 loc) 2.1 kB
import { Geometry as s } from "./well-known-parser3.js"; import { GEOMETRY_TYPES as n } from "./well-known-parser2.js"; import { Point as l } from "./well-known-parser4.js"; import { BinaryWriter as o } from "./well-known-parser12.js"; class r extends s { constructor(t, i) { super(), this.lineStrings = t || [], this.srid = i, this.lineStrings.length > 0 && (this.hasZ = this.lineStrings[0].hasZ, this.hasM = this.lineStrings[0].hasM); } static Z(t, i) { const e = new r(t, i); return e.hasZ = !0, e; } static M(t, i) { const e = new r(t, i); return e.hasM = !0, e; } static ZM(t, i) { const e = new r(t, i); return e.hasZ = !0, e.hasM = !0, e; } toWkt() { if (this.lineStrings.length === 0) return this.getWktType(n.MultiLineString.wkt, !0); let t = this.getWktType(n.MultiLineString.wkt, !1) + "("; for (let i = 0; i < this.lineStrings.length; i++) t += this.lineStrings[i].toWkt(!0) + ","; return t = t.slice(0, -1), t += ")", t; } toWkb(t) { const i = new o(this.getWkbSize()); i.writeInt8(1), this.writeWkbType(i, n.MultiLineString.wkb, t), i.writeUInt32LE(this.lineStrings.length); for (const e of this.lineStrings) i.writeBuffer(e.toWkb({ srid: this.srid })); return i.buffer; } toTwkb() { const t = new o(0, !0), i = s.getTwkbPrecision(5, 0, 0), e = this.lineStrings.length === 0; if (this.writeTwkbHeader(t, n.MultiLineString.wkb, i, e), this.lineStrings.length > 0) { t.writeVarInt(this.lineStrings.length); const h = new l(0, 0, 0, 0); for (const g of this.lineStrings) t.writeBuffer(g.toTwkb(h, !0)); } return t.buffer; } getWkbSize() { let t = 9; for (let i = 0; i < this.lineStrings.length; i++) t += this.lineStrings[i].getWkbSize(); return t; } toGeoJSON() { const t = []; for (const i of this.lineStrings) t.push(i.toGeoJSON(!0)); return { type: n.MultiLineString.geoJSON, coordinates: t }; } } export { r as MultiLineString }; //# sourceMappingURL=well-known-parser8.js.map