1

我有不同分辨率的栅格化地图,其中包含 15K/60K/240K 图片,每个图片大小为 256x256,并且我有可以显示地图的 .NET Compact Framework 应用程序。但是将 300k 文件复制到 SD 卡需要很长时间,大约需要 35-60 小时(我只复制了 15K,大约需要 2 到 2.5 小时),而且我担心它会破坏 FAT16 文件系统(硬件不支持FAT32,所以我不能将 fat16 切换到 fat32)或者复制后一切都会很慢。

所有图片都是这样存储的:/mapdata/res{resolution}/x{x_coord}/y{y_coord}.png

任何可嵌入的数据库都可以帮助我吗?或者我应该将图像打包成像 /storage/res1/x12.zip 这样的 zip 文件,并存档所有 y*.png?或者我应该用所有这些图片创建 ISO 映像,然后将 iso 逐字节复制到 SD 中?

4

1 回答 1

1

FAT16 限制为 65,535 个簇,每个文件至少需要一个簇,这将排除仅使用平面文件的可能性。

我假设您的地图图块是只读的,所以我会采取一种方法为您控制的图块创建自定义文件格式(可能还需要更多的努力来拆开,应该它落入了错误的手中)。

也许是这样的:

  • 某种标题,所以你知道这是你的文件。
  • 一个元组,其中包含从文件开头到“零”缩放级别的平铺的偏移量,其长度以字节为单位
  • 缩放级别“1”的瓦片的偏移量和长度的四个元组
  • ...
  • 4^(n) 个元组,用于缩放级别“n”的瓦片的偏移量和长度
  • 实际的瓦片数据。

查找给定图块的偏移量会相对轻量级,并在报告流结束时覆盖流以执行“正确的事情” - 如果您正在编码,您甚至可以对“无图块”图片使用相同的偏移量不完全适合正方形的区域(例如,英国)

于 2010-02-15T13:59:39.487 回答