存储嵌入式地图应用程序的图像

时间:2010-02-14 17:07:33

标签: c# compact-framework filesystems embedded-database

我有不同分辨率的光栅化地图,包括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这样的所有y * .png存档的邮件吗?或者我应该用所有这些图片创建ISO图像,然后将iso复制到SD字节到字节?

1 个答案:

答案 0 :(得分:1)

FAT16仅限于65,535个群集,每个文件至少需要一个群集,这将排除使用平面文件。

我假设你的地图图块是只读的,所以我会为你控制的图块创建一个自定义文件格式的路径(也可能有额外的好处,需要更多的努力来采取除此之外,它应该落入错误的手中。)

可能有以下几点:

  • 某种标题,所以你知道它是你的文件。
  • 一个元组,它包含从文件开头到“零”缩放级别的磁贴的偏移量,以及以字节为单位的长度
  • 用于缩放级别“1”
  • 的切片的偏移和长度的四个元组
  • ...
  • 4 ^(n)元组,用于缩放级别“n”的瓷砖的偏移量和长度
  • 实际的图块数据。

查找给定图块的偏移量会相对轻量级,并且在报告Stream的结尾时覆盖Stream以执行“正确的操作” - 您甚至可以使用相同的偏移量来显示“无图块”图片你编码的区域不能整齐地放入一个正方形(比如说,英国)