Skip to content

Commit d54ef15

Browse files
committed
feat(raster): add RS_Contains, RS_Intersects, RS_Within UDFs
1 parent 301086f commit d54ef15

10 files changed

Lines changed: 1830 additions & 7 deletions

File tree

Cargo.lock

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

c/sedona-proj/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ mod proj;
1919
mod proj_dyn_bindgen;
2020
pub mod register;
2121
pub mod sd_order_lnglat;
22-
mod st_transform;
22+
pub mod st_transform;
2323
pub mod transform;

c/sedona-proj/src/st_transform.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -389,10 +389,7 @@ pub fn configure_global_proj_engine(builder: ProjCrsEngineBuilder) -> Result<()>
389389

390390
/// Do something with the global thread-local PROJ engine, creating it if it has not
391391
/// already been created.
392-
pub(crate) fn with_global_proj_engine<
393-
R,
394-
F: FnMut(&CachingCrsEngine<ProjCrsEngine>) -> Result<R>,
395-
>(
392+
pub fn with_global_proj_engine<R, F: FnMut(&CachingCrsEngine<ProjCrsEngine>) -> Result<R>>(
396393
mut func: F,
397394
) -> Result<R> {
398395
PROJ_ENGINE.with(|engine_cell| {

rust/sedona-raster-functions/Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,16 @@ sedona-expr = { workspace = true }
4141
sedona-geometry = { workspace = true }
4242
sedona-raster = { workspace = true }
4343
sedona-schema = { workspace = true }
44+
sedona-tg = { workspace = true }
45+
sedona-proj = { workspace = true }
4446
serde_json = { workspace = true }
47+
wkb = { workspace = true }
4548

4649
[dev-dependencies]
4750
criterion = { workspace = true }
51+
geo-traits = { workspace = true }
4852
sedona-testing = { workspace = true, features = ["criterion"] }
53+
sedona-proj = { workspace = true, features = ["proj-sys"] }
4954
rstest = { workspace = true }
5055

5156
[[bench]]

rust/sedona-raster-functions/benches/native-raster-functions.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,55 @@ fn criterion_benchmark(c: &mut Criterion) {
110110
Float64(-45.0, 45.0),
111111
),
112112
);
113+
114+
// RS_Intersects(raster, geometry) - point
115+
benchmark::scalar(
116+
c,
117+
&f,
118+
"native-raster",
119+
"rs_intersects",
120+
BenchmarkArgs::ArrayArray(Raster(64, 64), Point),
121+
);
122+
// RS_Intersects(raster, geometry) - polygon
123+
benchmark::scalar(
124+
c,
125+
&f,
126+
"native-raster",
127+
"rs_intersects",
128+
BenchmarkArgs::ArrayArray(Raster(64, 64), Polygon(4)),
129+
);
130+
// RS_Intersects(raster, raster)
131+
benchmark::scalar(
132+
c,
133+
&f,
134+
"native-raster",
135+
"rs_intersects",
136+
BenchmarkArgs::ArrayArray(Raster(64, 64), Raster(64, 64)),
137+
);
138+
// RS_Contains(raster, geometry) - point
139+
benchmark::scalar(
140+
c,
141+
&f,
142+
"native-raster",
143+
"rs_contains",
144+
BenchmarkArgs::ArrayArray(Raster(64, 64), Point),
145+
);
146+
// RS_Contains(raster, geometry) - polygon
147+
benchmark::scalar(
148+
c,
149+
&f,
150+
"native-raster",
151+
"rs_contains",
152+
BenchmarkArgs::ArrayArray(Raster(64, 64), Polygon(4)),
153+
);
154+
// RS_Within(raster, geometry) - polygon
155+
benchmark::scalar(
156+
c,
157+
&f,
158+
"native-raster",
159+
"rs_within",
160+
BenchmarkArgs::ArrayArray(Raster(64, 64), Polygon(4)),
161+
);
113162
}
114163

115164
criterion_group!(benches, criterion_benchmark);

0 commit comments

Comments
 (0)