Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
660223c
add some benchmarks
paleolimbot Mar 11, 2026
ed892bb
add benchmark
paleolimbot Mar 12, 2026
f7d9b21
add a few cases we care about
paleolimbot Mar 13, 2026
b9580a2
submodule for now
paleolimbot Mar 13, 2026
2308202
more benchmarks
paleolimbot Mar 21, 2026
cae9154
add an array/array benchmark for tg
paleolimbot Mar 21, 2026
509085e
update to main
paleolimbot Mar 21, 2026
356fb27
distance benchmarks
paleolimbot Mar 24, 2026
37548d8
submodule
paleolimbot Mar 24, 2026
cf221f6
update to main
paleolimbot Mar 25, 2026
0d6dcb5
fix a tester bug
paleolimbot Mar 27, 2026
7489774
add linear referencing benchmarks
paleolimbot Mar 27, 2026
5056c55
add a few closest point benchmarks
paleolimbot Apr 1, 2026
7f9271e
add new functions
paleolimbot Apr 3, 2026
49447b1
add more benchmarks
paleolimbot Apr 3, 2026
301b96e
update s2
paleolimbot Apr 7, 2026
0cc1e49
update s2geometry submodule
paleolimbot Apr 8, 2026
38e5e14
add a symdifference benchmark
paleolimbot Apr 8, 2026
8c2e9ec
submodule for geography
paleolimbot Apr 8, 2026
80b7a62
cmake format
paleolimbot Apr 8, 2026
efa9c41
more recent s2
paleolimbot Apr 8, 2026
837483d
add buffer
paleolimbot Apr 9, 2026
98b0f17
update to main
paleolimbot Apr 15, 2026
3517014
start on c geography
paleolimbot Apr 15, 2026
0bb946e
use C library instead of glue library
paleolimbot Apr 17, 2026
6b9b3a5
shuffle and add error helpers
paleolimbot Apr 17, 2026
c859d7c
test geog
paleolimbot Apr 17, 2026
75781a2
geog bindings again
paleolimbot Apr 17, 2026
a07712e
rect bounder
paleolimbot Apr 17, 2026
4f7b949
wrap the operator
paleolimbot Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/examples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ defaults:

env:
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa
VCPKG_REF: 580d480f750618f8affeb77abbb956e6eeaee0ce

jobs:
rust:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ concurrency:

env:
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa
VCPKG_REF: 580d480f750618f8affeb77abbb956e6eeaee0ce

jobs:
source:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ concurrency:

env:
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa
VCPKG_REF: 580d480f750618f8affeb77abbb956e6eeaee0ce

jobs:
windows-x86_64:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ defaults:

env:
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa
VCPKG_REF: 580d480f750618f8affeb77abbb956e6eeaee0ce

jobs:
test:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rust-gpu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ defaults:
env:
WORKFLOW_TIMEOUT_MINUTES: 90
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa
VCPKG_REF: 580d480f750618f8affeb77abbb956e6eeaee0ce

jobs:
rust-gpu-build:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ defaults:

env:
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa
VCPKG_REF: 580d480f750618f8affeb77abbb956e6eeaee0ce

jobs:
rust:
Expand Down
162 changes: 19 additions & 143 deletions c/sedona-s2geography/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,134 +27,29 @@ set(CMAKE_CXX_STANDARD 17)
find_package(OpenSSL REQUIRED)
find_package(absl REQUIRED)

# Use FetchContent to build nanoarrow and geoarrow, being careful to namespace
# symbols so they don't conflict with other nanoarrows that might be statically
# linked into the same executable (even though we're careful to align versions
# within this workspace, we don't have control of anything outside that stack)
if(POLICY CMP0135)
cmake_policy(SET CMP0135 NEW)
endif()

# S2's CMake is pretty awful so we just build the library ourselves. We pin the
# version of s2geometry for predictability (although it is also available on
# vcpkg and homebrew).
add_library(s2
s2geometry/src/s2/encoded_s2cell_id_vector.cc
s2geometry/src/s2/encoded_s2point_vector.cc
s2geometry/src/s2/encoded_s2shape_index.cc
s2geometry/src/s2/encoded_string_vector.cc
s2geometry/src/s2/id_set_lexicon.cc
s2geometry/src/s2/mutable_s2shape_index.cc
s2geometry/src/s2/r2rect.cc
s2geometry/src/s2/s1angle.cc
s2geometry/src/s2/s1chord_angle.cc
s2geometry/src/s2/s1interval.cc
s2geometry/src/s2/s2boolean_operation.cc
s2geometry/src/s2/s2buffer_operation.cc
s2geometry/src/s2/s2builder.cc
s2geometry/src/s2/s2builder_graph.cc
s2geometry/src/s2/s2builderutil_closed_set_normalizer.cc
s2geometry/src/s2/s2builderutil_find_polygon_degeneracies.cc
s2geometry/src/s2/s2builderutil_get_snapped_winding_delta.cc
s2geometry/src/s2/s2builderutil_lax_polygon_layer.cc
s2geometry/src/s2/s2builderutil_lax_polyline_layer.cc
s2geometry/src/s2/s2builderutil_s2point_vector_layer.cc
s2geometry/src/s2/s2builderutil_s2polygon_layer.cc
s2geometry/src/s2/s2builderutil_s2polyline_layer.cc
s2geometry/src/s2/s2builderutil_s2polyline_vector_layer.cc
s2geometry/src/s2/s2builderutil_snap_functions.cc
s2geometry/src/s2/s2cap.cc
s2geometry/src/s2/s2cell.cc
s2geometry/src/s2/s2cell_id.cc
s2geometry/src/s2/s2cell_index.cc
s2geometry/src/s2/s2cell_union.cc
s2geometry/src/s2/s2centroids.cc
s2geometry/src/s2/s2closest_cell_query.cc
s2geometry/src/s2/s2closest_edge_query.cc
s2geometry/src/s2/s2closest_point_query.cc
s2geometry/src/s2/s2contains_vertex_query.cc
s2geometry/src/s2/s2convex_hull_query.cc
s2geometry/src/s2/s2coords.cc
s2geometry/src/s2/s2crossing_edge_query.cc
s2geometry/src/s2/s2debug.cc
s2geometry/src/s2/s2earth.cc
s2geometry/src/s2/s2edge_clipping.cc
s2geometry/src/s2/s2edge_crosser.cc
s2geometry/src/s2/s2edge_crossings.cc
s2geometry/src/s2/s2edge_distances.cc
s2geometry/src/s2/s2edge_tessellator.cc
s2geometry/src/s2/s2error.cc
s2geometry/src/s2/s2furthest_edge_query.cc
s2geometry/src/s2/s2hausdorff_distance_query.cc
s2geometry/src/s2/s2latlng.cc
s2geometry/src/s2/s2latlng_rect.cc
s2geometry/src/s2/s2latlng_rect_bounder.cc
s2geometry/src/s2/s2lax_loop_shape.cc
s2geometry/src/s2/s2lax_polygon_shape.cc
s2geometry/src/s2/s2lax_polyline_shape.cc
s2geometry/src/s2/s2loop.cc
s2geometry/src/s2/s2loop_measures.cc
s2geometry/src/s2/s2measures.cc
s2geometry/src/s2/s2memory_tracker.cc
s2geometry/src/s2/s2metrics.cc
s2geometry/src/s2/s2max_distance_targets.cc
s2geometry/src/s2/s2min_distance_targets.cc
s2geometry/src/s2/s2padded_cell.cc
s2geometry/src/s2/s2point_compression.cc
s2geometry/src/s2/s2point_region.cc
s2geometry/src/s2/s2pointutil.cc
s2geometry/src/s2/s2polygon.cc
s2geometry/src/s2/s2polyline.cc
s2geometry/src/s2/s2polyline_alignment.cc
s2geometry/src/s2/s2polyline_measures.cc
s2geometry/src/s2/s2polyline_simplifier.cc
s2geometry/src/s2/s2predicates.cc
s2geometry/src/s2/s2projections.cc
s2geometry/src/s2/s2r2rect.cc
s2geometry/src/s2/s2region.cc
s2geometry/src/s2/s2region_term_indexer.cc
s2geometry/src/s2/s2region_coverer.cc
s2geometry/src/s2/s2region_intersection.cc
s2geometry/src/s2/s2region_union.cc
s2geometry/src/s2/s2shape_index.cc
s2geometry/src/s2/s2shape_index_buffered_region.cc
s2geometry/src/s2/s2shape_index_measures.cc
s2geometry/src/s2/s2shape_measures.cc
s2geometry/src/s2/s2shape_nesting_query.cc
s2geometry/src/s2/s2shapeutil_build_polygon_boundaries.cc
s2geometry/src/s2/s2shapeutil_coding.cc
s2geometry/src/s2/s2shapeutil_contains_brute_force.cc
s2geometry/src/s2/s2shapeutil_conversion.cc
s2geometry/src/s2/s2shapeutil_edge_iterator.cc
s2geometry/src/s2/s2shapeutil_get_reference_point.cc
s2geometry/src/s2/s2shapeutil_visit_crossing_edge_pairs.cc
s2geometry/src/s2/s2text_format.cc
s2geometry/src/s2/s2wedge_relations.cc
s2geometry/src/s2/s2winding_operation.cc
s2geometry/src/s2/util/bits/bit-interleave.cc
s2geometry/src/s2/util/coding/coder.cc
s2geometry/src/s2/util/coding/varint.cc
s2geometry/src/s2/util/math/exactfloat/exactfloat.cc
s2geometry/src/s2/util/math/mathutil.cc
s2geometry/src/s2/util/units/length-units.cc)
# Build s2geometry using its own CMake (v0.12.0 has proper add_subdirectory support).
set(BUILD_SHARED_LIBS
OFF
CACHE BOOL "" FORCE)
set(BUILD_TESTS
OFF
CACHE BOOL "" FORCE)
set(BUILD_EXAMPLES
OFF
CACHE BOOL "" FORCE)
add_subdirectory(s2geometry)

if(WIN32 AND NOT MSVC)
# mingw (e.g., R for Windows) needs extra libraries
target_compile_definitions(s2 PUBLIC _USE_MATH_DEFINES)
set(S2_EXTRA_OPENSSL_LIBS
crypt32
z
ws2_32
gdi32
crypt32)
elseif(MSVC)
target_compile_definitions(s2 PUBLIC NOMINMAX _USE_MATH_DEFINES)
target_compile_options(s2 PUBLIC /J)
else()
target_compile_options(s2 PRIVATE -Wno-attributes -Wno-deprecated-declarations
-Wno-pedantic)
endif()

# Abseil libraries needed by the linker_flags discovery target below.
set(ABSL_LIBRARIES
absl::base
absl::btree
Expand All @@ -178,38 +73,19 @@ set(ABSL_LIBRARIES
absl::str_format
absl::strings
absl::type_traits
absl::utility)

target_include_directories(s2
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/s2geometry/src>
)
target_link_libraries(s2 ${OPENSSL_LIBRARIES} ${ABSL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
absl::utility
absl::vlog_is_on)

install(TARGETS s2
EXPORT "s2geography-targets"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")

# Build s2geography
# Build s2geography (needs the s2::s2 alias and version info)
add_library(s2::s2 ALIAS s2)
set(S2_VERSION_MAJOR 0)
set(S2_VERSION_MINOR 11)
set(S2_VERSION_MINOR 13)
set(S2_VERSION_PATCH 1)
set(BUILD_SHARED_LIBS OFF)
add_subdirectory(s2geography)

# Add our glue library
add_library(geography_glue src/geography_glue.cc)
target_link_libraries(geography_glue
s2geography
s2
OpenSSL::SSL
OpenSSL::Crypto
${S2_EXTRA_OPENSSL_LIBS})

install(TARGETS geography_glue
EXPORT "geoarrow"
# s2geography's install export set references s2, so we need to include it.
install(TARGETS s2
EXPORT "s2geography-targets"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
Expand Down
Loading
Loading