我正在构建一个应用程序,用于可视化在地理区域内均匀分布的相当大的数据集(约500万个多边形)。
在适当的缩放级别一次显示大约2000个多边形。缩小时,数据只是隐藏。
为了加快多边形的绘制,我实现了一个R * -tree,它返回与所讨论区域重叠的多边形。
-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
MKCoordinateRegion region = MKCoordinateRegionForMapRect(mapRect);
NSArray *polygons = [[Polygons sharedPolygons] polygonsInRegion:region];
for(Polygon *p in polygons) {
// Draw polygon
}
}
一旦将多边形加载到内存中,实际的排序似乎可通过获取和存储用户看到的多边形到R树中来解决。用户只对附近或特定区域的功能感兴趣。
我已经尝试过SQLite,但在这种情况下似乎不是正确的选择,考虑到有问题的数据集很快变得相当大(> 1gb)并且SQLite对于查询特定区域内的功能可能不是最佳的?
我可以将这个数据集存储在捆绑包中的哪些聪明方法? 您建议我尝试使用哪些特定技术吗?