@osmix/core 0.0.2 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/README.md +118 -107
- package/dist/core/src/entities.d.ts +114 -0
- package/dist/core/src/entities.d.ts.map +1 -0
- package/dist/core/src/entities.js +152 -0
- package/dist/core/src/entities.js.map +1 -0
- package/dist/core/src/ids.d.ts +113 -0
- package/dist/core/src/ids.d.ts.map +1 -0
- package/dist/{src → core/src}/ids.js +96 -31
- package/dist/core/src/ids.js.map +1 -0
- package/dist/core/src/index.d.ts +32 -0
- package/dist/core/src/index.d.ts.map +1 -0
- package/dist/core/src/index.js +35 -0
- package/dist/core/src/index.js.map +1 -0
- package/dist/core/src/nodes.d.ts +101 -0
- package/dist/core/src/nodes.d.ts.map +1 -0
- package/dist/core/src/nodes.js +309 -0
- package/dist/core/src/nodes.js.map +1 -0
- package/dist/core/src/osm.d.ts +74 -0
- package/dist/core/src/osm.d.ts.map +1 -0
- package/dist/core/src/osm.js +120 -0
- package/dist/core/src/osm.js.map +1 -0
- package/dist/core/src/relations.d.ts +118 -0
- package/dist/core/src/relations.d.ts.map +1 -0
- package/dist/core/src/relations.js +412 -0
- package/dist/core/src/relations.js.map +1 -0
- package/dist/core/src/stringtable.d.ts +95 -0
- package/dist/core/src/stringtable.d.ts.map +1 -0
- package/dist/core/src/stringtable.js +170 -0
- package/dist/core/src/stringtable.js.map +1 -0
- package/dist/core/src/tags.d.ts +126 -0
- package/dist/core/src/tags.d.ts.map +1 -0
- package/dist/core/src/tags.js +228 -0
- package/dist/core/src/tags.js.map +1 -0
- package/dist/core/src/typed-arrays.d.ts +124 -0
- package/dist/core/src/typed-arrays.d.ts.map +1 -0
- package/dist/{src → core/src}/typed-arrays.js +88 -9
- package/dist/core/src/typed-arrays.js.map +1 -0
- package/dist/core/src/utils.d.ts +11 -0
- package/dist/core/src/utils.d.ts.map +1 -0
- package/dist/{src → core/src}/utils.js +8 -10
- package/dist/core/src/utils.js.map +1 -0
- package/dist/core/src/ways.d.ts +101 -0
- package/dist/core/src/ways.d.ts.map +1 -0
- package/dist/core/src/ways.js +336 -0
- package/dist/core/src/ways.js.map +1 -0
- package/dist/core/test/memory.test.d.ts +7 -0
- package/dist/core/test/memory.test.d.ts.map +1 -0
- package/dist/core/test/memory.test.js +29 -0
- package/dist/core/test/memory.test.js.map +1 -0
- package/dist/{test → core/test}/mock-osm.d.ts +3 -3
- package/dist/core/test/mock-osm.d.ts.map +1 -0
- package/dist/{test → core/test}/mock-osm.js +3 -3
- package/dist/core/test/mock-osm.js.map +1 -0
- package/dist/core/test/tags-search.test.d.ts +2 -0
- package/dist/core/test/tags-search.test.d.ts.map +1 -0
- package/dist/core/test/tags-search.test.js +56 -0
- package/dist/core/test/tags-search.test.js.map +1 -0
- package/dist/core/test/typed-arrays.test.d.ts.map +1 -0
- package/dist/{test → core/test}/typed-arrays.test.js +19 -17
- package/dist/core/test/typed-arrays.test.js.map +1 -0
- package/dist/osmix/src/extract.d.ts +43 -0
- package/dist/osmix/src/extract.d.ts.map +1 -0
- package/dist/osmix/src/extract.js +156 -0
- package/dist/osmix/src/extract.js.map +1 -0
- package/dist/osmix/src/pbf.d.ts +55 -0
- package/dist/osmix/src/pbf.d.ts.map +1 -0
- package/dist/osmix/src/pbf.js +187 -0
- package/dist/osmix/src/pbf.js.map +1 -0
- package/dist/osmix/src/utils.d.ts +36 -0
- package/dist/osmix/src/utils.d.ts.map +1 -0
- package/dist/osmix/src/utils.js +108 -0
- package/dist/osmix/src/utils.js.map +1 -0
- package/dist/osmix/test/extract.bench.d.ts.map +1 -0
- package/dist/{test → osmix/test}/extract.bench.js +8 -5
- package/dist/osmix/test/extract.bench.js.map +1 -0
- package/dist/osmix/test/extract.test.d.ts.map +1 -0
- package/dist/osmix/test/extract.test.js +392 -0
- package/dist/osmix/test/extract.test.js.map +1 -0
- package/package.json +10 -12
- package/src/entities.ts +138 -22
- package/src/ids.ts +117 -45
- package/src/index.ts +34 -5
- package/src/nodes.ts +237 -58
- package/src/osm.ts +174 -0
- package/src/relations.ts +383 -54
- package/src/stringtable.ts +111 -36
- package/src/tags.ts +207 -46
- package/src/typed-arrays.ts +97 -10
- package/src/types/geoflatbush.d.ts +37 -0
- package/src/types/geokdbush.d.ts +37 -0
- package/src/types/kdbush.d.ts +24 -6
- package/src/utils.ts +9 -14
- package/src/ways.ts +248 -84
- package/test/memory.test.ts +38 -0
- package/test/mock-osm.ts +8 -8
- package/test/tags-search.test.ts +60 -0
- package/test/typed-arrays.test.ts +5 -6
- package/tsconfig.json +7 -1
- package/dist/src/entities.d.ts +0 -26
- package/dist/src/entities.d.ts.map +0 -1
- package/dist/src/entities.js +0 -69
- package/dist/src/entities.js.map +0 -1
- package/dist/src/ids.d.ts +0 -50
- package/dist/src/ids.d.ts.map +0 -1
- package/dist/src/ids.js.map +0 -1
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -7
- package/dist/src/index.js.map +0 -1
- package/dist/src/nodes.d.ts +0 -36
- package/dist/src/nodes.d.ts.map +0 -1
- package/dist/src/nodes.js +0 -171
- package/dist/src/nodes.js.map +0 -1
- package/dist/src/osmix.d.ts +0 -88
- package/dist/src/osmix.d.ts.map +0 -1
- package/dist/src/osmix.js +0 -438
- package/dist/src/osmix.js.map +0 -1
- package/dist/src/relations.d.ts +0 -31
- package/dist/src/relations.d.ts.map +0 -1
- package/dist/src/relations.js +0 -161
- package/dist/src/relations.js.map +0 -1
- package/dist/src/stringtable.d.ts +0 -37
- package/dist/src/stringtable.d.ts.map +0 -1
- package/dist/src/stringtable.js +0 -101
- package/dist/src/stringtable.js.map +0 -1
- package/dist/src/tags.d.ts +0 -33
- package/dist/src/tags.d.ts.map +0 -1
- package/dist/src/tags.js +0 -92
- package/dist/src/tags.js.map +0 -1
- package/dist/src/typed-arrays.d.ts +0 -50
- package/dist/src/typed-arrays.d.ts.map +0 -1
- package/dist/src/typed-arrays.js.map +0 -1
- package/dist/src/utils.d.ts +0 -4
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js.map +0 -1
- package/dist/src/ways.d.ts +0 -42
- package/dist/src/ways.d.ts.map +0 -1
- package/dist/src/ways.js +0 -186
- package/dist/src/ways.js.map +0 -1
- package/dist/test/extract.bench.d.ts.map +0 -1
- package/dist/test/extract.bench.js.map +0 -1
- package/dist/test/extract.test.d.ts.map +0 -1
- package/dist/test/extract.test.js +0 -127
- package/dist/test/extract.test.js.map +0 -1
- package/dist/test/mock-osm.d.ts.map +0 -1
- package/dist/test/mock-osm.js.map +0 -1
- package/dist/test/read.test.d.ts +0 -2
- package/dist/test/read.test.d.ts.map +0 -1
- package/dist/test/read.test.js +0 -17
- package/dist/test/read.test.js.map +0 -1
- package/dist/test/typed-arrays.test.d.ts.map +0 -1
- package/dist/test/typed-arrays.test.js.map +0 -1
- package/dist/test/write.test.d.ts +0 -2
- package/dist/test/write.test.d.ts.map +0 -1
- package/dist/test/write.test.js +0 -55
- package/dist/test/write.test.js.map +0 -1
- package/src/osmix.ts +0 -556
- package/test/extract.bench.ts +0 -29
- package/test/extract.test.ts +0 -161
- package/test/read.test.ts +0 -22
- package/test/write.test.ts +0 -69
- /package/dist/{test → core/test}/typed-arrays.test.d.ts +0 -0
- /package/dist/{test → osmix/test}/extract.bench.d.ts +0 -0
- /package/dist/{test → osmix/test}/extract.test.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ways.js","sourceRoot":"","sources":["../../../src/ways.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.test.d.ts","sourceRoot":"","sources":["../../../test/memory.test.ts"],"names":[],"mappings":"AAGA,wBAAgB,4BAA4B,CAC3C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM;;;;;EAYrB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe, expect, it } from "bun:test";
|
|
2
|
+
import { Nodes, Relations, Ways } from "../src";
|
|
3
|
+
export function getOsmCoreMemoryRequirements(nodeCount, wayCount, relationCount) {
|
|
4
|
+
const nodesBytes = Nodes.getBytesRequired(nodeCount);
|
|
5
|
+
const waysBytes = Ways.getBytesRequired(wayCount);
|
|
6
|
+
const relationsBytes = Relations.getBytesRequired(relationCount);
|
|
7
|
+
return {
|
|
8
|
+
nodes: nodesBytes,
|
|
9
|
+
ways: waysBytes,
|
|
10
|
+
relations: relationsBytes,
|
|
11
|
+
total: nodesBytes + waysBytes + relationsBytes,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
describe("Memory Requirements", () => {
|
|
15
|
+
it("computes memory requirements for small datasets", () => {
|
|
16
|
+
const breakdown = getOsmCoreMemoryRequirements(10, 2, 1);
|
|
17
|
+
expect(breakdown.nodes).toBeGreaterThan(0);
|
|
18
|
+
expect(breakdown.ways).toBeGreaterThan(0);
|
|
19
|
+
expect(breakdown.relations).toBeGreaterThan(0);
|
|
20
|
+
expect(breakdown.total).toBe(breakdown.nodes + breakdown.ways + breakdown.relations);
|
|
21
|
+
});
|
|
22
|
+
it("computes memory requirements for large datasets", () => {
|
|
23
|
+
const breakdown = getOsmCoreMemoryRequirements(70000, 20000, 0);
|
|
24
|
+
expect(breakdown.nodes).toBeGreaterThan(0);
|
|
25
|
+
expect(breakdown.ways).toBeGreaterThan(0);
|
|
26
|
+
expect(breakdown.total).toBe(breakdown.nodes + breakdown.ways);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=memory.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.test.js","sourceRoot":"","sources":["../../../test/memory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,MAAM,UAAU,4BAA4B,CAC3C,SAAiB,EACjB,QAAgB,EAChB,aAAqB;IAErB,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAEhE,OAAO;QACN,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,cAAc;QACzB,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,cAAc;KAC9C,CAAA;AACF,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,4BAA4B,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3B,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAC/D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Osm } from "../src/osm";
|
|
2
2
|
/**
|
|
3
3
|
* Create a base OSM with one way and two nodes.
|
|
4
4
|
*/
|
|
5
|
-
export declare function createBaseOsm():
|
|
5
|
+
export declare function createBaseOsm(): Osm;
|
|
6
6
|
/**
|
|
7
7
|
* Create a patch OSM with:
|
|
8
8
|
* - The same way as the base OSM, with new tags
|
|
9
9
|
* - A way that has an overlapping node with the first way, but does not share a node and so starts disconnected
|
|
10
10
|
* - A way that crosses over the first way, but does not share a node and so starts disconnected
|
|
11
11
|
*/
|
|
12
|
-
export declare function createPatchOsm():
|
|
12
|
+
export declare function createPatchOsm(): Osm;
|
|
13
13
|
//# sourceMappingURL=mock-osm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-osm.d.ts","sourceRoot":"","sources":["../../../test/mock-osm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAmChC;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAOnC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAqFpC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Osm } from "../src/osm";
|
|
2
2
|
const YAKIM_LAT = 46.60207;
|
|
3
3
|
const YAKIM_LON = -120.505898;
|
|
4
4
|
const ONE_KM_LON = 0.0131; // approximately
|
|
@@ -30,7 +30,7 @@ function addBaseWays(osm) {
|
|
|
30
30
|
* Create a base OSM with one way and two nodes.
|
|
31
31
|
*/
|
|
32
32
|
export function createBaseOsm() {
|
|
33
|
-
const base = new
|
|
33
|
+
const base = new Osm();
|
|
34
34
|
addBaseNodes(base);
|
|
35
35
|
base.nodes.buildIndex();
|
|
36
36
|
addBaseWays(base);
|
|
@@ -44,7 +44,7 @@ export function createBaseOsm() {
|
|
|
44
44
|
* - A way that crosses over the first way, but does not share a node and so starts disconnected
|
|
45
45
|
*/
|
|
46
46
|
export function createPatchOsm() {
|
|
47
|
-
const osm = new
|
|
47
|
+
const osm = new Osm();
|
|
48
48
|
addBaseNodes(osm);
|
|
49
49
|
// Add way the connects with base way node 0 (will replace it)
|
|
50
50
|
osm.nodes.addNode({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-osm.js","sourceRoot":"","sources":["../../../test/mock-osm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-search.test.d.ts","sourceRoot":"","sources":["../../../test/tags-search.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { describe, expect, it } from "bun:test";
|
|
2
|
+
import { Nodes } from "../src/nodes";
|
|
3
|
+
import StringTable from "../src/stringtable";
|
|
4
|
+
import { Ways } from "../src/ways";
|
|
5
|
+
describe("Tags.search on Nodes", () => {
|
|
6
|
+
it("finds by key and key+value", () => {
|
|
7
|
+
const st = new StringTable();
|
|
8
|
+
const nodes = new Nodes(st);
|
|
9
|
+
const node1 = { id: 1, lon: -1, lat: 1, tags: { curb: "yes" } };
|
|
10
|
+
const node2 = { id: 2, lon: -2, lat: 2, tags: { curb: "no" } };
|
|
11
|
+
const node3 = { id: 3, lon: -3, lat: 3 };
|
|
12
|
+
nodes.addNode(node1);
|
|
13
|
+
nodes.addNode(node2);
|
|
14
|
+
nodes.addNode(node3);
|
|
15
|
+
nodes.buildIndex();
|
|
16
|
+
const allCurb = nodes.search("curb");
|
|
17
|
+
expect(allCurb).toEqual([node1, node2]);
|
|
18
|
+
const curbYes = nodes.search("curb", "yes");
|
|
19
|
+
expect(curbYes).toEqual([node1]);
|
|
20
|
+
const curbNo = nodes.search("curb", "no");
|
|
21
|
+
expect(curbNo).toEqual([node2]);
|
|
22
|
+
const none = nodes.search("highway");
|
|
23
|
+
expect(none).toEqual([]);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe("Tags.search on Ways", () => {
|
|
27
|
+
it("finds by key and key+value", () => {
|
|
28
|
+
const st = new StringTable();
|
|
29
|
+
const nodes = new Nodes(st);
|
|
30
|
+
const ways = new Ways(st, nodes);
|
|
31
|
+
const way1 = {
|
|
32
|
+
id: 10,
|
|
33
|
+
refs: [1, 2],
|
|
34
|
+
tags: { highway: "residential" },
|
|
35
|
+
};
|
|
36
|
+
const way2 = { id: 11, refs: [2, 3], tags: { area: "yes" } };
|
|
37
|
+
const way3 = {
|
|
38
|
+
id: 12,
|
|
39
|
+
refs: [3, 4],
|
|
40
|
+
tags: { highway: "primary", area: "no" },
|
|
41
|
+
};
|
|
42
|
+
ways.addWay(way1);
|
|
43
|
+
ways.addWay(way2);
|
|
44
|
+
ways.addWay(way3);
|
|
45
|
+
ways.buildIndex();
|
|
46
|
+
const allHighway = ways.search("highway");
|
|
47
|
+
expect(allHighway).toEqual([way1, way3]);
|
|
48
|
+
const areaYes = ways.search("area", "yes");
|
|
49
|
+
expect(areaYes).toEqual([way2]);
|
|
50
|
+
const areaAll = ways.search("area");
|
|
51
|
+
expect(areaAll).toEqual([way2, way3]);
|
|
52
|
+
const areaNo = ways.search("area", "no");
|
|
53
|
+
expect(areaNo).toEqual([way3]);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=tags-search.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-search.test.js","sourceRoot":"","sources":["../../../test/tags-search.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-arrays.test.d.ts","sourceRoot":"","sources":["../../../test/typed-arrays.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, expect, it } from "
|
|
1
|
+
import { describe, expect, it } from "bun:test";
|
|
2
2
|
import { BufferConstructor, ResizeableTypedArray } from "../src/typed-arrays";
|
|
3
3
|
describe("typed array helpers", () => {
|
|
4
4
|
it("selects the appropriate buffer constructor", () => {
|
|
@@ -78,23 +78,25 @@ describe("typed array helpers", () => {
|
|
|
78
78
|
expect(arr.array.length).toBe(8);
|
|
79
79
|
expect(Array.from(arr.slice(0, arr.length))).toEqual([1, 2, 3, 4, 5]);
|
|
80
80
|
});
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
if (typeof SharedArrayBuffer !== "undefined") {
|
|
82
|
+
it("grows shared buffers in place", () => {
|
|
83
|
+
const backing = new SharedArrayBuffer(8, {
|
|
84
|
+
maxByteLength: 32,
|
|
85
|
+
});
|
|
86
|
+
const seed = new Uint8Array(backing);
|
|
87
|
+
seed.set([1, 2, 3, 4, 5, 6, 7, 8]);
|
|
88
|
+
const arr = ResizeableTypedArray.from(Uint8Array, backing);
|
|
89
|
+
arr.bufferSize = arr.buffer.byteLength;
|
|
90
|
+
arr.maxByteLength = backing.maxByteLength;
|
|
91
|
+
arr.items = arr.array.length;
|
|
92
|
+
const originalBuffer = arr.buffer;
|
|
93
|
+
arr.push(9);
|
|
94
|
+
expect(arr.buffer).toBe(originalBuffer);
|
|
95
|
+
expect(arr.array.length).toBe(16);
|
|
96
|
+
expect(arr.buffer.byteLength).toBe(16);
|
|
97
|
+
expect(Array.from(arr.slice(0, 9))).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
|
84
98
|
});
|
|
85
|
-
|
|
86
|
-
seed.set([1, 2, 3, 4, 5, 6, 7, 8]);
|
|
87
|
-
const arr = ResizeableTypedArray.from(Uint8Array, backing);
|
|
88
|
-
arr.bufferSize = arr.buffer.byteLength;
|
|
89
|
-
arr.maxByteLength = backing.maxByteLength;
|
|
90
|
-
arr.items = arr.array.length;
|
|
91
|
-
const originalBuffer = arr.buffer;
|
|
92
|
-
arr.push(9);
|
|
93
|
-
expect(arr.buffer).toBe(originalBuffer);
|
|
94
|
-
expect(arr.array.length).toBe(16);
|
|
95
|
-
expect(arr.buffer.byteLength).toBe(16);
|
|
96
|
-
expect(Array.from(arr.slice(0, 9))).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
|
97
|
-
});
|
|
99
|
+
}
|
|
98
100
|
});
|
|
99
101
|
});
|
|
100
102
|
//# sourceMappingURL=typed-arrays.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-arrays.test.js","sourceRoot":"","sources":["../../../test/typed-arrays.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geographic extraction from OSM indexes.
|
|
3
|
+
*
|
|
4
|
+
* Creates subsets of OSM data within bounding boxes using various strategies
|
|
5
|
+
* that control how ways and relations at the boundary are handled.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { Osm } from "@osmix/core";
|
|
10
|
+
import { type ProgressEvent } from "@osmix/shared/progress";
|
|
11
|
+
import type { GeoBbox2D } from "@osmix/shared/types";
|
|
12
|
+
/**
|
|
13
|
+
* Strategy for handling entities at extract boundaries.
|
|
14
|
+
* - `"simple"`: Strict spatial cut, may have incomplete geometries.
|
|
15
|
+
* - `"complete_ways"`: Preserves complete way geometry, adds nodes outside bbox.
|
|
16
|
+
* - `"smart"`: Like complete_ways, plus fully resolves multipolygon relations.
|
|
17
|
+
*/
|
|
18
|
+
export type ExtractStrategy = "simple" | "complete_ways" | "smart";
|
|
19
|
+
/**
|
|
20
|
+
* Create a geographic extract from an existing Osm instance within a bounding box.
|
|
21
|
+
*
|
|
22
|
+
* Strategy "simple":
|
|
23
|
+
* 1. Selects all nodes inside the bbox.
|
|
24
|
+
* 2. Selects ways with at least one node inside the bbox, filtering refs to only include nodes inside the bbox.
|
|
25
|
+
* 3. Selects relations with at least one member inside the bbox, filtering members to only include nodes and ways inside the bbox.
|
|
26
|
+
*
|
|
27
|
+
* Strategy "complete_ways":
|
|
28
|
+
* 1. Selects all nodes inside the bbox.
|
|
29
|
+
* 2. Selects ways with at least one node inside the bbox, adding missing way nodes from outside the bbox. All ways will be reference complete.
|
|
30
|
+
* 3. Selects relations with at least one member inside the bbox leaving out any members that are not inside the bbox. Relations are not reference complete.
|
|
31
|
+
*
|
|
32
|
+
* Strategy "smart":
|
|
33
|
+
* 1 & 2. Same as "complete_ways".
|
|
34
|
+
* 3. Selects relations with at least one member inside the bbox, adding missing relation members from outside the bbox. Relations are reference complete.
|
|
35
|
+
*
|
|
36
|
+
* The "complete_ways" strategy preserves way geometry integrity but includes entities outside the bbox.
|
|
37
|
+
* The "simple" strategy creates a strict spatial cut but may result in incomplete geometries.
|
|
38
|
+
* Both strategies handle nested relations by resolving all descendant members.
|
|
39
|
+
*
|
|
40
|
+
* See https://osmcode.org/osmium-tool/manual.html#creating-geographic-extracts for more details.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createExtract(osm: Osm, bbox: GeoBbox2D, strategy?: ExtractStrategy, onProgress?: (progress: ProgressEvent) => void): Osm;
|
|
43
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../osmix/src/extract.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAEN,KAAK,aAAa,EAElB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAA;AAGjE;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,eAAe,GAAG,OAAO,CAAA;AAElE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACf,QAAQ,GAAE,eAAiC,EAC3C,UAAU,GAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAkB,GACzD,GAAG,CA6HL"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geographic extraction from OSM indexes.
|
|
3
|
+
*
|
|
4
|
+
* Creates subsets of OSM data within bounding boxes using various strategies
|
|
5
|
+
* that control how ways and relations at the boundary are handled.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { Osm } from "@osmix/core";
|
|
10
|
+
import { logProgress, progressEvent, } from "@osmix/shared/progress";
|
|
11
|
+
import { resolveRelationMembers } from "@osmix/shared/relation-kind";
|
|
12
|
+
import { isMultipolygonRelation } from "@osmix/shared/utils";
|
|
13
|
+
/**
|
|
14
|
+
* Create a geographic extract from an existing Osm instance within a bounding box.
|
|
15
|
+
*
|
|
16
|
+
* Strategy "simple":
|
|
17
|
+
* 1. Selects all nodes inside the bbox.
|
|
18
|
+
* 2. Selects ways with at least one node inside the bbox, filtering refs to only include nodes inside the bbox.
|
|
19
|
+
* 3. Selects relations with at least one member inside the bbox, filtering members to only include nodes and ways inside the bbox.
|
|
20
|
+
*
|
|
21
|
+
* Strategy "complete_ways":
|
|
22
|
+
* 1. Selects all nodes inside the bbox.
|
|
23
|
+
* 2. Selects ways with at least one node inside the bbox, adding missing way nodes from outside the bbox. All ways will be reference complete.
|
|
24
|
+
* 3. Selects relations with at least one member inside the bbox leaving out any members that are not inside the bbox. Relations are not reference complete.
|
|
25
|
+
*
|
|
26
|
+
* Strategy "smart":
|
|
27
|
+
* 1 & 2. Same as "complete_ways".
|
|
28
|
+
* 3. Selects relations with at least one member inside the bbox, adding missing relation members from outside the bbox. Relations are reference complete.
|
|
29
|
+
*
|
|
30
|
+
* The "complete_ways" strategy preserves way geometry integrity but includes entities outside the bbox.
|
|
31
|
+
* The "simple" strategy creates a strict spatial cut but may result in incomplete geometries.
|
|
32
|
+
* Both strategies handle nested relations by resolving all descendant members.
|
|
33
|
+
*
|
|
34
|
+
* See https://osmcode.org/osmium-tool/manual.html#creating-geographic-extracts for more details.
|
|
35
|
+
*/
|
|
36
|
+
export function createExtract(osm, bbox, strategy = "complete_ways", onProgress = logProgress) {
|
|
37
|
+
if (!osm.isReady())
|
|
38
|
+
throw Error("Osm is not ready for extraction.");
|
|
39
|
+
onProgress(progressEvent(`Creating extract ${osm.id} with strategy=${strategy} in bbox ${bbox.join(", ")}...`));
|
|
40
|
+
const [minLon, minLat, maxLon, maxLat] = bbox;
|
|
41
|
+
const extracted = new Osm({
|
|
42
|
+
id: osm.id,
|
|
43
|
+
header: {
|
|
44
|
+
...osm.header,
|
|
45
|
+
bbox: {
|
|
46
|
+
left: minLon,
|
|
47
|
+
bottom: minLat,
|
|
48
|
+
right: maxLon,
|
|
49
|
+
top: maxLat,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const nodeIds = new Set();
|
|
54
|
+
const wayIds = new Set();
|
|
55
|
+
const relationIds = new Set();
|
|
56
|
+
const addNodeIfMissing = (id) => {
|
|
57
|
+
if (nodeIds.has(id))
|
|
58
|
+
return;
|
|
59
|
+
const node = osm.nodes.getById(id);
|
|
60
|
+
if (!node)
|
|
61
|
+
throw Error(`Node ${id} not found`);
|
|
62
|
+
extracted.nodes.addNode(node);
|
|
63
|
+
nodeIds.add(id);
|
|
64
|
+
};
|
|
65
|
+
const addWayIfMissing = (id) => {
|
|
66
|
+
if (wayIds.has(id))
|
|
67
|
+
return;
|
|
68
|
+
const way = osm.ways.getById(id);
|
|
69
|
+
if (!way)
|
|
70
|
+
throw Error(`Way ${id} not found`);
|
|
71
|
+
for (const ref of way.refs)
|
|
72
|
+
addNodeIfMissing(ref);
|
|
73
|
+
extracted.ways.addWay(way);
|
|
74
|
+
wayIds.add(id);
|
|
75
|
+
};
|
|
76
|
+
const addRelationIfMissing = (relation) => {
|
|
77
|
+
if (relationIds.has(relation.id))
|
|
78
|
+
return;
|
|
79
|
+
relationIds.add(relation.id);
|
|
80
|
+
for (const member of relation.members) {
|
|
81
|
+
if (member.type === "node")
|
|
82
|
+
addNodeIfMissing(member.ref);
|
|
83
|
+
if (member.type === "way")
|
|
84
|
+
addWayIfMissing(member.ref);
|
|
85
|
+
if (member.type === "relation") {
|
|
86
|
+
const nestedRelation = osm.relations.getById(member.ref);
|
|
87
|
+
if (nestedRelation)
|
|
88
|
+
addRelationIfMissing(nestedRelation);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
extracted.relations.addRelation(relation);
|
|
92
|
+
};
|
|
93
|
+
onProgress(progressEvent("Extracting nodes..."));
|
|
94
|
+
for (const nodeIndex of osm.nodes.findIndexesWithinBbox(bbox)) {
|
|
95
|
+
const node = osm.nodes.getByIndex(nodeIndex);
|
|
96
|
+
extracted.nodes.addNode(node);
|
|
97
|
+
nodeIds.add(node.id);
|
|
98
|
+
}
|
|
99
|
+
onProgress(progressEvent("Extracting ways..."));
|
|
100
|
+
for (const way of osm.ways.sorted()) {
|
|
101
|
+
if (way.refs.some((ref) => nodeIds.has(ref))) {
|
|
102
|
+
wayIds.add(way.id);
|
|
103
|
+
if (strategy === "complete_ways" || strategy === "smart") {
|
|
104
|
+
for (const ref of way.refs)
|
|
105
|
+
addNodeIfMissing(ref);
|
|
106
|
+
extracted.ways.addWay(way);
|
|
107
|
+
}
|
|
108
|
+
else if (strategy === "simple") {
|
|
109
|
+
extracted.ways.addWay({
|
|
110
|
+
...way,
|
|
111
|
+
refs: way.refs.filter((ref) => nodeIds.has(ref)),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
onProgress(progressEvent("Extracting relations..."));
|
|
117
|
+
for (const relation of osm.relations.sorted()) {
|
|
118
|
+
// Resolve nested relations to get all descendant nodes and ways
|
|
119
|
+
const resolved = resolveRelationMembers(relation, (relId) => osm.relations.getById(relId), 10);
|
|
120
|
+
// Check if relation has any members that intersect the bbox
|
|
121
|
+
const hasIntersectingMembers = resolved.nodes.some((id) => nodeIds.has(id)) ||
|
|
122
|
+
resolved.ways.some((id) => wayIds.has(id));
|
|
123
|
+
if (hasIntersectingMembers) {
|
|
124
|
+
if (isMultipolygonRelation(relation) && strategy === "smart") {
|
|
125
|
+
// Add relation and recursively add direct members even if they're outside the bbox
|
|
126
|
+
addRelationIfMissing(relation);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// Otherwise, filter out members that are outside the bbox
|
|
130
|
+
extracted.relations.addRelation({
|
|
131
|
+
...relation,
|
|
132
|
+
members: relation.members.filter((m) => {
|
|
133
|
+
if (m.type === "node")
|
|
134
|
+
return nodeIds.has(m.ref);
|
|
135
|
+
if (m.type === "way")
|
|
136
|
+
return wayIds.has(m.ref);
|
|
137
|
+
if (m.type === "relation") {
|
|
138
|
+
const nestedRelation = osm.relations.getById(m.ref);
|
|
139
|
+
if (!nestedRelation)
|
|
140
|
+
return false;
|
|
141
|
+
// Include nested relation if it has intersecting members
|
|
142
|
+
const nestedResolved = resolveRelationMembers(nestedRelation, (relId) => osm.relations.getById(relId));
|
|
143
|
+
return (nestedResolved.nodes.some((id) => nodeIds.has(id)) ||
|
|
144
|
+
nestedResolved.ways.some((id) => wayIds.has(id)));
|
|
145
|
+
}
|
|
146
|
+
return false;
|
|
147
|
+
}),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
extracted.buildIndexes();
|
|
153
|
+
extracted.buildSpatialIndexes();
|
|
154
|
+
return extracted;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../osmix/src/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PBF loading and serialization utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for loading OSM PBF data into Osm indexes and
|
|
5
|
+
* serializing Osm indexes back to PBF format. Supports streaming
|
|
6
|
+
* for memory-efficient processing of large datasets.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { Osm, type OsmOptions } from "@osmix/core/src/osm";
|
|
11
|
+
import { type AsyncGeneratorValue, readOsmPbf } from "@osmix/pbf";
|
|
12
|
+
import { type ProgressEvent } from "@osmix/shared/progress";
|
|
13
|
+
import type { GeoBbox2D, OsmEntityType, OsmEntityTypeMap } from "@osmix/shared/types";
|
|
14
|
+
/**
|
|
15
|
+
* Options for loading OSM data from PBF.
|
|
16
|
+
*/
|
|
17
|
+
export interface OsmFromPbfOptions extends OsmOptions {
|
|
18
|
+
extractBbox: GeoBbox2D;
|
|
19
|
+
filter<T extends OsmEntityType>(type: T, entity: OsmEntityTypeMap[T], osmix: Osm): boolean;
|
|
20
|
+
buildSpatialIndexes: OsmEntityType[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Read only the header block from PBF data without parsing entities.
|
|
24
|
+
* Useful for previewing metadata before loading the entire dataset.
|
|
25
|
+
*/
|
|
26
|
+
export declare function readOsmPbfHeader(data: Parameters<typeof readOsmPbf>[0]): Promise<import("@osmix/pbf").OsmPbfHeaderBlock>;
|
|
27
|
+
/**
|
|
28
|
+
* Create a new Osm index from PBF data (stream or buffer).
|
|
29
|
+
* Parses all OSM entities, builds ID and tag indexes, and constructs spatial indexes.
|
|
30
|
+
* Supports optional bbox extraction and entity filtering during ingestion.
|
|
31
|
+
*/
|
|
32
|
+
export declare function fromPbf(data: AsyncGeneratorValue<Uint8Array<ArrayBufferLike>>, options?: Partial<OsmFromPbfOptions>, onProgress?: (progress: ProgressEvent) => void): Promise<Osm>;
|
|
33
|
+
/**
|
|
34
|
+
* Parse raw PBF data into an Osm index.
|
|
35
|
+
* Yields progress events during parsing and index building.
|
|
36
|
+
* Returns the completed Osm instance when done.
|
|
37
|
+
*/
|
|
38
|
+
export declare function startCreateOsmFromPbf(data: AsyncGeneratorValue<Uint8Array<ArrayBufferLike>>, options?: Partial<OsmFromPbfOptions>): AsyncGenerator<ProgressEvent, Osm>;
|
|
39
|
+
/**
|
|
40
|
+
* Convert the OSM index to a ReadableStream of PBF-encoded bytes.
|
|
41
|
+
* Entities are streamed, transformed into PBF blocks, and encoded on the fly.
|
|
42
|
+
* Suitable for piping to file or network streams.
|
|
43
|
+
*/
|
|
44
|
+
export declare function toPbfStream(osm: Osm): ReadableStream<Uint8Array>;
|
|
45
|
+
/**
|
|
46
|
+
* Convert the OSM index to a single in-memory PBF buffer.
|
|
47
|
+
* Collects all streamed chunks into a contiguous Uint8Array.
|
|
48
|
+
* For large datasets, prefer osmToPbfStream to avoid memory pressure.
|
|
49
|
+
*/
|
|
50
|
+
export declare function toPbfBuffer(osm: Osm): Promise<Uint8Array>;
|
|
51
|
+
/**
|
|
52
|
+
* Transform OSM PBF data into a stream of JSON entities.
|
|
53
|
+
*/
|
|
54
|
+
export declare function transformOsmPbfToJson(data: ArrayBufferLike | ReadableStream): import("stream/web").ReadableStream<import("@osmix/shared/types").OsmEntity | import("@osmix/pbf").OsmPbfHeaderBlock>;
|
|
55
|
+
//# sourceMappingURL=pbf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbf.d.ts","sourceRoot":"","sources":["../../../../osmix/src/pbf.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAK1D,OAAO,EACN,KAAK,mBAAmB,EAGxB,UAAU,EACV,MAAM,YAAY,CAAA;AACnB,OAAO,EAEN,KAAK,aAAa,EAElB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAIhB,MAAM,qBAAqB,CAAA;AAG5B;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACpD,WAAW,EAAE,SAAS,CAAA;IACtB,MAAM,CAAC,CAAC,SAAS,aAAa,EAC7B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,KAAK,EAAE,GAAG,GACR,OAAO,CAAA;IACV,mBAAmB,EAAE,aAAa,EAAE,CAAA;CACpC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,mDAG5E;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAC5B,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EACtD,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,EACxC,UAAU,GAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAkB,GACzD,OAAO,CAAC,GAAG,CAAC,CAOd;AAED;;;;GAIG;AACH,wBAAuB,qBAAqB,CAC3C,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EACtD,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACtC,cAAc,CAAC,aAAa,EAAE,GAAG,CAAC,CAqHpC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc,CAAC,UAAU,CAAC,CAIhE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAiB/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,yHAa3E"}
|