turf-ruby 0.8.1 → 1.0.0

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.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -0
  3. data/README.md +159 -139
  4. data/lib/turf/along.rb +10 -3
  5. data/lib/turf/angle.rb +8 -0
  6. data/lib/turf/area.rb +4 -1
  7. data/lib/turf/bbox.rb +36 -0
  8. data/lib/turf/bbox_clip.rb +74 -0
  9. data/lib/turf/bbox_polygon.rb +41 -0
  10. data/lib/turf/bearing.rb +5 -2
  11. data/lib/turf/bezier_spline.rb +8 -0
  12. data/lib/turf/boolean_clockwise.rb +8 -0
  13. data/lib/turf/boolean_concave.rb +8 -0
  14. data/lib/turf/boolean_contains.rb +52 -0
  15. data/lib/turf/boolean_crosses.rb +8 -0
  16. data/lib/turf/boolean_disjoint.rb +8 -0
  17. data/lib/turf/boolean_equal.rb +8 -0
  18. data/lib/turf/boolean_intersects.rb +8 -0
  19. data/lib/turf/boolean_overlap.rb +8 -0
  20. data/lib/turf/boolean_parallel.rb +8 -0
  21. data/lib/turf/boolean_point_in_polygon.rb +5 -3
  22. data/lib/turf/boolean_point_on_line.rb +8 -0
  23. data/lib/turf/boolean_touches.rb +8 -0
  24. data/lib/turf/boolean_valid.rb +8 -0
  25. data/lib/turf/boolean_within.rb +8 -0
  26. data/lib/turf/buffer.rb +8 -0
  27. data/lib/turf/center.rb +32 -0
  28. data/lib/turf/center_mean.rb +8 -0
  29. data/lib/turf/center_median.rb +8 -0
  30. data/lib/turf/center_of_mass.rb +8 -0
  31. data/lib/turf/centroid.rb +5 -2
  32. data/lib/turf/circle.rb +5 -2
  33. data/lib/turf/clean_coords.rb +8 -0
  34. data/lib/turf/clone.rb +8 -0
  35. data/lib/turf/clusters.rb +32 -0
  36. data/lib/turf/clusters_dbscan.rb +8 -0
  37. data/lib/turf/clusters_kmeans.rb +8 -0
  38. data/lib/turf/collect.rb +8 -0
  39. data/lib/turf/combine.rb +8 -0
  40. data/lib/turf/concave.rb +8 -0
  41. data/lib/turf/convex.rb +8 -0
  42. data/lib/turf/destination.rb +6 -3
  43. data/lib/turf/difference.rb +8 -0
  44. data/lib/turf/directional_mean.rb +8 -0
  45. data/lib/turf/dissolve.rb +8 -0
  46. data/lib/turf/distance.rb +5 -2
  47. data/lib/turf/distance_weight.rb +12 -0
  48. data/lib/turf/ellipse.rb +8 -0
  49. data/lib/turf/envelope.rb +8 -0
  50. data/lib/turf/explode.rb +29 -0
  51. data/lib/turf/flatten.rb +8 -0
  52. data/lib/turf/flip.rb +8 -0
  53. data/lib/turf/geojson_rbush.rb +8 -0
  54. data/lib/turf/great_circle.rb +8 -0
  55. data/lib/turf/helpers.rb +166 -26
  56. data/lib/turf/hex_grid.rb +8 -0
  57. data/lib/turf/interpolate.rb +8 -0
  58. data/lib/turf/intersect.rb +8 -0
  59. data/lib/turf/invariant.rb +127 -1
  60. data/lib/turf/isobands.rb +8 -0
  61. data/lib/turf/isolines.rb +8 -0
  62. data/lib/turf/kinks.rb +8 -0
  63. data/lib/turf/length.rb +6 -3
  64. data/lib/turf/lib/lineclip.rb +118 -0
  65. data/lib/turf/line_arc.rb +8 -0
  66. data/lib/turf/line_chunk.rb +8 -0
  67. data/lib/turf/line_intersect.rb +8 -0
  68. data/lib/turf/line_offset.rb +8 -0
  69. data/lib/turf/line_overlap.rb +8 -0
  70. data/lib/turf/line_segment.rb +8 -0
  71. data/lib/turf/line_slice.rb +8 -0
  72. data/lib/turf/line_slice_along.rb +8 -0
  73. data/lib/turf/line_split.rb +8 -0
  74. data/lib/turf/line_to_polygon.rb +8 -0
  75. data/lib/turf/mask.rb +8 -0
  76. data/lib/turf/meta.rb +445 -79
  77. data/lib/turf/midpoint.rb +8 -0
  78. data/lib/turf/moran_index.rb +8 -0
  79. data/lib/turf/nearest_neighbor_analysis.rb +8 -0
  80. data/lib/turf/nearest_point.rb +8 -0
  81. data/lib/turf/nearest_point_on_line.rb +8 -0
  82. data/lib/turf/nearest_point_to_line.rb +8 -0
  83. data/lib/turf/planepoint.rb +8 -0
  84. data/lib/turf/point_grid.rb +8 -0
  85. data/lib/turf/point_on_feature.rb +8 -0
  86. data/lib/turf/point_to_line_distance.rb +8 -0
  87. data/lib/turf/point_to_polygon_distance.rb +8 -0
  88. data/lib/turf/points_within_polygon.rb +8 -0
  89. data/lib/turf/polygon_smooth.rb +8 -0
  90. data/lib/turf/polygon_tangents.rb +8 -0
  91. data/lib/turf/polygon_to_line.rb +20 -0
  92. data/lib/turf/polygonize.rb +8 -0
  93. data/lib/turf/projection.rb +12 -0
  94. data/lib/turf/quadrat_analysis.rb +8 -0
  95. data/lib/turf/random.rb +20 -0
  96. data/lib/turf/rectangle_grid.rb +8 -0
  97. data/lib/turf/rewind.rb +8 -0
  98. data/lib/turf/rhumb_bearing.rb +8 -0
  99. data/lib/turf/rhumb_destination.rb +8 -0
  100. data/lib/turf/rhumb_distance.rb +8 -0
  101. data/lib/turf/sample.rb +8 -0
  102. data/lib/turf/sector.rb +8 -0
  103. data/lib/turf/shortest_path.rb +8 -0
  104. data/lib/turf/simplify.rb +8 -0
  105. data/lib/turf/square.rb +42 -0
  106. data/lib/turf/square_grid.rb +8 -0
  107. data/lib/turf/standard_deviational_ellipse.rb +8 -0
  108. data/lib/turf/tag.rb +8 -0
  109. data/lib/turf/tesselate.rb +8 -0
  110. data/lib/turf/tin.rb +8 -0
  111. data/lib/turf/transform_rotate.rb +8 -0
  112. data/lib/turf/transform_scale.rb +8 -0
  113. data/lib/turf/transform_translate.rb +8 -0
  114. data/lib/turf/triangle_grid.rb +8 -0
  115. data/lib/turf/truncate.rb +3 -0
  116. data/lib/turf/union.rb +8 -0
  117. data/lib/turf/unkink_polygon.rb +8 -0
  118. data/lib/turf/version.rb +2 -1
  119. data/lib/turf/voronoi.rb +8 -0
  120. data/lib/turf.rb +2 -0
  121. data/lib/turf_ruby.rb +107 -3
  122. metadata +105 -2
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_contains(*args)
6
+ raise NotImplementedError
7
+ end
8
+
9
+ def is_polygon_in_multi_polygon(*args)
10
+ raise NotImplementedError
11
+ end
12
+
13
+ def is_point_in_multi_point(*args)
14
+ raise NotImplementedError
15
+ end
16
+
17
+ def is_multi_point_in_multi_point(*args)
18
+ raise NotImplementedError
19
+ end
20
+
21
+ def is_multi_point_on_line(*args)
22
+ raise NotImplementedError
23
+ end
24
+
25
+ def is_multi_point_in_poly(*args)
26
+ raise NotImplementedError
27
+ end
28
+
29
+ def is_line_on_line(*args)
30
+ raise NotImplementedError
31
+ end
32
+
33
+ def is_line_in_poly(*args)
34
+ raise NotImplementedError
35
+ end
36
+
37
+ def is_poly_in_poly(*args)
38
+ raise NotImplementedError
39
+ end
40
+
41
+ def do_b_box_overlap(*args)
42
+ raise NotImplementedError
43
+ end
44
+
45
+ def compare_coords(*args)
46
+ raise NotImplementedError
47
+ end
48
+
49
+ def get_midpoint(*args)
50
+ raise NotImplementedError
51
+ end
52
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_crosses(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_disjoint(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_equal(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_intersects(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_overlap(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_parallel(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "invariant"
4
+
3
5
  # :nodoc:
4
6
  module Turf
5
7
  # @!group Booleans
@@ -13,7 +15,7 @@ module Turf
13
15
  # inside
14
16
  # the polygon otherwise false.
15
17
  # @return [boolean] true if the Point is inside the Polygon; false if the Point is not inside the Polygon
16
- def boolean_point_in_polygon(point, polygon, ignore_boundary: false)
18
+ def boolean_point_in_polygon(point, polygon, options = {})
17
19
  polygon = deep_symbolize_keys(polygon)
18
20
  pt = get_coord(point)
19
21
  geom = get_geom(polygon)
@@ -30,13 +32,13 @@ module Turf
30
32
  inside_poly = false
31
33
  polys.each do |poly|
32
34
  # check if it is in the outer ring first
33
- next unless in_ring(pt, poly[0], ignore_boundary)
35
+ next unless in_ring(pt, poly[0], options[:ignore_boundary])
34
36
 
35
37
  in_hole = false
36
38
 
37
39
  # check for the point in any of the holes
38
40
  poly.slice(1, poly.size - 1).each do |hole|
39
- if in_ring(pt, hole, !ignore_boundary)
41
+ if in_ring(pt, hole, !options[:ignore_boundary])
40
42
  in_hole = true
41
43
  end
42
44
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_point_on_line(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_touches(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_valid(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def boolean_within(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def buffer(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ # frozen_string_literal: true
6
+
7
+ # Takes a Feature or FeatureCollection and returns the absolute center point of all features.
8
+ #
9
+ # @param [GeoJSON] geojson GeoJSON to be centered
10
+ # @param [Hash] options Optional parameters
11
+ # @option options [Hash] :properties Translate GeoJSON Properties to Point
12
+ # @option options [Array] :bbox Translate GeoJSON BBox to Point
13
+ # @option options [String, Integer] :id Translate GeoJSON Id to Point
14
+ # @return [Feature<Point>] a Point feature at the absolute center point of all input features
15
+ # @example
16
+ # features = points([
17
+ # [-97.522259, 35.4691],
18
+ # [-97.502754, 35.463455],
19
+ # [-97.508269, 35.463245]
20
+ # ])
21
+ # center = center(features)
22
+ # # Add to map
23
+ # add_to_map = [features, center]
24
+ # center[:properties]['marker-size'] = 'large'
25
+ # center[:properties]['marker-color'] = '#000'
26
+ def center(geojson, options = {})
27
+ ext = bbox(geojson)
28
+ x = (ext[0] + ext[2]) / 2.0
29
+ y = (ext[1] + ext[3]) / 2.0
30
+ point([x, y], options[:properties] || {}, options)
31
+ end
32
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def center_mean(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def center_median(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def center_of_mass(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
data/lib/turf/centroid.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "helpers"
4
+ require_relative "meta"
5
+
3
6
  # :nodoc:
4
7
  module Turf
5
8
  # @!group Measurement
@@ -10,7 +13,7 @@ module Turf
10
13
  # @param geojson [GeoJSON] GeoJSON to be centered
11
14
  # @param properties [Hash] a [Hash] that is used as the Feature's properties
12
15
  # @return [Feature<Point>] the centroid of the input features
13
- def centroid(geojson, properties: {})
16
+ def centroid(geojson, properties = nil)
14
17
  x_sum = 0.0
15
18
  y_sum = 0.0
16
19
  len = 0.0
@@ -23,7 +26,7 @@ module Turf
23
26
 
24
27
  point(
25
28
  [x_sum / len, y_sum / len],
26
- properties: properties,
29
+ properties,
27
30
  )
28
31
  end
29
32
  end
data/lib/turf/circle.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "destination"
4
+ require_relative "helpers"
5
+
3
6
  # :nodoc:
4
7
  module Turf
5
8
  # Takes a Point and calculates the circle polygon given a radius in degrees, radians, miles, or kilometers;
@@ -22,10 +25,10 @@ module Turf
22
25
  # main
23
26
  coordinates = []
24
27
  steps.times do |i|
25
- coordinates.push(destination(center, radius, (i * -360.0) / steps, **options).dig(:geometry, :coordinates))
28
+ coordinates.push(destination(center, radius, (i * -360.0) / steps, options).dig(:geometry, :coordinates))
26
29
  end
27
30
  coordinates.push(coordinates[0])
28
31
 
29
- polygon([coordinates], properties: properties)
32
+ polygon([coordinates], properties)
30
33
  end
31
34
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def clean_coords(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
data/lib/turf/clone.rb ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def clone(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def get_cluster(*args)
6
+ raise NotImplementedError
7
+ end
8
+
9
+ def cluster_each(*args)
10
+ raise NotImplementedError
11
+ end
12
+
13
+ def cluster_reduce(*args)
14
+ raise NotImplementedError
15
+ end
16
+
17
+ def create_bins(*args)
18
+ raise NotImplementedError
19
+ end
20
+
21
+ def apply_filter(*args)
22
+ raise NotImplementedError
23
+ end
24
+
25
+ def properties_contains_filter(*args)
26
+ raise NotImplementedError
27
+ end
28
+
29
+ def filter_properties(*args)
30
+ raise NotImplementedError
31
+ end
32
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def clusters_dbscan(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def clusters_kmeans(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def collect(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def combine(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def concave(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def convex(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "helpers"
4
+ require_relative "invariant"
5
+
3
6
  # :nodoc:
4
7
  module Turf
5
8
  # @!group Measurement
@@ -10,8 +13,8 @@ module Turf
10
13
  # @param origin [Coord] starting point
11
14
  # @param distance [number] distance from the origin point
12
15
  # @param bearing [number] ranging from -180 to 180
13
- # @param units [string] miles, kilometers, degrees, or radians
14
- # @param properties [Hash] Translate properties to Point
16
+ # @param options[:units] [string] miles, kilometers, degrees, or radians
17
+ # @param options[:properties] [Hash] Translate properties to Point
15
18
  # @return [Feature<Point>] destination point
16
19
  def destination(origin, distance, bearing, options = {})
17
20
  coordinates1 = get_coord origin
@@ -29,6 +32,6 @@ module Turf
29
32
  lng = radians_to_degrees(longitude2)
30
33
  lat = radians_to_degrees(latitude2)
31
34
 
32
- point([lng, lat], properties: options[:properties])
35
+ point([lng, lat], options[:properties])
33
36
  end
34
37
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def difference(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def directional_mean(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def dissolve(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
data/lib/turf/distance.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "helpers"
4
+ require_relative "invariant"
5
+
3
6
  # :nodoc:
4
7
  module Turf
5
8
  # @!group Measurement
@@ -11,7 +14,7 @@ module Turf
11
14
  # @param to [Coord] destination point
12
15
  # @param units [string] can be degrees, radians, miles, or kilometers
13
16
  # @return [number] distance between the two points
14
- def distance(from, to, units: "kilometers")
17
+ def distance(from, to, options = {})
15
18
  coordinates1 = get_coord from
16
19
  coordinates2 = get_coord to
17
20
 
@@ -31,7 +34,7 @@ module Turf
31
34
  Math.sqrt(a),
32
35
  Math.sqrt(1 - a),
33
36
  ),
34
- units,
37
+ options[:units],
35
38
  )
36
39
  end
37
40
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def p_norm_distance(*args)
6
+ raise NotImplementedError
7
+ end
8
+
9
+ def distance_weight(*args)
10
+ raise NotImplementedError
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def ellipse(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def envelope(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "meta"
4
+ require_relative "helpers"
5
+
6
+ # :nodoc:
7
+ module Turf
8
+ def explode(geojson)
9
+ points = []
10
+
11
+ if geojson[:type] == "FeatureCollection"
12
+ feature_each(geojson) do |feature|
13
+ coord_each(feature) do |coord|
14
+ points << point(coord, feature[:properties])
15
+ end
16
+ end
17
+ elsif geojson[:type] == "Feature"
18
+ coord_each(geojson) do |coord|
19
+ points << point(coord, geojson[:properties])
20
+ end
21
+ else
22
+ coord_each(geojson) do |coord|
23
+ points << point(coord)
24
+ end
25
+ end
26
+
27
+ feature_collection(points)
28
+ end
29
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def flatten(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
data/lib/turf/flip.rb ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def flip(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def geojson_rbush(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
4
+ module Turf
5
+ def great_circle(*args)
6
+ raise NotImplementedError
7
+ end
8
+ end