【发布时间】:2016-01-13 21:03:29
【问题描述】:
我正在使用 ArcGIS Runtime SDK for dotNet 10.2.6 进行开发。
我需要在一秒钟内从本地 DTM 文件(TIF 格式)中获取点的高程数据数十次。
我正在使用高程数据来计算观察者视线与地面的交点。 (例如 - 我的相机在某个点,以某个俯仰角看某个方位角,我需要计算它正在看的地面上的点)
我尝试使用识别任务来获取沿视线点的高程数据,但这很慢(每次查询需要 20-40 毫秒,总共需要几秒钟)。
我的识别任务:
IdentifyParameters identifyParams = new IdentifyParameters(mapPoint, m_MapView.Extent, 1, (int)m_MapView.ActualHeight, (int)m_MapView.ActualWidth);
identifyParams.DynamicLayerInfos = m_DynamicMapServiceLayer.DynamicLayerInfos;
identifyParams.ReturnGeometry = false;
identifyParams.SpatialReference = m_MapView.SpatialReference;
identifyParams.LayerOption = LayerOption.Top;
IdentifyResult identifyResult = await identifyTask.ExecuteAsync(identifyParams);
注意: 我尝试使用地理处理器任务来计算 LOS - 这并没有快多少。
有没有更快的方法使用本地栅格 DTM 文件从点(或线)获取高程数据?
【问题讨论】:
-
你有没有想过实际并行运行多个请求?我的印象是您在发送下一个请求之前使用
await来获取每个请求的结果(因此“每个查询需要 20-40 毫秒,总共需要几秒钟”),而您应该能够启动一次请求多个请求,并在它们返回时查看结果。 msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx -
我尝试用 -await Task.WhenAll(tasks) 测量 200 个点,大约需要 6 秒(每个任务约 30 毫秒)。