2017-09-27 11 views
1

Pickling Rtree는 ctypes 래퍼이므로 직관적이지 않습니다. 0 초에 This comment 해당 가정합니다.Rtree 공간 인덱스를 제거 할 수 있습니까?

그러나 (많은) 오래된 @sgillies post (이 lib의 작성자)의 주석 섹션에서 그는 실제로 그것이 가능하다고 제안합니다. 내가 로컬이 단계를 다시 할 때

그러나, 결과는 그렇지 제안 :

>>> idx = rtree.index.Index() 
>>> idx.insert(10, (1,2,3,4)) 
>>> list(idx.intersection((0,0,5,5))) 
# [10] 
>>> f = open('foo.p', 'wb') 
>>> pickle.dump(idx, f) 
>>> a = pickle.load(open("foo.p", "rb")) 
>>> a.get_bounds() 
# [1.7976931348623157e+308, 1.7976931348623157e+308, -1.7976931348623157e+308, -1.7976931348623157e+308]] 
>>> list(a.intersection((0,0,5,5))) 
# [] 

질문 : 내가 공간 인덱스의 산세 수 있도록 올바르게 수행에 실패하고 작업이 있습니까? 공간 인덱싱이 가능하다면 올바른 방향으로 나아갈 수 있습니까?

Anecdotally, 나는 산 세척 과정을 통해 성공적으로 GeoPandas.GeoDataFrame.sindex를 전달할 수있었습니다 (Dask.distributed가 수행 한 산세 처리). 나는 cloudpickle 또는 pickle (dep dep. on 상황)을 사용하고 있지만 GeoPandas 측에서는 sindex's SpatialIndex class이 단순히 rtree.index.Index 주위의 래퍼 인 것으로 보입니다. 나는 왜 이것이 그랬는지 이해하는 데 더 깊이 깊이 들어가기를 원하지만, 먼저 다른 사람들이 통찰력을 가지는지보기 위해 여기에서 확인하고 싶었다.

답변