Рассмотрим запуск expand.grid
для фрейма данных B для всех комбинаций уникальных координат. Затем объединитесь с фреймом данных A:
B_all_combns <- expand.grid(lon = unique(B$lon), lat = unique(B$lat))
A_subset <- merge(A, B_all_combns, by=c("lon", "lat"))
Вдохновленный комментариями я вошел в эту проблему, я решил проблему путем чтения всех байтов в memorystream и использования ее в качестве Sreamsource BitmapImage.
Эти работы отлично:
if (File.Exists(filePath))
{
MemoryStream memoryStream = new MemoryStream();
byte[] fileBytes = File.ReadAllBytes(filePath);
memoryStream.Write(fileBytes, 0, fileBytes.Length);
memoryStream.Position = 0;
image.BeginInit();
image.StreamSource = memoryStream;
if (decodePixelWidth > 0)
image.DecodePixelWidth = decodePixelWidth;
image.EndInit();
}
Добавьте следующую строку к своему коду загрузки:
image.CacheOption = BitmapCacheOption.OnLoad;
Это загрузится открытый файл, считать его в память и закрыть все это во время изображения. EndInit. Значение по умолчанию BitmapCacheOption. Значение по умолчанию имеет нечетное поведение открытия файла, чтения его в память, но еще закрытие его во время изображения. EndInit.
Теперь я не уверен, можно ли к этому относиться BitmapImage, но у меня была очень похожая проблема с сохранением измененного образа в исходный файл в GDI + здесь
Метод загрузки изображения из файла сохраняет блокировку открытой на файле, пока объект изображения не расположен.
Возможно, это - то же самое с bitmapimage.urisource. Не играя вокруг Вас мог скопировать изображение в памяти и расположить оригинал таким образом разблокирование файла?
Установка CacheOption к BitmapCacheOption. OnLoad, не решит Вашу проблему. Я думаю, что существует ошибка, но у меня была та же проблема. Наконец я загрузил свое изображение в поток памяти и расположил BitmapImage прежде, чем сохранить образ в файл.
Вот еще одно решение, основанное на исходном коде загрузки:
var image = new BitmapImage();
image.BeginInit();
// overwrite cache if already exists, to refresh image
image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
// load into memory and unlock file
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = uri;
if (decodePixelWidth > 0) image.DecodePixelWidth = decodePixelWidth;
image.EndInit();