well-known-parser
Version:
A WKT/WKB/EWKT/EWKB/TWKB/GeoJSON parser and serializer
1 lines • 4 kB
Source Map (JSON)
{"version":3,"file":"well-known-parser19.cjs","sources":["../src/parsers/multipoint.ts"],"sourcesContent":["import type { BinaryReader } from '../binaryreader';\nimport type { WktParser } from '../wktparser';\nimport type { GeometryOptions } from '../types';\nimport { MultiPoint } from '../multipoint';\nimport { Point } from '../point';\nimport { parsePointGeoJSON, parseRelativePointTwkb } from './point';\nimport { parseWkb } from './index';\nimport type { MultiPoint as GeoJSONMultiPoint } from 'geojson';\n\nexport function parseMultiPointWkt(value: WktParser, options: GeometryOptions): MultiPoint {\n const multiPoint = new MultiPoint();\n multiPoint.srid = options.srid;\n multiPoint.hasZ = options.hasZ ?? false;\n multiPoint.hasM = options.hasM ?? false;\n\n if (value.isMatch(['EMPTY'])) {\n return multiPoint;\n }\n\n value.expectGroupStart();\n const coordinates = value.matchCoordinates(options);\n for (const coord of coordinates) {\n multiPoint.points.push(coord);\n }\n value.expectGroupEnd();\n\n return multiPoint;\n}\n\nexport function parseMultiPointWkb(value: BinaryReader, options: GeometryOptions): MultiPoint {\n const multiPoint = new MultiPoint();\n multiPoint.srid = options.srid;\n multiPoint.hasZ = options.hasZ ?? false;\n multiPoint.hasM = options.hasM ?? false;\n\n const pointCount = value.readUInt32();\n\n for (let i = 0; i < pointCount; i++) {\n // This can only return a Point, but we need to call parseWkb in order to make sure wkb headers are read\n multiPoint.points.push(parseWkb(value, options) as Point);\n }\n\n return multiPoint;\n}\n\nexport function parseMultiPointTwkb(value: BinaryReader, options: GeometryOptions): MultiPoint {\n const multiPoint = new MultiPoint();\n multiPoint.hasZ = options.hasZ ?? false;\n multiPoint.hasM = options.hasM ?? false;\n\n if (options.isEmpty) {\n return multiPoint;\n }\n\n const previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);\n\n const pointCount = value.readVarInt();\n\n for (let i = 0; i < pointCount; i++) {\n multiPoint.points.push(parseRelativePointTwkb(value, options, previousPoint));\n }\n\n return multiPoint;\n}\n\nexport function parseMultiPointGeoJSON(value: Pick<GeoJSONMultiPoint, 'coordinates'>): MultiPoint {\n const multiPoint = new MultiPoint();\n\n if (value.coordinates.length > 0) {\n multiPoint.hasZ = value.coordinates[0].length > 2;\n }\n\n for (const point of value.coordinates) {\n multiPoint.points.push(parsePointGeoJSON(point));\n }\n\n return multiPoint;\n}\n"],"names":["parseMultiPointWkt","value","options","multiPoint","MultiPoint","coordinates","coord","parseMultiPointWkb","pointCount","i","parseWkb","parseMultiPointTwkb","previousPoint","Point","parseRelativePointTwkb","parseMultiPointGeoJSON","point","parsePointGeoJSON"],"mappings":"gPASO,SAASA,EAAmBC,EAAkBC,EAAsC,CACzF,MAAMC,EAAa,IAAIC,aAKvB,GAJAD,EAAW,KAAOD,EAAQ,KAC1BC,EAAW,KAAOD,EAAQ,MAAQ,GAClCC,EAAW,KAAOD,EAAQ,MAAQ,GAE9BD,EAAM,QAAQ,CAAC,OAAO,CAAC,EACzB,OAAOE,EAGTF,EAAM,iBAAA,EACN,MAAMI,EAAcJ,EAAM,iBAAiBC,CAAO,EAClD,UAAWI,KAASD,EAClBF,EAAW,OAAO,KAAKG,CAAK,EAE9B,OAAAL,EAAM,eAAA,EAECE,CACT,CAEO,SAASI,EAAmBN,EAAqBC,EAAsC,CAC5F,MAAMC,EAAa,IAAIC,aACvBD,EAAW,KAAOD,EAAQ,KAC1BC,EAAW,KAAOD,EAAQ,MAAQ,GAClCC,EAAW,KAAOD,EAAQ,MAAQ,GAElC,MAAMM,EAAaP,EAAM,WAAA,EAEzB,QAASQ,EAAI,EAAGA,EAAID,EAAYC,IAE9BN,EAAW,OAAO,KAAKO,EAAAA,SAAST,EAAOC,CAAO,CAAU,EAG1D,OAAOC,CACT,CAEO,SAASQ,EAAoBV,EAAqBC,EAAsC,CAC7F,MAAMC,EAAa,IAAIC,aAIvB,GAHAD,EAAW,KAAOD,EAAQ,MAAQ,GAClCC,EAAW,KAAOD,EAAQ,MAAQ,GAE9BA,EAAQ,QACV,OAAOC,EAGT,MAAMS,EAAgB,IAAIC,EAAAA,MAAM,EAAG,EAAGX,EAAQ,KAAO,EAAI,OAAWA,EAAQ,KAAO,EAAI,MAAS,EAE1FM,EAAaP,EAAM,WAAA,EAEzB,QAASQ,EAAI,EAAGA,EAAID,EAAYC,IAC9BN,EAAW,OAAO,KAAKW,EAAAA,uBAAuBb,EAAOC,EAASU,CAAa,CAAC,EAG9E,OAAOT,CACT,CAEO,SAASY,EAAuBd,EAA2D,CAChG,MAAME,EAAa,IAAIC,aAEnBH,EAAM,YAAY,OAAS,IAC7BE,EAAW,KAAOF,EAAM,YAAY,CAAC,EAAE,OAAS,GAGlD,UAAWe,KAASf,EAAM,YACxBE,EAAW,OAAO,KAAKc,EAAAA,kBAAkBD,CAAK,CAAC,EAGjD,OAAOb,CACT"}