UNPKG

well-known-parser

Version:

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

1 lines 5.4 kB
{"version":3,"file":"well-known-parser10.cjs","sources":["../src/geometrycollection.ts"],"sourcesContent":["import { Geometry } from './geometry';\nimport type { GeometryOptions } from './types';\nimport { GEOMETRY_TYPES } from './constants';\nimport { BinaryWriter } from './binarywriter';\nimport type { GeometryCollection as GeoJSONGeometryCollection } from 'geojson';\n\nexport class GeometryCollection extends Geometry {\n geometries: Geometry[];\n\n constructor(geometries?: Geometry[], srid?: number) {\n super();\n\n this.geometries = geometries || [];\n this.srid = srid;\n\n if (this.geometries.length > 0) {\n this.hasZ = this.geometries[0].hasZ;\n this.hasM = this.geometries[0].hasM;\n }\n }\n\n static Z(geometries?: Geometry[], srid?: number): GeometryCollection {\n const geometryCollection = new GeometryCollection(geometries, srid);\n geometryCollection.hasZ = true;\n return geometryCollection;\n }\n\n static M(geometries?: Geometry[], srid?: number): GeometryCollection {\n const geometryCollection = new GeometryCollection(geometries, srid);\n geometryCollection.hasM = true;\n return geometryCollection;\n }\n\n static ZM(geometries?: Geometry[], srid?: number): GeometryCollection {\n const geometryCollection = new GeometryCollection(geometries, srid);\n geometryCollection.hasZ = true;\n geometryCollection.hasM = true;\n return geometryCollection;\n }\n\n toWkt(): string {\n if (this.geometries.length === 0) {\n return this.getWktType(GEOMETRY_TYPES.GeometryCollection.wkt, true);\n }\n\n let wkt = this.getWktType(GEOMETRY_TYPES.GeometryCollection.wkt, false) + '(';\n\n for (let i = 0; i < this.geometries.length; i++) {\n wkt += this.geometries[i].toWkt() + ',';\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.GeometryCollection.wkb, parentOptions);\n wkb.writeUInt32LE(this.geometries.length);\n\n for (let i = 0; i < this.geometries.length; i++) {\n const childOptions = { srid: this.srid };\n wkb.writeBuffer(this.geometries[i].toWkb(childOptions));\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.geometries.length === 0;\n\n this.writeTwkbHeader(twkb, GEOMETRY_TYPES.GeometryCollection.wkb, precision, isEmpty);\n\n if (this.geometries.length > 0) {\n twkb.writeVarInt(this.geometries.length);\n\n for (let i = 0; i < this.geometries.length; i++) {\n twkb.writeBuffer(this.geometries[i].toTwkb());\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.geometries.length; i++) {\n size += this.geometries[i].getWkbSize();\n }\n\n return size;\n }\n\n toGeoJSON(): GeoJSONGeometryCollection {\n const geometries: GeoJSONGeometryCollection['geometries'] = [];\n\n for (const geometry of this.geometries) {\n geometries.push(geometry.toGeoJSON());\n }\n\n return {\n type: GEOMETRY_TYPES.GeometryCollection.geoJSON,\n geometries,\n };\n }\n}\n"],"names":["GeometryCollection","Geometry","geometries","srid","geometryCollection","GEOMETRY_TYPES","wkt","i","parentOptions","wkb","BinaryWriter","childOptions","twkb","precision","isEmpty","size","geometry"],"mappings":"yMAMO,MAAMA,UAA2BC,EAAAA,QAAS,CAG/C,YAAYC,EAAyBC,EAAe,CAClD,MAAA,EAEA,KAAK,WAAaD,GAAc,CAAA,EAChC,KAAK,KAAOC,EAER,KAAK,WAAW,OAAS,IAC3B,KAAK,KAAO,KAAK,WAAW,CAAC,EAAE,KAC/B,KAAK,KAAO,KAAK,WAAW,CAAC,EAAE,KAEnC,CAEA,OAAO,EAAED,EAAyBC,EAAmC,CACnE,MAAMC,EAAqB,IAAIJ,EAAmBE,EAAYC,CAAI,EAClE,OAAAC,EAAmB,KAAO,GACnBA,CACT,CAEA,OAAO,EAAEF,EAAyBC,EAAmC,CACnE,MAAMC,EAAqB,IAAIJ,EAAmBE,EAAYC,CAAI,EAClE,OAAAC,EAAmB,KAAO,GACnBA,CACT,CAEA,OAAO,GAAGF,EAAyBC,EAAmC,CACpE,MAAMC,EAAqB,IAAIJ,EAAmBE,EAAYC,CAAI,EAClE,OAAAC,EAAmB,KAAO,GAC1BA,EAAmB,KAAO,GACnBA,CACT,CAEA,OAAgB,CACd,GAAI,KAAK,WAAW,SAAW,EAC7B,OAAO,KAAK,WAAWC,EAAAA,eAAe,mBAAmB,IAAK,EAAI,EAGpE,IAAIC,EAAM,KAAK,WAAWD,EAAAA,eAAe,mBAAmB,IAAK,EAAK,EAAI,IAE1E,QAASE,EAAI,EAAGA,EAAI,KAAK,WAAW,OAAQA,IAC1CD,GAAO,KAAK,WAAWC,CAAC,EAAE,QAAU,IAGtC,OAAAD,EAAMA,EAAI,MAAM,EAAG,EAAE,EACrBA,GAAO,IAEAA,CACT,CAEA,MAAME,EAAyC,CAC7C,MAAMC,EAAM,IAAIC,EAAAA,aAAa,KAAK,YAAY,EAE9CD,EAAI,UAAU,CAAC,EACf,KAAK,aAAaA,EAAKJ,EAAAA,eAAe,mBAAmB,IAAKG,CAAa,EAC3EC,EAAI,cAAc,KAAK,WAAW,MAAM,EAExC,QAASF,EAAI,EAAGA,EAAI,KAAK,WAAW,OAAQA,IAAK,CAC/C,MAAMI,EAAe,CAAE,KAAM,KAAK,IAAA,EAClCF,EAAI,YAAY,KAAK,WAAWF,CAAC,EAAE,MAAMI,CAAY,CAAC,CACxD,CAEA,OAAOF,EAAI,MACb,CAEA,QAAiB,CACf,MAAMG,EAAO,IAAIF,eAAa,EAAG,EAAI,EAE/BG,EAAYZ,EAAAA,SAAS,iBAAiB,EAAG,EAAG,CAAC,EAC7Ca,EAAU,KAAK,WAAW,SAAW,EAI3C,GAFA,KAAK,gBAAgBF,EAAMP,EAAAA,eAAe,mBAAmB,IAAKQ,EAAWC,CAAO,EAEhF,KAAK,WAAW,OAAS,EAAG,CAC9BF,EAAK,YAAY,KAAK,WAAW,MAAM,EAEvC,QAAS,EAAI,EAAG,EAAI,KAAK,WAAW,OAAQ,IAC1CA,EAAK,YAAY,KAAK,WAAW,CAAC,EAAE,QAAQ,CAEhD,CAEA,OAAOA,EAAK,MACd,CAEA,YAAqB,CACnB,IAAIG,EAAO,EAEX,QAASR,EAAI,EAAGA,EAAI,KAAK,WAAW,OAAQA,IAC1CQ,GAAQ,KAAK,WAAWR,CAAC,EAAE,WAAA,EAG7B,OAAOQ,CACT,CAEA,WAAuC,CACrC,MAAMb,EAAsD,CAAA,EAE5D,UAAWc,KAAY,KAAK,WAC1Bd,EAAW,KAAKc,EAAS,WAAW,EAGtC,MAAO,CACL,KAAMX,EAAAA,eAAe,mBAAmB,QACxC,WAAAH,CAAA,CAEJ,CACF"}