【发布时间】:2009-12-05 08:20:49
【问题描述】:
我有问题。我有 500k 记录的数据库。每个记录存储纬度、经度、动物种类、观察日期。我必须在 mapkit 视图上方绘制网格(15x10),以显示该网格单元中物种的浓度。每个单元格是 32x32 的盒子。
如果我在运行时计算它会非常慢。 有人知道如何缓存它吗?在内存或数据库中。
数据结构:
观察:
- 纬度
- 经度
- 日期
- 物种
- 其他一些不重要的数据
屏幕示例:
alt text http://img6.imageshack.us/img6/7562/20091204201332.png
每个红色方框显示该区域的物种数量。
我现在使用的代码: 数据 -> 从数据库中选择,都是地图区域内的观察数据
for (int row = 0; row < rows; row++)
{
for (int column = 0; column < columns; column++)
{
speciesPerBox=0;
minG=boxes[row][column].longitude;
if (column!=columns-1) {
maxG=boxes[row][column+1].longitude;
} else {
maxG=buttomRight.longitude;
}
maxL=boxes[row][column].latitude;
if (row!=rows-1) {
minL=boxes[row+1][column].latitude;
} else {
minL=buttomRight.latitude;
}
for (int i=0; i<sightingCount; i++) {
l=data[i].latitude;
g=data[i].longitude;
if (l>=minL&&l<maxL&&g>=minG&&g<maxG) {
for (int j=0; j<speciesPerBox; j++) {
if (speciesCountArray[j]==data[i].specie) {
hasSpecie=YES;
}
}
if (hasSpecie==NO) {
speciesCountArray[speciesPerBox]=data[i].specie;
speciesPerBox++;
}
hasSpecie=NO;
}
}
}
mapData[row][column].count = speciesPerBox;
}
}
【问题讨论】:
-
顺便说一句,您确定您的数据库键适合您的查询吗?