Изображение большого пальца с URL сервера

Кажется, что sel, использующий срез времени в сочетании с method='nearest', просто не поддерживается:

не может использовать аргумент method, если любые индексы являются объектами среза

Это как-то имеет смысл, поскольку выбор nearest для фрагмента кажется немного странным.

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

Быстрый пример с некоторыми данными ERA5:

import xarray as xr

ds1 = xr.open_dataset('20160502_cabauw_model_fc.nc')

# Works:
dsloc1 = ds1.sel(time='2016-05-02 10:00', longitude=4.9, latitude=51.2, method='nearest')

# Doesn't work:
#dsloc2 = ds1.sel(time=slice('2016-05-02 10:00', '2016-05-02 12:00'), longitude=4.9, latitude=51.2, method='nearest')

# Works:
tmp    = ds1.sel(time=slice('2016-05-02 10:00', '2016-05-02 12:00'))
dsloc2 = tmp.sel(longitude=4.9, latitude=51.2, method='nearest')

Это приводит к чему-то вроде:

In [23]: dsloc2
Out[23]: 
<xarray.Dataset>
Dimensions:    (level: 137, time: 3)
Coordinates:
    longitude  float32 4.8
    latitude   float32 51.3
  * level      (level) int32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
  * time       (time) datetime64[ns] 2016-05-02T10:00:00 2016-05-02T11:00:00 ...
Data variables:
    z          (time, level) float32 ...
0
задан rmaddy 19 January 2019 в 16:40
поделиться

2 ответа

Используйте ваш метод в UIThread

DispatchQueue.main.async() {
    // your UI update code
}

Это предотвращает замерзание.

0
ответ дан Arash Etemad 19 January 2019 в 16:40
поделиться

вы можете попробовать, что код может помочь вам

import Foundation
import UIKit
import AVKit

class CommonFunctions {

    static let shared = CommonFunctions()

    typealias ResponseBlock = (_ result: UIImage?) -> Void

    func getVideoThumnail(URLString: String, responseBlock:@escaping ResponseBlock) {
        DispatchQueue.global().async {
            let url = URL(string: URLString)
            let asset = AVAsset(url: url!)
            let assetImgGenerate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset)
            assetImgGenerate.appliesPreferredTrackTransform = true
            let time = CMTimeMake(value: 1, timescale: 2)
            let img = try? assetImgGenerate.copyCGImage(at: time, actualTime: nil)
            if img != nil {
                let frameImg  = UIImage(cgImage: img!)
                DispatchQueue.main.async(execute: {
                    responseBlock(frameImg)
                })
            }else {
                responseBlock(nil)
            }
        }
    }
}

использовать: -

 CommonFunctions.shared.getVideoThumnail(URLString: downloadURL) { (image) in
                                if image != nil {
                                      let thumbimage = image
                                }
                            }
0
ответ дан Sagar Bhut 19 January 2019 в 16:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: