well-known-parser
Version:
A WKT/WKB/EWKT/EWKB/TWKB/GeoJSON parser and serializer
75 lines (74 loc) • 2.27 kB
JavaScript
import { Polygon as a } from "./well-known-parser6.js";
import { Point as p } from "./well-known-parser4.js";
import { parseRelativePointTwkb as f, parsePointGeoJSON as R, parsePointWkb as d } from "./well-known-parser16.js";
function l(r, n) {
const o = new a();
if (o.srid = n.srid, o.hasZ = n.hasZ ?? !1, o.hasM = n.hasM ?? !1, r.isMatch(["EMPTY"]))
return o;
r.expectGroupStart(), r.expectGroupStart();
const i = r.matchCoordinates(n);
for (const e of i)
o.exteriorRing.push(e);
for (r.expectGroupEnd(); r.isMatch([","]); ) {
r.expectGroupStart();
const e = r.matchCoordinates(n), s = [];
for (const t of e)
s.push(t);
o.interiorRings.push(s), r.expectGroupEnd();
}
return r.expectGroupEnd(), o;
}
function y(r, n) {
const o = new a();
o.srid = n.srid, o.hasZ = n.hasZ ?? !1, o.hasM = n.hasM ?? !1;
const i = r.readUInt32(), e = {
...n,
srid: void 0
};
if (i > 0) {
const s = r.readUInt32();
for (let t = 0; t < s; t++)
o.exteriorRing.push(d(r, e));
for (let t = 1; t < i; t++) {
const c = [], g = r.readUInt32();
for (let h = 0; h < g; h++)
c.push(d(r, e));
o.interiorRings.push(c);
}
}
return o;
}
function C(r, n) {
const o = new a();
if (o.hasZ = n.hasZ ?? !1, o.hasM = n.hasM ?? !1, n.isEmpty)
return o;
const i = new p(0, 0, n.hasZ ? 0 : void 0, n.hasM ? 0 : void 0), e = r.readVarInt(), s = r.readVarInt();
for (let t = 0; t < s; t++)
o.exteriorRing.push(f(r, n, i));
for (let t = 1; t < e; t++) {
const c = [], g = r.readVarInt();
for (let h = 0; h < g; h++)
c.push(f(r, n, i));
o.interiorRings.push(c);
}
return o;
}
function M(r) {
const n = new a();
r.coordinates.length > 0 && r.coordinates[0].length > 0 && (n.hasZ = r.coordinates[0][0].length > 2);
for (let o = 0; o < r.coordinates.length; o++) {
o > 0 && n.interiorRings.push([]);
for (let i = 0; i < r.coordinates[o].length; i++) {
const e = R(r.coordinates[o][i]);
o === 0 ? n.exteriorRing.push(e) : n.interiorRings[o - 1].push(e);
}
}
return n;
}
export {
M as parsePolygonGeoJSON,
C as parsePolygonTwkb,
y as parsePolygonWkb,
l as parsePolygonWkt
};
//# sourceMappingURL=well-known-parser18.js.map