Old code:
#[classmethod]
#[pyo3(signature = (input, *, chunk_size=65536, crs=None))]
fn from_shapely(
_cls: &Bound<PyType>,
py: Python,
input: &Bound<PyAny>,
chunk_size: usize,
crs: Option<PyCrs>,
) -> PyGeoArrowResult<Self> {
let len = input.len()?;
let num_chunks = (len as f64 / chunk_size as f64).ceil() as usize;
let mut chunks = Vec::with_capacity(num_chunks);
for chunk_idx in 0..num_chunks {
let slice = PySlice::new_bound(
py,
(chunk_idx * chunk_size).try_into().unwrap(),
((chunk_idx + 1) * chunk_size).try_into().unwrap(),
1,
);
let input_slice = input.get_item(slice)?;
chunks.push(
<$py_array_struct>::from_shapely(_cls, py, &input_slice, crs.clone())?.0,
);
}
Ok(geoarrow_array::chunked_array::PyChunkedNativeArray::new(chunks).into())
}
Old code: