Skip to content

Commit 42cca94

Browse files
petern48Copilotpaleolimbot
authored
feat: Implement binary predicates in geos (contains, coveredby, covers, disjoint, equals, touches, within) (#129)
Implemented more binary predicates. Removed the old implementation of `st_intersects.rs` --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Dewey Dunnington <[email protected]>
1 parent 3e21fec commit 42cca94

File tree

6 files changed

+566
-111
lines changed

6 files changed

+566
-111
lines changed

c/sedona-geos/benches/geos-functions.rs

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,81 @@ fn criterion_benchmark(c: &mut Criterion) {
1515
benchmark::scalar(c, &f, "geos", "st_centroid", Polygon(10));
1616
benchmark::scalar(c, &f, "geos", "st_centroid", Polygon(500));
1717

18+
benchmark::scalar(
19+
c,
20+
&f,
21+
"geos",
22+
"st_contains",
23+
ArrayScalar(Polygon(10), Polygon(10)),
24+
);
25+
benchmark::scalar(
26+
c,
27+
&f,
28+
"geos",
29+
"st_contains",
30+
ArrayScalar(Polygon(10), Polygon(500)),
31+
);
32+
33+
benchmark::scalar(
34+
c,
35+
&f,
36+
"geos",
37+
"st_coveredby",
38+
ArrayScalar(Polygon(10), Polygon(10)),
39+
);
40+
benchmark::scalar(
41+
c,
42+
&f,
43+
"geos",
44+
"st_coveredby",
45+
ArrayScalar(Polygon(10), Polygon(500)),
46+
);
47+
48+
benchmark::scalar(
49+
c,
50+
&f,
51+
"geos",
52+
"st_covers",
53+
ArrayScalar(Polygon(10), Polygon(10)),
54+
);
55+
benchmark::scalar(
56+
c,
57+
&f,
58+
"geos",
59+
"st_covers",
60+
ArrayScalar(Polygon(10), Polygon(500)),
61+
);
62+
63+
benchmark::scalar(
64+
c,
65+
&f,
66+
"geos",
67+
"st_disjoint",
68+
ArrayScalar(Polygon(10), Polygon(10)),
69+
);
70+
benchmark::scalar(
71+
c,
72+
&f,
73+
"geos",
74+
"st_disjoint",
75+
ArrayScalar(Polygon(10), Polygon(500)),
76+
);
77+
78+
benchmark::scalar(
79+
c,
80+
&f,
81+
"geos",
82+
"st_equals",
83+
ArrayScalar(Polygon(10), Polygon(10)),
84+
);
85+
benchmark::scalar(
86+
c,
87+
&f,
88+
"geos",
89+
"st_equals",
90+
ArrayScalar(Polygon(10), Polygon(500)),
91+
);
92+
1893
benchmark::scalar(
1994
c,
2095
&f,
@@ -47,6 +122,36 @@ fn criterion_benchmark(c: &mut Criterion) {
47122

48123
benchmark::scalar(c, &f, "geos", "st_length", LineString(10));
49124
benchmark::scalar(c, &f, "geos", "st_length", LineString(500));
125+
126+
benchmark::scalar(
127+
c,
128+
&f,
129+
"geos",
130+
"st_touches",
131+
ArrayScalar(Polygon(10), Polygon(10)),
132+
);
133+
benchmark::scalar(
134+
c,
135+
&f,
136+
"geos",
137+
"st_touches",
138+
ArrayScalar(Polygon(10), Polygon(500)),
139+
);
140+
141+
benchmark::scalar(
142+
c,
143+
&f,
144+
"geos",
145+
"st_within",
146+
ArrayScalar(Polygon(10), Polygon(10)),
147+
);
148+
benchmark::scalar(
149+
c,
150+
&f,
151+
"geos",
152+
"st_within",
153+
ArrayScalar(Polygon(10), Polygon(500)),
154+
);
50155
}
51156

52157
criterion_group!(benches, criterion_benchmark);

0 commit comments

Comments
 (0)