UNPKG

well-known-parser

Version:

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

1 lines 5.1 kB
{"version":3,"file":"well-known-parser7.cjs","sources":["../src/multipoint.ts"],"sourcesContent":["import { Geometry } from './geometry';\nimport type { Coordinates, GeometryOptions } from './types';\nimport { GEOMETRY_TYPES } from './constants';\nimport { Point } from './point';\nimport { BinaryWriter } from './binarywriter';\nimport type { MultiPoint as GeoJSONMultiPoint } from 'geojson';\n\nexport class MultiPoint extends Geometry {\n points: Point[];\n\n constructor(points?: Point[], srid?: number) {\n super();\n\n this.points = points || [];\n this.srid = srid;\n\n if (this.points.length > 0) {\n this.hasZ = this.points[0].hasZ;\n this.hasM = this.points[0].hasM;\n }\n }\n\n static Z(points?: Point[], srid?: number): MultiPoint {\n const multiPoint = new MultiPoint(points, srid);\n multiPoint.hasZ = true;\n return multiPoint;\n }\n\n static M(points?: Point[], srid?: number): MultiPoint {\n const multiPoint = new MultiPoint(points, srid);\n multiPoint.hasM = true;\n return multiPoint;\n }\n\n static ZM(points?: Point[], srid?: number): MultiPoint {\n const multiPoint = new MultiPoint(points, srid);\n multiPoint.hasZ = true;\n multiPoint.hasM = true;\n return multiPoint;\n }\n\n toWkt(): string {\n if (this.points.length === 0) {\n return this.getWktType(GEOMETRY_TYPES.MultiPoint.wkt, true);\n }\n\n let wkt = this.getWktType(GEOMETRY_TYPES.MultiPoint.wkt, false) + '(';\n\n for (const point of this.points) {\n wkt += point.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.MultiPoint.wkb, parentOptions);\n wkb.writeUInt32LE(this.points.length);\n\n for (const point of this.points) {\n wkb.writeBuffer(point.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.points.length === 0;\n\n this.writeTwkbHeader(twkb, GEOMETRY_TYPES.MultiPoint.wkb, precision, isEmpty);\n\n if (this.points.length > 0) {\n twkb.writeVarInt(this.points.length);\n\n const previousPoint = new Point(0, 0, 0, 0);\n for (const p of this.points) {\n twkb.writeBuffer(p.toTwkb(previousPoint, true));\n }\n }\n\n return twkb.buffer;\n }\n\n getWkbSize(): number {\n let coordinateSize = 16;\n\n if (this.hasZ) {\n coordinateSize += 8;\n }\n if (this.hasM) {\n coordinateSize += 8;\n }\n\n coordinateSize += 5;\n\n return 1 + 4 + 4 + this.points.length * coordinateSize;\n }\n\n toGeoJSON(): GeoJSONMultiPoint {\n const coordinates: Coordinates<GeoJSONMultiPoint> = [];\n\n for (const point of this.points) {\n coordinates.push(point.toGeoJSON(true));\n }\n\n return {\n type: GEOMETRY_TYPES.MultiPoint.geoJSON,\n coordinates,\n };\n }\n}\n"],"names":["MultiPoint","Geometry","points","srid","multiPoint","GEOMETRY_TYPES","wkt","point","parentOptions","wkb","BinaryWriter","twkb","precision","isEmpty","previousPoint","Point","p","coordinateSize","coordinates"],"mappings":"+OAOO,MAAMA,UAAmBC,EAAAA,QAAS,CAGvC,YAAYC,EAAkBC,EAAe,CAC3C,MAAA,EAEA,KAAK,OAASD,GAAU,CAAA,EACxB,KAAK,KAAOC,EAER,KAAK,OAAO,OAAS,IACvB,KAAK,KAAO,KAAK,OAAO,CAAC,EAAE,KAC3B,KAAK,KAAO,KAAK,OAAO,CAAC,EAAE,KAE/B,CAEA,OAAO,EAAED,EAAkBC,EAA2B,CACpD,MAAMC,EAAa,IAAIJ,EAAWE,EAAQC,CAAI,EAC9C,OAAAC,EAAW,KAAO,GACXA,CACT,CAEA,OAAO,EAAEF,EAAkBC,EAA2B,CACpD,MAAMC,EAAa,IAAIJ,EAAWE,EAAQC,CAAI,EAC9C,OAAAC,EAAW,KAAO,GACXA,CACT,CAEA,OAAO,GAAGF,EAAkBC,EAA2B,CACrD,MAAMC,EAAa,IAAIJ,EAAWE,EAAQC,CAAI,EAC9C,OAAAC,EAAW,KAAO,GAClBA,EAAW,KAAO,GACXA,CACT,CAEA,OAAgB,CACd,GAAI,KAAK,OAAO,SAAW,EACzB,OAAO,KAAK,WAAWC,EAAAA,eAAe,WAAW,IAAK,EAAI,EAG5D,IAAIC,EAAM,KAAK,WAAWD,EAAAA,eAAe,WAAW,IAAK,EAAK,EAAI,IAElE,UAAWE,KAAS,KAAK,OACvBD,GAAOC,EAAM,MAAM,EAAI,EAAI,IAG7B,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,WAAW,IAAKG,CAAa,EACnEC,EAAI,cAAc,KAAK,OAAO,MAAM,EAEpC,UAAWF,KAAS,KAAK,OACvBE,EAAI,YAAYF,EAAM,MAAM,CAAE,KAAM,KAAK,IAAA,CAAM,CAAC,EAGlD,OAAOE,EAAI,MACb,CAEA,QAAiB,CACf,MAAME,EAAO,IAAID,eAAa,EAAG,EAAI,EAE/BE,EAAYX,EAAAA,SAAS,iBAAiB,EAAG,EAAG,CAAC,EAC7CY,EAAU,KAAK,OAAO,SAAW,EAIvC,GAFA,KAAK,gBAAgBF,EAAMN,EAAAA,eAAe,WAAW,IAAKO,EAAWC,CAAO,EAExE,KAAK,OAAO,OAAS,EAAG,CAC1BF,EAAK,YAAY,KAAK,OAAO,MAAM,EAEnC,MAAMG,EAAgB,IAAIC,EAAAA,MAAM,EAAG,EAAG,EAAG,CAAC,EAC1C,UAAWC,KAAK,KAAK,OACnBL,EAAK,YAAYK,EAAE,OAAOF,EAAe,EAAI,CAAC,CAElD,CAEA,OAAOH,EAAK,MACd,CAEA,YAAqB,CACnB,IAAIM,EAAiB,GAErB,OAAI,KAAK,OACPA,GAAkB,GAEhB,KAAK,OACPA,GAAkB,GAGpBA,GAAkB,EAEX,EAAY,KAAK,OAAO,OAASA,CAC1C,CAEA,WAA+B,CAC7B,MAAMC,EAA8C,CAAA,EAEpD,UAAWX,KAAS,KAAK,OACvBW,EAAY,KAAKX,EAAM,UAAU,EAAI,CAAC,EAGxC,MAAO,CACL,KAAMF,EAAAA,eAAe,WAAW,QAChC,YAAAa,CAAA,CAEJ,CACF"}