Я создаю приложение, где я визуализирую довольно большой набор данных (~ 5 миллионов полигонов), равномерно распределенных по географической области.Large MapKit vector overlay - advice
Примерно 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 не оптимален для выполнения запросов функций в определенных регионах?
Каковы некоторые умные способы хранения этого набора данных в комплекте? Есть ли какие-то конкретные технологии, которые вы предлагаете мне попробовать?
Кажется, лучший способ пойти, спасибо! – erik