UNPKG

flatgeobuf

Version:

A performant binary encoding for geographic data

2 lines 1.32 kB
import r from"ol/geom/LineString.js";import t from"ol/geom/MultiLineString.js";import e from"ol/geom/MultiPoint.js";import o from"ol/geom/MultiPolygon.js";import n from"ol/geom/Point.js";import l from"ol/geom/Polygon.js";import{GeometryType as i}from"../flat-geobuf/geometry-type.js";function m(r,t){let e=Array(r.length+t.length);for(let o=0,n=0,l=0;o<r.length;o+=2,n++)e[l++]=r[o],e[l++]=r[o+1],e[l++]=t[n];return e}export function createGeometry(g,y){let a;if(a=y===i.Unknown?g?.type():y,!g)return;let f=g.xyArray();if(f){let o=Array.from(f),y=g.zArray(),u=g.mArray(),s=g.endsArray(),p="XY",A=2;y&&u?(p="XYZM",o=function(r,t,e){let o=Array(r.length+t.length+e.length);for(let n=0,l=0,i=0;n<r.length;n+=2,l++)o[i++]=r[n],o[i++]=r[n+1],o[i++]=t[l],o[i++]=e[l];return o}(o,Array.from(y),Array.from(u)),A=4):y?(p="XYZ",o=m(o,Array.from(y)),A=3):u&&(p="XYM",o=m(o,Array.from(u)),A=3);let c=s?Array.from(s.map(r=>r*A)):[o.length];switch(a){case i.Point:return new n(o);case i.MultiPoint:return new e(o,p);case i.LineString:return new r(o,p);case i.MultiLineString:return new t(o,p,c);case i.Polygon:return new l(o,p,c)}}if(a===i.MultiPolygon){let r=g.partsLength(),t=Array(r);for(let e=0;e<r;e++)t[e]=createGeometry(g.parts(e),i.Polygon);return new o(t)}throw Error("Unknown type")} //# sourceMappingURL=geometry.js.map