сохранение изображений для встроенного картографического приложения

StackOverflow https://stackoverflow.com/questions/2261927

Вопрос

У меня есть растеризованная карта в разных разрешениях, которая состоит из изображений 15K/60K/240K, каждое размером 256x256, и у меня есть приложение .NET Compact Framework, которое может отображать карту.Но копирование 300 тысяч файлов на SD-карту занимает много времени, примерно 35-60 часов (я скопировал всего 15 тысяч, и это заняло ~ 2-2,5 часа), и я боюсь, что это испортит файловую систему FAT16 (аппаратно не поддерживает FAT32, поэтому я не могу переключить fat16 на fat32) или после копирования все будет работать очень медленно.

Все картинки хранятся так:/mapdata/res{разрешение}/x{x_coord}/y{y_coord}.png

Может ли мне помочь встраиваемая БД?Или мне следует упаковать изображения в zip-архив, например /storage/res1/x12.zip, со всеми заархивированными y*.png?Или мне просто нужно создать ISO-образ со всеми этими картинками и просто скопировать ISO на SD побайтно?

Это было полезно?

Решение

FAT16 ограничена 65 535 кластерами, и для каждого файла требуется минимум один кластер, что исключает использование только плоских файлов.

Я предполагаю, что ваши фрагменты карты должны быть доступны только для чтения, поэтому я бы пошел по пути создания собственного формата файла для ваших фрагментов, которыми вы управляете (это также может иметь дополнительное преимущество, требующее немного больше усилий для разборки, если оно попало не в те руки).

Может быть, что-то вроде:

  • Какой-то заголовок, чтобы вы знали, что это ваш файл.
  • Кортеж, который содержит смещение от начала файла до плитки для «нулевого» уровня масштабирования и его длину в байтах.
  • Четыре кортежа для смещений и длин фрагментов для уровня масштабирования «1».
  • ...
  • 4^(n) кортежи для смещений и длин плиток при уровне масштабирования «n»
  • Фактические данные плитки.

Было бы относительно легко найти смещения для данного фрагмента и переопределить поток, чтобы сделать «правильный поступок» при сообщении о конце потока - вы даже можете использовать то же смещение для изображений «без фрагментов», если вы кодируете территория, которая не вписывается в квадрат (как, скажем, Великобритания)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top