2010-02-14 34 views
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

任何嵌入式數據庫能幫我嗎?或者我應該將圖像打包成zip文件,例如/storage/res1/x12.zip,並將所有y * .png存檔?或者我應該創建所有這些圖片的ISO-圖像,只需複製iso到SD字節到字節?

+0

所有圖像的文件總大小是多少?你是否將它們複製到SD卡中(通過USB連接),還是使用讀卡器? – 2010-02-15 09:29:45

+0

總大小爲1200MB。我嘗試使用外部讀卡器,內置讀卡器(在筆記本電腦中)複製它們,並使用通過USB – poiuyttr 2010-02-15 10:15:28

+0

連接的設備,即使使用速度最慢的SD卡也不應超過25分鐘。也許這是大量的小文件是問題。嘗試創建一個ZIP文件,並查看該副本是否更快。 – 2010-02-15 10:43:21

回答

1

FAT16限於65,535個集羣,並且每個文件至少需要一個集羣,這將排除使用平面文件。

我假設你的地圖切片是隻讀的,所以我會採取一種爲你控制的切片創建一個自定義文件格式的路線(也可能有額外的好處,需要更多的努力來拆散,應該落入錯誤的手中)。

也許東西沿着線:

  • 某種類型的報頭,讓你知道這是你的文件。
  • 一個元組,其中包含從文件開始到「零」縮放級別的平鋪的偏移量,它的長度以字節爲單位
  • 四個元組的縮放級別爲「1」的平鋪的偏移量和長度
  • ...
  • 4 ^(n)的元組的偏移和長度爲在縮放級別瓦片的 「n」
  • 實際瓦片的數據。

查找給定圖塊的偏移量並重寫Stream以在報告Stream結束時執行「正確的操作」時,您可以使用相同的偏移量「no tile」 「圖片你應該編碼一個不適合整齊地放入方塊的區域(例如,英國)

+0

這個想法還沒有跨過我的腦海。看起來像解決方案。謝謝! – poiuyttr 2010-02-15 14:51:49