well-known-parser
Version:
A WKT/WKB/EWKT/EWKB/TWKB/GeoJSON parser and serializer
1 lines • 5.46 kB
Source Map (JSON)
{"version":3,"file":"well-known-parser8.cjs","sources":["../src/multilinestring.ts"],"sourcesContent":["import { Geometry } from './geometry';\nimport type { Coordinates, GeometryOptions } from './types';\nimport { GEOMETRY_TYPES } from './constants';\nimport { Point } from './point';\nimport type { LineString } from './linestring';\nimport { BinaryWriter } from './binarywriter';\nimport type { MultiLineString as GeoJSONMultiLineString } from 'geojson';\n\nexport class MultiLineString extends Geometry {\n lineStrings: LineString[];\n\n constructor(lineStrings?: LineString[], srid?: number) {\n super();\n\n this.lineStrings = lineStrings || [];\n this.srid = srid;\n\n if (this.lineStrings.length > 0) {\n this.hasZ = this.lineStrings[0].hasZ;\n this.hasM = this.lineStrings[0].hasM;\n }\n }\n\n static Z(lineStrings?: LineString[], srid?: number): MultiLineString {\n const multiLineString = new MultiLineString(lineStrings, srid);\n multiLineString.hasZ = true;\n return multiLineString;\n }\n\n static M(lineStrings?: LineString[], srid?: number): MultiLineString {\n const multiLineString = new MultiLineString(lineStrings, srid);\n multiLineString.hasM = true;\n return multiLineString;\n }\n\n static ZM(lineStrings?: LineString[], srid?: number): MultiLineString {\n const multiLineString = new MultiLineString(lineStrings, srid);\n multiLineString.hasZ = true;\n multiLineString.hasM = true;\n return multiLineString;\n }\n\n toWkt(): string {\n if (this.lineStrings.length === 0) {\n return this.getWktType(GEOMETRY_TYPES.MultiLineString.wkt, true);\n }\n\n let wkt = this.getWktType(GEOMETRY_TYPES.MultiLineString.wkt, false) + '(';\n\n for (let i = 0; i < this.lineStrings.length; i++) {\n wkt += this.lineStrings[i].toWkt(true) + ',';\n }\n\n wkt = wkt.slice(0, -1);\n wkt += ')';\n\n return wkt;\n }\n\n toWkb(parentOptions?: GeometryOptions): Buffer {\n const wkb = new BinaryWriter(this.getWkbSize());\n\n wkb.writeInt8(1);\n this.writeWkbType(wkb, GEOMETRY_TYPES.MultiLineString.wkb, parentOptions);\n wkb.writeUInt32LE(this.lineStrings.length);\n\n for (const lineString of this.lineStrings) {\n wkb.writeBuffer(lineString.toWkb({ srid: this.srid }));\n }\n\n return wkb.buffer;\n }\n\n toTwkb(): Buffer {\n const twkb = new BinaryWriter(0, true);\n\n const precision = Geometry.getTwkbPrecision(5, 0, 0);\n const isEmpty = this.lineStrings.length === 0;\n\n this.writeTwkbHeader(twkb, GEOMETRY_TYPES.MultiLineString.wkb, precision, isEmpty);\n\n if (this.lineStrings.length > 0) {\n twkb.writeVarInt(this.lineStrings.length);\n\n const previousPoint = new Point(0, 0, 0, 0);\n for (const lineString of this.lineStrings) {\n twkb.writeBuffer(lineString.toTwkb(previousPoint, true));\n }\n }\n\n return twkb.buffer;\n }\n\n getWkbSize(): number {\n let size = 1 + 4 + 4;\n\n for (let i = 0; i < this.lineStrings.length; i++) {\n size += this.lineStrings[i].getWkbSize();\n }\n\n return size;\n }\n\n toGeoJSON(): GeoJSONMultiLineString {\n const coordinates: Coordinates<GeoJSONMultiLineString> = [];\n\n for (const lineString of this.lineStrings) {\n coordinates.push(lineString.toGeoJSON(true));\n }\n\n return {\n type: GEOMETRY_TYPES.MultiLineString.geoJSON,\n coordinates,\n };\n }\n}\n"],"names":["MultiLineString","Geometry","lineStrings","srid","multiLineString","GEOMETRY_TYPES","wkt","parentOptions","wkb","BinaryWriter","lineString","twkb","precision","isEmpty","previousPoint","Point","size","coordinates"],"mappings":"+OAQO,MAAMA,UAAwBC,EAAAA,QAAS,CAG5C,YAAYC,EAA4BC,EAAe,CACrD,MAAA,EAEA,KAAK,YAAcD,GAAe,CAAA,EAClC,KAAK,KAAOC,EAER,KAAK,YAAY,OAAS,IAC5B,KAAK,KAAO,KAAK,YAAY,CAAC,EAAE,KAChC,KAAK,KAAO,KAAK,YAAY,CAAC,EAAE,KAEpC,CAEA,OAAO,EAAED,EAA4BC,EAAgC,CACnE,MAAMC,EAAkB,IAAIJ,EAAgBE,EAAaC,CAAI,EAC7D,OAAAC,EAAgB,KAAO,GAChBA,CACT,CAEA,OAAO,EAAEF,EAA4BC,EAAgC,CACnE,MAAMC,EAAkB,IAAIJ,EAAgBE,EAAaC,CAAI,EAC7D,OAAAC,EAAgB,KAAO,GAChBA,CACT,CAEA,OAAO,GAAGF,EAA4BC,EAAgC,CACpE,MAAMC,EAAkB,IAAIJ,EAAgBE,EAAaC,CAAI,EAC7D,OAAAC,EAAgB,KAAO,GACvBA,EAAgB,KAAO,GAChBA,CACT,CAEA,OAAgB,CACd,GAAI,KAAK,YAAY,SAAW,EAC9B,OAAO,KAAK,WAAWC,EAAAA,eAAe,gBAAgB,IAAK,EAAI,EAGjE,IAAIC,EAAM,KAAK,WAAWD,EAAAA,eAAe,gBAAgB,IAAK,EAAK,EAAI,IAEvE,QAAS,EAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,IAC3CC,GAAO,KAAK,YAAY,CAAC,EAAE,MAAM,EAAI,EAAI,IAG3C,OAAAA,EAAMA,EAAI,MAAM,EAAG,EAAE,EACrBA,GAAO,IAEAA,CACT,CAEA,MAAMC,EAAyC,CAC7C,MAAMC,EAAM,IAAIC,EAAAA,aAAa,KAAK,YAAY,EAE9CD,EAAI,UAAU,CAAC,EACf,KAAK,aAAaA,EAAKH,EAAAA,eAAe,gBAAgB,IAAKE,CAAa,EACxEC,EAAI,cAAc,KAAK,YAAY,MAAM,EAEzC,UAAWE,KAAc,KAAK,YAC5BF,EAAI,YAAYE,EAAW,MAAM,CAAE,KAAM,KAAK,IAAA,CAAM,CAAC,EAGvD,OAAOF,EAAI,MACb,CAEA,QAAiB,CACf,MAAMG,EAAO,IAAIF,eAAa,EAAG,EAAI,EAE/BG,EAAYX,EAAAA,SAAS,iBAAiB,EAAG,EAAG,CAAC,EAC7CY,EAAU,KAAK,YAAY,SAAW,EAI5C,GAFA,KAAK,gBAAgBF,EAAMN,EAAAA,eAAe,gBAAgB,IAAKO,EAAWC,CAAO,EAE7E,KAAK,YAAY,OAAS,EAAG,CAC/BF,EAAK,YAAY,KAAK,YAAY,MAAM,EAExC,MAAMG,EAAgB,IAAIC,EAAAA,MAAM,EAAG,EAAG,EAAG,CAAC,EAC1C,UAAWL,KAAc,KAAK,YAC5BC,EAAK,YAAYD,EAAW,OAAOI,EAAe,EAAI,CAAC,CAE3D,CAEA,OAAOH,EAAK,MACd,CAEA,YAAqB,CACnB,IAAIK,EAAO,EAEX,QAAS,EAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,IAC3CA,GAAQ,KAAK,YAAY,CAAC,EAAE,WAAA,EAG9B,OAAOA,CACT,CAEA,WAAoC,CAClC,MAAMC,EAAmD,CAAA,EAEzD,UAAWP,KAAc,KAAK,YAC5BO,EAAY,KAAKP,EAAW,UAAU,EAAI,CAAC,EAG7C,MAAO,CACL,KAAML,EAAAA,eAAe,gBAAgB,QACrC,YAAAY,CAAA,CAEJ,CACF"}