大型MapKit矢量叠加 - 建议

时间:2013-07-30 19:15:21

标签: ios cocoa-touch sqlite gis

我正在构建一个应用程序,用于可视化在地理区域内均匀分布的相当大的数据集(约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对于查询特定区域内的功能可能不是最佳的?

我可以将这个数据集存储在捆绑包中的哪些聪明方法? 您建议我尝试使用哪些特定技术吗?

1 个答案:

答案 0 :(得分:1)

您将无法将整个1 GB数据集加载到内存中。

您应该将数据存储在R-tree in the database中,以便在加载数据时直接进行区域查询。