librtree 1.0.5 → 1.0.6
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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +5 -0
 - data/ext/rtree/lib/csv.c +75 -0
 - data/ext/rtree/lib/private/csv.h +1 -0
 - data/ext/rtree/lib/rtree-base.c +15 -2
 - data/ext/rtree/lib/rtree.h +2 -0
 - data/ext/rtree/rtree.c +34 -5
 - data/lib/rtree.rb +43 -14
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1d23f82b41d0757dbca1d30fc447bd2573db6d1584727c3244c84bbae0bc6b83
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 36b7cda50a05140949537890a4ab99ebc555f08d7f7789cd7d4d0bd14c7b4c27
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 5ad5636536266f5ac027bd9f7ee59b359f4a3b00c07107057c7b83d378122be21343ebb54db36fe0e7683c926e674a7c8e4f3a6013b4a38c3019078851995c38
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 22292e552cd05823802107094df3ff12c0a0a04129e26dd0fe8a9dd1c1b966f47b1b1cf4a1ac046f0965710965235c5e3a195c4de87b5612aa968e042a3c38fb
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/ext/rtree/lib/csv.c
    CHANGED
    
    | 
         @@ -81,3 +81,78 @@ rtree_t* csv_rtree_read(FILE *stream, size_t dims, state_flags_t flags) 
     | 
|
| 
       81 
81 
     | 
    
         | 
| 
       82 
82 
     | 
    
         
             
              return NULL;
         
     | 
| 
       83 
83 
     | 
    
         
             
            }
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            static int write_node(const state_t*, const node_t*, FILE *);
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            static int write_internal_branch(const state_t *state,
         
     | 
| 
      
 88 
     | 
    
         
            +
                                             const branch_t *branch,
         
     | 
| 
      
 89 
     | 
    
         
            +
                                             void *arg)
         
     | 
| 
      
 90 
     | 
    
         
            +
            {
         
     | 
| 
      
 91 
     | 
    
         
            +
              return write_node(state, branch_get_child(branch), arg);
         
     | 
| 
      
 92 
     | 
    
         
            +
            }
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            #if SIZEOF_RTREE_COORD_T == 4
         
     | 
| 
      
 95 
     | 
    
         
            +
            #define PRECISION 6
         
     | 
| 
      
 96 
     | 
    
         
            +
            #elif SIZEOF_RTREE_COORD_T == 8
         
     | 
| 
      
 97 
     | 
    
         
            +
            #define PRECISION 14
         
     | 
| 
      
 98 
     | 
    
         
            +
            #else
         
     | 
| 
      
 99 
     | 
    
         
            +
            #error "strange size for rtree_coord_t"
         
     | 
| 
      
 100 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            static int write_leaf_branch(const state_t *state,
         
     | 
| 
      
 103 
     | 
    
         
            +
                                         const branch_t *branch,
         
     | 
| 
      
 104 
     | 
    
         
            +
                                         void *arg)
         
     | 
| 
      
 105 
     | 
    
         
            +
            {
         
     | 
| 
      
 106 
     | 
    
         
            +
              FILE *stream = arg;
         
     | 
| 
      
 107 
     | 
    
         
            +
              rtree_id_t id = branch_get_id(branch);
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
              fprintf(stream, "%li", (long int)id);
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
              const rtree_coord_t *rect = branch_get_rect(branch);
         
     | 
| 
      
 112 
     | 
    
         
            +
              size_t n = state_dims(state);
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
              for (size_t i = 0 ; i < 2 * n ; i++)
         
     | 
| 
      
 115 
     | 
    
         
            +
                fprintf(stream, ",%.*e", PRECISION, (double)rect[i]);
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
              fprintf(stream, "\r\n");
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
              return RTREE_OK;
         
     | 
| 
      
 120 
     | 
    
         
            +
            }
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            #undef PRECISION
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
            static int write_internal_node(const state_t *state,
         
     | 
| 
      
 125 
     | 
    
         
            +
                                           const node_t *node,
         
     | 
| 
      
 126 
     | 
    
         
            +
                                           FILE *stream)
         
     | 
| 
      
 127 
     | 
    
         
            +
            {
         
     | 
| 
      
 128 
     | 
    
         
            +
              return node_branch_each(state, node, write_internal_branch, stream);
         
     | 
| 
      
 129 
     | 
    
         
            +
            }
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            static int write_leaf_node(const state_t *state,
         
     | 
| 
      
 132 
     | 
    
         
            +
                                       const node_t *node,
         
     | 
| 
      
 133 
     | 
    
         
            +
                                       FILE *stream)
         
     | 
| 
      
 134 
     | 
    
         
            +
            {
         
     | 
| 
      
 135 
     | 
    
         
            +
              return node_branch_each(state, node, write_leaf_branch, stream);
         
     | 
| 
      
 136 
     | 
    
         
            +
            }
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            static int write_node(const state_t *state,
         
     | 
| 
      
 139 
     | 
    
         
            +
                                  const node_t *node,
         
     | 
| 
      
 140 
     | 
    
         
            +
                                  FILE *stream)
         
     | 
| 
      
 141 
     | 
    
         
            +
            {
         
     | 
| 
      
 142 
     | 
    
         
            +
              int err;
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
              if (node_level(node) > 0)
         
     | 
| 
      
 145 
     | 
    
         
            +
                err = write_internal_node(state, node, stream);
         
     | 
| 
      
 146 
     | 
    
         
            +
              else
         
     | 
| 
      
 147 
     | 
    
         
            +
                err = write_leaf_node(state, node, stream);
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
              return err;
         
     | 
| 
      
 150 
     | 
    
         
            +
            }
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
            int csv_rtree_write(const rtree_t *rtree, FILE *stream)
         
     | 
| 
      
 153 
     | 
    
         
            +
            {
         
     | 
| 
      
 154 
     | 
    
         
            +
              if ((rtree == NULL) || (stream == NULL))
         
     | 
| 
      
 155 
     | 
    
         
            +
                return RTREE_ERR_INVAL;
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
              return write_node(rtree->state, rtree->root, stream);
         
     | 
| 
      
 158 
     | 
    
         
            +
            }
         
     | 
    
        data/ext/rtree/lib/private/csv.h
    CHANGED
    
    
    
        data/ext/rtree/lib/rtree-base.c
    CHANGED
    
    | 
         @@ -104,9 +104,9 @@ void rtree_destroy(rtree_t *rtree) 
     | 
|
| 
       104 
104 
     | 
    
         
             
              free(rtree);
         
     | 
| 
       105 
105 
     | 
    
         
             
            }
         
     | 
| 
       106 
106 
     | 
    
         | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
      
 107 
     | 
    
         
            +
            int rtree_csv_write(const rtree_t *rtree, FILE *stream)
         
     | 
| 
       108 
108 
     | 
    
         
             
            {
         
     | 
| 
       109 
     | 
    
         
            -
              return  
     | 
| 
      
 109 
     | 
    
         
            +
              return csv_rtree_write(rtree, stream);
         
     | 
| 
       110 
110 
     | 
    
         
             
            }
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
112 
     | 
    
         
             
            rtree_t* rtree_csv_read(FILE *stream, size_t dim, state_flags_t flags)
         
     | 
| 
         @@ -182,6 +182,11 @@ const char* rtree_strerror(int err) 
     | 
|
| 
       182 
182 
     | 
    
         
             
              return strerror_rtree(err);
         
     | 
| 
       183 
183 
     | 
    
         
             
            }
         
     | 
| 
       184 
184 
     | 
    
         | 
| 
      
 185 
     | 
    
         
            +
            rtree_height_t rtree_height(const rtree_t *rtree)
         
     | 
| 
      
 186 
     | 
    
         
            +
            {
         
     | 
| 
      
 187 
     | 
    
         
            +
              return node_height(rtree->state, rtree->root);
         
     | 
| 
      
 188 
     | 
    
         
            +
            }
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
       185 
190 
     | 
    
         
             
            size_t rtree_bytes(const rtree_t *rtree)
         
     | 
| 
       186 
191 
     | 
    
         
             
            {
         
     | 
| 
       187 
192 
     | 
    
         
             
              if (rtree == NULL)
         
     | 
| 
         @@ -255,3 +260,11 @@ bool rtree_empty(const rtree_t *rtree) 
     | 
|
| 
       255 
260 
     | 
    
         
             
                (rtree == NULL) ||
         
     | 
| 
       256 
261 
     | 
    
         
             
                (! node_nonempty(rtree->state, rtree->root));
         
     | 
| 
       257 
262 
     | 
    
         
             
            }
         
     | 
| 
      
 263 
     | 
    
         
            +
             
     | 
| 
      
 264 
     | 
    
         
            +
            int rtree_envelope(const rtree_t *rtree, rtree_coord_t *rect)
         
     | 
| 
      
 265 
     | 
    
         
            +
            {
         
     | 
| 
      
 266 
     | 
    
         
            +
              if (rtree_empty(rtree))
         
     | 
| 
      
 267 
     | 
    
         
            +
                return 1;
         
     | 
| 
      
 268 
     | 
    
         
            +
              else
         
     | 
| 
      
 269 
     | 
    
         
            +
                return node_envelope(rtree->state, rtree->root, rect);
         
     | 
| 
      
 270 
     | 
    
         
            +
            }
         
     | 
    
        data/ext/rtree/lib/rtree.h
    CHANGED
    
    | 
         @@ -34,6 +34,7 @@ int rtree_search(const rtree_t*, const rtree_coord_t*, rtree_search_t*, void*); 
     | 
|
| 
       34 
34 
     | 
    
         
             
            int rtree_add_rect(rtree_t*, rtree_id_t, rtree_coord_t*);
         
     | 
| 
       35 
35 
     | 
    
         
             
            int rtree_update(rtree_t*, rtree_update_t*, void*);
         
     | 
| 
       36 
36 
     | 
    
         
             
            bool rtree_identical(const rtree_t*, const rtree_t*);
         
     | 
| 
      
 37 
     | 
    
         
            +
            int rtree_csv_write(const rtree_t*, FILE*);
         
     | 
| 
       37 
38 
     | 
    
         
             
            rtree_t* rtree_csv_read(FILE*, size_t, state_flags_t);
         
     | 
| 
       38 
39 
     | 
    
         
             
            int rtree_json_write(const rtree_t*, FILE*);
         
     | 
| 
       39 
40 
     | 
    
         
             
            rtree_t* rtree_json_read(FILE*);
         
     | 
| 
         @@ -50,6 +51,7 @@ size_t rtree_branch_size(const rtree_t*); 
     | 
|
| 
       50 
51 
     | 
    
         
             
            size_t rtree_branching_factor(const rtree_t*);
         
     | 
| 
       51 
52 
     | 
    
         
             
            double rtree_unit_sphere_volume(const rtree_t*);
         
     | 
| 
       52 
53 
     | 
    
         
             
            bool rtree_empty(const rtree_t*);
         
     | 
| 
      
 54 
     | 
    
         
            +
            int rtree_envelope(const rtree_t*, rtree_coord_t*);
         
     | 
| 
       53 
55 
     | 
    
         | 
| 
       54 
56 
     | 
    
         
             
            #ifdef __cplusplus
         
     | 
| 
       55 
57 
     | 
    
         
             
            }
         
     | 
    
        data/ext/rtree/rtree.c
    CHANGED
    
    | 
         @@ -281,14 +281,19 @@ static VALUE serialise(VALUE self, VALUE io_obj, serialise_t *f) 
     | 
|
| 
       281 
281 
     | 
    
         
             
              return self;
         
     | 
| 
       282 
282 
     | 
    
         
             
            }
         
     | 
| 
       283 
283 
     | 
    
         | 
| 
       284 
     | 
    
         
            -
            static VALUE  
     | 
| 
      
 284 
     | 
    
         
            +
            static VALUE rt_bsrt_write(VALUE self, VALUE io_obj)
         
     | 
| 
       285 
285 
     | 
    
         
             
            {
         
     | 
| 
       286 
     | 
    
         
            -
              return serialise(self, io_obj,  
     | 
| 
      
 286 
     | 
    
         
            +
              return serialise(self, io_obj, rtree_bsrt_write);
         
     | 
| 
       287 
287 
     | 
    
         
             
            }
         
     | 
| 
       288 
288 
     | 
    
         | 
| 
       289 
     | 
    
         
            -
            static VALUE  
     | 
| 
      
 289 
     | 
    
         
            +
            static VALUE rt_csv_write(VALUE self, VALUE io_obj)
         
     | 
| 
       290 
290 
     | 
    
         
             
            {
         
     | 
| 
       291 
     | 
    
         
            -
              return serialise(self, io_obj,  
     | 
| 
      
 291 
     | 
    
         
            +
              return serialise(self, io_obj, rtree_csv_write);
         
     | 
| 
      
 292 
     | 
    
         
            +
            }
         
     | 
| 
      
 293 
     | 
    
         
            +
             
     | 
| 
      
 294 
     | 
    
         
            +
            static VALUE rt_json_write(VALUE self, VALUE io_obj)
         
     | 
| 
      
 295 
     | 
    
         
            +
            {
         
     | 
| 
      
 296 
     | 
    
         
            +
              return serialise(self, io_obj, rtree_json_write);
         
     | 
| 
       292 
297 
     | 
    
         
             
            }
         
     | 
| 
       293 
298 
     | 
    
         | 
| 
       294 
299 
     | 
    
         
             
            static VALUE rt_identical(VALUE self, VALUE other)
         
     | 
| 
         @@ -373,6 +378,28 @@ static VALUE rt_size(VALUE self) 
     | 
|
| 
       373 
378 
     | 
    
         
             
              return INT2NUM(rtree_bytes(rtree));
         
     | 
| 
       374 
379 
     | 
    
         
             
            }
         
     | 
| 
       375 
380 
     | 
    
         | 
| 
      
 381 
     | 
    
         
            +
            static VALUE rt_envelope(VALUE self)
         
     | 
| 
      
 382 
     | 
    
         
            +
            {
         
     | 
| 
      
 383 
     | 
    
         
            +
              rtree_t *rtree;
         
     | 
| 
      
 384 
     | 
    
         
            +
              TypedData_Get_Struct(self, rtree_t, &rtree_type, rtree);
         
     | 
| 
      
 385 
     | 
    
         
            +
             
     | 
| 
      
 386 
     | 
    
         
            +
              if (rtree_empty(rtree))
         
     | 
| 
      
 387 
     | 
    
         
            +
                return Qnil;
         
     | 
| 
      
 388 
     | 
    
         
            +
             
     | 
| 
      
 389 
     | 
    
         
            +
              size_t n = 2 * rtree_dims(rtree);
         
     | 
| 
      
 390 
     | 
    
         
            +
              double u[n];
         
     | 
| 
      
 391 
     | 
    
         
            +
             
     | 
| 
      
 392 
     | 
    
         
            +
              if (rtree_envelope(rtree, u) != 0)
         
     | 
| 
      
 393 
     | 
    
         
            +
                rb_sys_fail(__func__);
         
     | 
| 
      
 394 
     | 
    
         
            +
             
     | 
| 
      
 395 
     | 
    
         
            +
              VALUE v = rb_ary_new_capa(n);
         
     | 
| 
      
 396 
     | 
    
         
            +
             
     | 
| 
      
 397 
     | 
    
         
            +
              for (size_t i = 0 ; i < n ; i++)
         
     | 
| 
      
 398 
     | 
    
         
            +
                rb_ary_store(v, i, DBL2NUM(u[i]));
         
     | 
| 
      
 399 
     | 
    
         
            +
             
     | 
| 
      
 400 
     | 
    
         
            +
              return v;
         
     | 
| 
      
 401 
     | 
    
         
            +
            }
         
     | 
| 
      
 402 
     | 
    
         
            +
             
     | 
| 
       376 
403 
     | 
    
         
             
            static VALUE rt_version(VALUE self)
         
     | 
| 
       377 
404 
     | 
    
         
             
            {
         
     | 
| 
       378 
405 
     | 
    
         
             
              return rb_str_new_cstr(rtree_package_version);
         
     | 
| 
         @@ -518,11 +545,13 @@ void Init_rtree(void) 
     | 
|
| 
       518 
545 
     | 
    
         
             
              rb_define_method(cRTreeBase, "height", rt_height, 0);
         
     | 
| 
       519 
546 
     | 
    
         
             
              rb_define_method(cRTreeBase, "add_rect", rt_add_rect, 2);
         
     | 
| 
       520 
547 
     | 
    
         
             
              rb_define_method(cRTreeBase, "search", rt_search, 1);
         
     | 
| 
       521 
     | 
    
         
            -
              rb_define_method(cRTreeBase, "json_write", rt_json_write, 1);
         
     | 
| 
       522 
548 
     | 
    
         
             
              rb_define_method(cRTreeBase, "bsrt_write", rt_bsrt_write, 1);
         
     | 
| 
      
 549 
     | 
    
         
            +
              rb_define_method(cRTreeBase, "csv_write", rt_csv_write, 1);
         
     | 
| 
      
 550 
     | 
    
         
            +
              rb_define_method(cRTreeBase, "json_write", rt_json_write, 1);
         
     | 
| 
       523 
551 
     | 
    
         
             
              rb_define_method(cRTreeBase, "eq?", rt_identical, 1);
         
     | 
| 
       524 
552 
     | 
    
         
             
              rb_define_method(cRTreeBase, "dim", rt_dim, 0);
         
     | 
| 
       525 
553 
     | 
    
         
             
              rb_define_method(cRTreeBase, "size", rt_size, 0);
         
     | 
| 
      
 554 
     | 
    
         
            +
              rb_define_method(cRTreeBase, "envelope", rt_envelope, 0);
         
     | 
| 
       526 
555 
     | 
    
         
             
              rb_define_method(cRTreeBase, "page_size", rt_page_size, 0);
         
     | 
| 
       527 
556 
     | 
    
         
             
              rb_define_method(cRTreeBase, "node_size", rt_node_size, 0);
         
     | 
| 
       528 
557 
     | 
    
         
             
              rb_define_method(cRTreeBase, "rect_size", rt_rect_size, 0);
         
     | 
    
        data/lib/rtree.rb
    CHANGED
    
    | 
         @@ -386,36 +386,40 @@ class RTree < RTreeBase 
     | 
|
| 
       386 
386 
     | 
    
         
             
                super
         
     | 
| 
       387 
387 
     | 
    
         
             
              end
         
     | 
| 
       388 
388 
     | 
    
         | 
| 
       389 
     | 
    
         
            -
              # Serialise to  
     | 
| 
      
 389 
     | 
    
         
            +
              # Serialise to BSRT (binary serialised R-tree)
         
     | 
| 
       390 
390 
     | 
    
         
             
              # @param io_arg [String|IO] a path or writable stream
         
     | 
| 
       391 
391 
     | 
    
         
             
              # @return [self]
         
     | 
| 
       392 
     | 
    
         
            -
              # @see . 
     | 
| 
      
 392 
     | 
    
         
            +
              # @see .bsrt_read
         
     | 
| 
       393 
393 
     | 
    
         
             
              # @example Write to file
         
     | 
| 
       394 
     | 
    
         
            -
              #   rtree. 
     | 
| 
      
 394 
     | 
    
         
            +
              #   rtree.bsrt_write('rtree.bsrt')
         
     | 
| 
       395 
395 
     | 
    
         
             
              #
         
     | 
| 
       396 
     | 
    
         
            -
              def  
     | 
| 
       397 
     | 
    
         
            -
                RTree::IOUtil.io_with_mode(io_arg, ' 
     | 
| 
      
 396 
     | 
    
         
            +
              def bsrt_write(io_arg)
         
     | 
| 
      
 397 
     | 
    
         
            +
                RTree::IOUtil.io_with_mode(io_arg, 'wb') { |io| super(io) }
         
     | 
| 
       398 
398 
     | 
    
         
             
                self
         
     | 
| 
       399 
399 
     | 
    
         
             
              end
         
     | 
| 
       400 
400 
     | 
    
         | 
| 
       401 
     | 
    
         
            -
              # Serialise to  
     | 
| 
      
 401 
     | 
    
         
            +
              # Serialise to CSV
         
     | 
| 
       402 
402 
     | 
    
         
             
              # @param io_arg [String|IO] a path or writable stream
         
     | 
| 
       403 
403 
     | 
    
         
             
              # @return [self]
         
     | 
| 
       404 
     | 
    
         
            -
              # @see . 
     | 
| 
      
 404 
     | 
    
         
            +
              # @see .csv_read
         
     | 
| 
       405 
405 
     | 
    
         
             
              # @example Write to file
         
     | 
| 
       406 
     | 
    
         
            -
              #   rtree. 
     | 
| 
      
 406 
     | 
    
         
            +
              #   rtree.csv_write('rtree.csv')
         
     | 
| 
       407 
407 
     | 
    
         
             
              #
         
     | 
| 
       408 
     | 
    
         
            -
              def  
     | 
| 
      
 408 
     | 
    
         
            +
              def csv_write(io_arg)
         
     | 
| 
       409 
409 
     | 
    
         
             
                RTree::IOUtil.io_with_mode(io_arg, 'wb') { |io| super(io) }
         
     | 
| 
       410 
410 
     | 
    
         
             
                self
         
     | 
| 
       411 
411 
     | 
    
         
             
              end
         
     | 
| 
       412 
412 
     | 
    
         | 
| 
       413 
     | 
    
         
            -
              # Serialise to JSON 
     | 
| 
       414 
     | 
    
         
            -
              # @ 
     | 
| 
       415 
     | 
    
         
            -
              # @ 
     | 
| 
      
 413 
     | 
    
         
            +
              # Serialise to JSON
         
     | 
| 
      
 414 
     | 
    
         
            +
              # @param io_arg [String|IO] a path or writable stream
         
     | 
| 
      
 415 
     | 
    
         
            +
              # @return [self]
         
     | 
| 
      
 416 
     | 
    
         
            +
              # @see .json_read
         
     | 
| 
      
 417 
     | 
    
         
            +
              # @example Write to file
         
     | 
| 
      
 418 
     | 
    
         
            +
              #   rtree.json_write('rtree.json')
         
     | 
| 
       416 
419 
     | 
    
         
             
              #
         
     | 
| 
       417 
     | 
    
         
            -
              def  
     | 
| 
       418 
     | 
    
         
            -
                 
     | 
| 
      
 420 
     | 
    
         
            +
              def json_write(io_arg)
         
     | 
| 
      
 421 
     | 
    
         
            +
                RTree::IOUtil.io_with_mode(io_arg, 'w') { |io| super(io) }
         
     | 
| 
      
 422 
     | 
    
         
            +
                self
         
     | 
| 
       419 
423 
     | 
    
         
             
              end
         
     | 
| 
       420 
424 
     | 
    
         | 
| 
       421 
425 
     | 
    
         
             
              # Serialise to BSRT string
         
     | 
| 
         @@ -426,6 +430,22 @@ class RTree < RTreeBase 
     | 
|
| 
       426 
430 
     | 
    
         
             
                serialise(Encoding::BINARY) { |io| bsrt_write(io) }
         
     | 
| 
       427 
431 
     | 
    
         
             
              end
         
     | 
| 
       428 
432 
     | 
    
         | 
| 
      
 433 
     | 
    
         
            +
              # Serialise to CSV string
         
     | 
| 
      
 434 
     | 
    
         
            +
              # @return [String] the CSV
         
     | 
| 
      
 435 
     | 
    
         
            +
              # @see .from_csv
         
     | 
| 
      
 436 
     | 
    
         
            +
              #
         
     | 
| 
      
 437 
     | 
    
         
            +
              def to_csv
         
     | 
| 
      
 438 
     | 
    
         
            +
                serialise(Encoding::BINARY) { |io| csv_write(io) }
         
     | 
| 
      
 439 
     | 
    
         
            +
              end
         
     | 
| 
      
 440 
     | 
    
         
            +
             
     | 
| 
      
 441 
     | 
    
         
            +
              # Serialise to JSON string
         
     | 
| 
      
 442 
     | 
    
         
            +
              # @return [String] the UTF-8 encoded JSON
         
     | 
| 
      
 443 
     | 
    
         
            +
              # @see .from_json
         
     | 
| 
      
 444 
     | 
    
         
            +
              #
         
     | 
| 
      
 445 
     | 
    
         
            +
              def to_json
         
     | 
| 
      
 446 
     | 
    
         
            +
                serialise(Encoding::UTF_8) { |io| json_write(io) }
         
     | 
| 
      
 447 
     | 
    
         
            +
              end
         
     | 
| 
      
 448 
     | 
    
         
            +
             
     | 
| 
       429 
449 
     | 
    
         
             
              # The RTree structure in hash form
         
     | 
| 
       430 
450 
     | 
    
         
             
              # @return [Hash]
         
     | 
| 
       431 
451 
     | 
    
         
             
              #
         
     | 
| 
         @@ -462,6 +482,15 @@ class RTree < RTreeBase 
     | 
|
| 
       462 
482 
     | 
    
         
             
                super
         
     | 
| 
       463 
483 
     | 
    
         
             
              end
         
     | 
| 
       464 
484 
     | 
    
         | 
| 
      
 485 
     | 
    
         
            +
              # @return [Array[float]] the bounding rectangle
         
     | 
| 
      
 486 
     | 
    
         
            +
              # @note Ruturns the bounding rectangle (in the same format
         
     | 
| 
      
 487 
     | 
    
         
            +
              #   as the rectangle input) for all rectangles in the tree.
         
     | 
| 
      
 488 
     | 
    
         
            +
              #   In the case that the input is empty, returns nil.
         
     | 
| 
      
 489 
     | 
    
         
            +
              #
         
     | 
| 
      
 490 
     | 
    
         
            +
              def envelope
         
     | 
| 
      
 491 
     | 
    
         
            +
                super
         
     | 
| 
      
 492 
     | 
    
         
            +
              end
         
     | 
| 
      
 493 
     | 
    
         
            +
             
     | 
| 
       465 
494 
     | 
    
         
             
              # @return [Integer] the bytes in a page of memory
         
     | 
| 
       466 
495 
     | 
    
         
             
              #
         
     | 
| 
       467 
496 
     | 
    
         
             
              def page_size
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: librtree
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.6
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - J.J. Green
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2024- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-04-07 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     |