我可以在python中的pickle文件几何体列表中保存几何体索引吗
我通过Rasterio读取了GeoTiff填充的简单高程数据。现在我想使用Shapely的STR树与其他点和线相交,最有效的方法是将几何图形的高程属性列表存储为pickle,并直接加载它们,而不是加载和转换pandas geoDataframe(或各种类似选项)的pickle的csv 如果I我可以在python中的pickle文件几何体列表中保存几何体索引吗,python,pickle,geopandas,Python,Pickle,Geopandas,我通过Rasterio读取了GeoTiff填充的简单高程数据。现在我想使用Shapely的STR树与其他点和线相交,最有效的方法是将几何图形的高程属性列表存储为pickle,并直接加载它们,而不是加载和转换pandas geoDataframe(或各种类似选项)的pickle的csv 如果Iprint(gridGeoms[I].idx)在这里,我将根据需要获得几何体的高程I。但是如果我加载'thisgometrylist.pkl'文件并执行相同的操作,我会得到一个'Polygon'对象没有属性“
print(gridGeoms[I].idx)
在这里,我将根据需要获得几何体的高程I
。但是如果我加载'thisgometrylist.pkl'
文件并执行相同的操作,我会得到一个'Polygon'对象没有属性“idx”
错误。我认为pickle将存储gridGeoms的二进制数据,其中包括添加的.idx
属性
是否有保存.idx
属性的酸洗选项?或者是否有其他格式可以保存此信息并同样有效?
(注意:我尝试了joblib,但它也没有保留
.idx
数据)我建议创建另一个列表,在其中存储idx并将其另存为单独的pickle,但我仍然需要遍历这两个列表并将索引分配给几何体,这是我试图避免的步骤,以加快计算速度“从相交轴网获取高程”“ProcessPolygon类是您的代码吗?这个变量有什么特别之处吗?例如,它是一个财产吗。pickle存储数据的方式似乎有一些限制。它是Shapely Polygon类。我发现可以添加.idx
属性来解决Githib上的某个地方的问题,但是我再也找不到它了,也没有在文档中看到任何支持它的内容。我同意pickle存储数据的方式必须有一些限制,但我不知道它为什么不存储此数据,或者如何保存。我建议创建另一个列表,在其中存储idx并将其保存为单独的pickle,但我仍然需要遍历这两个列表并将索引分配给几何体,为了加快“从相交网格获取高程”过程,我试图避免的步骤是哪一步?该多边形类是您的代码吗?这个变量有什么特别之处吗?例如,它是一个财产吗。pickle存储数据的方式似乎有一些限制。它是Shapely Polygon类。我发现可以添加.idx
属性来解决Githib上的某个地方的问题,但是我再也找不到它了,也没有在文档中看到任何支持它的内容。我同意pickle存储数据的方式必须有一些限制,但我不知道它为什么不存储这些数据,或者如何保存这些数据。
def openPickleFile(filePathName):
with open (filePathName, 'rb') as fp:
return pickle.load(fp)
def writePickleFile(theData,filePathName):
with open(filePathName, 'wb') as fp:
pickle.dump(theData, fp)
thisData = openPickleFile('thisDataFrame.pkl')
gridGeoms = list(thisData['geometry'])
gridValues = list(thisData['elevation'])
for index, geom in enumerate(gridGeoms):
gridGeoms[index].idx = gridValues[index]
writePickleFile(gridGeoms, 'thisGeometryList.pkl')