UNPKG

flatgeobuf

Version:

A performant binary encoding for geographic data

2 lines 1.29 kB
import{readFileSync as e,writeFileSync as t}from"node:fs";import o from"flatbuffers";import r from"jsts/org/locationtech/jts/geom/Envelope.js";import i from"jsts/org/locationtech/jts/geom/GeometryFactory.js";import l from"jsts/org/locationtech/jts/io/GeoJSONWriter.js";import{magicbytes as s,SIZE_PREFIX_LEN as a}from"./constants.js";import{fromByteBuffer as f}from"./header-meta.js";import{calcTreeSize as n,generateLevelBounds as m}from"./packedrtree.js";let p=e("./test/data/tiger_roads.fgb"),u=new Uint8Array(p);if(!u.subarray(0,3).every((e,t)=>s[t]===e))throw Error("Not a FlatGeobuf file");let d=new o.ByteBuffer(u),g=d.readUint32(s.length);d.setPosition(s.length+a);let j=f(d);if(0===j.indexNodeSize)throw Error("No index found");let y=s.length+a+g,c=j.featuresCount,h=j.indexNodeSize;j.envelope,n(c,h);let b=m(c,h).reverse();for(let e of b);let w=[],E=0;for(let e of b){for(let t=e[0];t<e[1];t++){var v=E;let e=p.readDoubleLE(y+0),t=p.readDoubleLE(y+8),o=p.readDoubleLE(y+16),r=p.readDoubleLE(y+24);w.push([v,e,t,o,r]),y+=40}E++}let N=new l,D=new i;t("out.geojson",JSON.stringify({type:"FeatureCollection",features:w.map(e=>{let t=D.toGeometry(new r(e[1],e[3],e[2],e[4]));return{type:"Feature",geometry:N.write(t),properties:{level:e[0]}}})})); //# sourceMappingURL=dumptree.js.map