well-known-parser
Version:
A WKT/WKB/EWKT/EWKB/TWKB/GeoJSON parser and serializer
66 lines (65 loc) • 2.1 kB
JavaScript
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