UNPKG

well-known-parser

Version:

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

3 lines (2 loc) 6.31 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./well-known-parser2.cjs"),E=require("./well-known-parser14.cjs"),y=require("./well-known-parser15.cjs"),k=require("./well-known-parser13.cjs"),l=require("./well-known-parser16.cjs"),p=require("./well-known-parser17.cjs"),T=require("./well-known-parser18.cjs"),u=require("./well-known-parser19.cjs"),g=require("./well-known-parser20.cjs"),P=require("./well-known-parser21.cjs"),M=require("./well-known-parser10.cjs");function O(t,s){if(typeof t=="string"||t instanceof y.WktParser)return m(t,s);if(Buffer.isBuffer(t)||t instanceof E.BinaryReader)return h(t,s);throw new Error("first argument must be a string or Buffer")}function m(t,s){let e,r;t instanceof y.WktParser?e=t:e=new y.WktParser(t);const o=e.matchRegex([/^SRID=(\d+);/]);o&&(r=parseInt(o[1],10));const i=e.matchType(),c=e.matchDimension(),a={...s||{},srid:r,hasZ:c.hasZ,hasM:c.hasM};switch(i){case n.GEOMETRY_TYPES.Point.wkt:return l.parsePointWkt(e,a);case n.GEOMETRY_TYPES.LineString.wkt:return p.parseLineStringWkt(e,a);case n.GEOMETRY_TYPES.Polygon.wkt:return T.parsePolygonWkt(e,a);case n.GEOMETRY_TYPES.MultiPoint.wkt:return u.parseMultiPointWkt(e,a);case n.GEOMETRY_TYPES.MultiLineString.wkt:return g.parseMultiLineStringWkt(e,a);case n.GEOMETRY_TYPES.MultiPolygon.wkt:return P.parseMultiPolygonWkt(e,a);case n.GEOMETRY_TYPES.GeometryCollection.wkt:return S(e,a);default:throw new Error(`GeometryType ${i} not supported`)}}function h(t,s){let e,r;const o={};t instanceof E.BinaryReader?e=t:e=new E.BinaryReader(t),e.isBigEndian=!e.readInt8();const i=e.readUInt32();switch(o.hasSrid=(i&536870912)===536870912,o.isEwkb=!!(i&536870912||i&1073741824||i&2147483648),o.hasSrid&&(o.srid=e.readUInt32()),o.hasZ=!1,o.hasM=!1,!o.isEwkb&&(!s||!s.isEwkb)?i>=1e3&&i<2e3?(o.hasZ=!0,r=i-1e3):i>=2e3&&i<3e3?(o.hasM=!0,r=i-2e3):i>=3e3&&i<4e3?(o.hasZ=!0,o.hasM=!0,r=i-3e3):r=i:(i&2147483648&&(o.hasZ=!0),i&1073741824&&(o.hasM=!0),r=i&15),r){case n.GEOMETRY_TYPES.Point.wkb:return l.parsePointWkb(e,o);case n.GEOMETRY_TYPES.LineString.wkb:return p.parseLineStringWkb(e,o);case n.GEOMETRY_TYPES.Polygon.wkb:return T.parsePolygonWkb(e,o);case n.GEOMETRY_TYPES.MultiPoint.wkb:return u.parseMultiPointWkb(e,o);case n.GEOMETRY_TYPES.MultiLineString.wkb:return g.parseMultiLineStringWkb(e,o);case n.GEOMETRY_TYPES.MultiPolygon.wkb:return P.parseMultiPolygonWkb(e,o);case n.GEOMETRY_TYPES.GeometryCollection.wkb:return d(e,o);default:throw new Error(`GeometryType ${r} not supported`)}}function Y(t,s){let e;const r={...s||{}};t instanceof E.BinaryReader?e=t:e=new E.BinaryReader(t);const o=e.readUInt8(),i=e.readUInt8(),c=o&15;if(r.precision=k.decode(o>>4),r.precisionFactor=Math.pow(10,r.precision),r.hasBoundingBox=!!(i>>0&1),r.hasSizeAttribute=!!(i>>1&1),r.hasIdList=!!(i>>2&1),r.hasExtendedPrecision=!!(i>>3&1),r.isEmpty=!!(i>>4&1),r.hasExtendedPrecision){const a=e.readUInt8();r.hasZ=(a&1)===1,r.hasM=(a&2)===2,r.zPrecision=k.decode((a&28)>>2),r.zPrecisionFactor=Math.pow(10,r.zPrecision),r.mPrecision=k.decode((a&224)>>5),r.mPrecisionFactor=Math.pow(10,r.mPrecision)}else r.hasZ=!1,r.hasM=!1;if(r.hasSizeAttribute&&e.readVarInt(),r.hasBoundingBox){let a=2;r.hasZ&&a++,r.hasM&&a++;for(let w=0;w<a;w++)e.readVarInt(),e.readVarInt()}switch(c){case n.GEOMETRY_TYPES.Point.wkb:return l.parsePointTwkb(e,r);case n.GEOMETRY_TYPES.LineString.wkb:return p.parseLineStringTwkb(e,r);case n.GEOMETRY_TYPES.Polygon.wkb:return T.parsePolygonTwkb(e,r);case n.GEOMETRY_TYPES.MultiPoint.wkb:return u.parseMultiPointTwkb(e,r);case n.GEOMETRY_TYPES.MultiLineString.wkb:return g.parseMultiLineStringTwkb(e,r);case n.GEOMETRY_TYPES.MultiPolygon.wkb:return P.parseMultiPolygonTwkb(e,r);case n.GEOMETRY_TYPES.GeometryCollection.wkb:return f(e,r);default:throw new Error(`GeometryType ${c} not supported`)}}function G(t,s=!1){let e;switch(t.type){case n.GEOMETRY_TYPES.Point.geoJSON:e=l.parsePointGeoJSON(t.coordinates);break;case n.GEOMETRY_TYPES.LineString.geoJSON:e=p.parseLineStringGeoJSON(t);break;case n.GEOMETRY_TYPES.Polygon.geoJSON:e=T.parsePolygonGeoJSON(t);break;case n.GEOMETRY_TYPES.MultiPoint.geoJSON:e=u.parseMultiPointGeoJSON(t);break;case n.GEOMETRY_TYPES.MultiLineString.geoJSON:e=g.parseMultiLineStringGeoJSON(t);break;case n.GEOMETRY_TYPES.MultiPolygon.geoJSON:e=P.parseMultiPolygonGeoJSON(t);break;case n.GEOMETRY_TYPES.GeometryCollection.geoJSON:e=b(t);break;default:throw new Error(`GeometryType ${t.type} not supported`)}return s||(e.srid=4326),e}function S(t,s){const e=new M.GeometryCollection;if(e.srid=s.srid,e.hasZ=s.hasZ??!1,e.hasM=s.hasM??!1,t.isMatch(["EMPTY"]))return e;t.expectGroupStart();do{const r=t.matchType(),o=t.matchDimension(),i={...s,srid:void 0,hasZ:o.hasZ,hasM:o.hasM};switch(r){case n.GEOMETRY_TYPES.Point.wkt:e.geometries.push(l.parsePointWkt(t,i));break;case n.GEOMETRY_TYPES.LineString.wkt:e.geometries.push(p.parseLineStringWkt(t,i));break;case n.GEOMETRY_TYPES.Polygon.wkt:e.geometries.push(T.parsePolygonWkt(t,i));break;case n.GEOMETRY_TYPES.MultiPoint.wkt:e.geometries.push(u.parseMultiPointWkt(t,i));break;case n.GEOMETRY_TYPES.MultiLineString.wkt:e.geometries.push(g.parseMultiLineStringWkt(t,i));break;case n.GEOMETRY_TYPES.MultiPolygon.wkt:e.geometries.push(P.parseMultiPolygonWkt(t,i));break;case n.GEOMETRY_TYPES.GeometryCollection.wkt:e.geometries.push(S(t,i));break;default:throw new Error(`GeometryType ${r} not supported`)}}while(t.isMatch([","]));return t.expectGroupEnd(),e}function d(t,s){const e=new M.GeometryCollection;e.srid=s.srid,e.hasZ=s.hasZ??!1,e.hasM=s.hasM??!1;const r=t.readUInt32();for(let o=0;o<r;o++)e.geometries.push(h(t,s));return e}function f(t,s){const e=new M.GeometryCollection;if(e.hasZ=s.hasZ??!1,e.hasM=s.hasM??!1,s.isEmpty)return e;const r=t.readVarInt();for(let o=0;o<r;o++)e.geometries.push(Y(t,s));return e}function b(t){const s=new M.GeometryCollection;for(let e=0;e<t.geometries.length;e++)s.geometries.push(G(t.geometries[e],!0));return s.geometries.length>0&&(s.hasZ=s.geometries[0].hasZ),s}exports.parse=O;exports.parseGeoJSON=G;exports.parseGeometryCollectionGeoJSON=b;exports.parseGeometryCollectionTwkb=f;exports.parseGeometryCollectionWkb=d;exports.parseGeometryCollectionWkt=S;exports.parseTwkb=Y;exports.parseWkb=h;exports.parseWkt=m; //# sourceMappingURL=well-known-parser11.cjs.map