我在arcgis论坛上发布了,但是没有得到任何答案。谁能告诉我如何解决这个问题?
假设您有10月1日至12月31日的车辆追踪记录,其中包含风速信息。所有数据都保存在地理数据库(sde-sqlserver)中,并保存在ArcGIS Server 10.1中作为要素图层。时间滑块以风速显示汽车的位置。
当用户更改时间范围(例如10月2日-10月4日)时,第一个查询任务(用于计数)将计算该范围内的要素数量。即使两天(例如1750),通常也有1000多个结果(不过,我不想更改此限制)。
我使用了另一个查询任务(executeforIds)来保留所有记录,但减少模量(1/10)的数量,该数量仍然足以为风速的总体趋势绘制漂亮的图表。但是,我还想提供一个选项来下载csv中的整个数据集(在这种情况下为1750行)
在这里,我使用findtask来检索时间范围内的属性数据集。
try {
//console.log(app.objIDs);
var attribs;
csvdata = "";
var find = new esri.tasks.FindTask("http://xyz.com/arcgis/rest/services/Realtime/Car_Wind_WM/MapServer");
var params = new esri.tasks.FindParameters();
params.layerIds = [0];
params.searchFields = ["OBJECTID"];
for (var i = 0; i < app.objIDs.length; i++) {
params.searchText = app.objIDs[i];
find.execute(params, function (results) {
attribs = results[0].feature.attributes;
csvdata += attribs.Date_Central + ',' + attribs.Longitude + "," + attribs.Latitude + "," + attribs.windspeed + "\n";
console.log(csvdata); //1
}, function (error) {
alert("Error");
});
}
} catch (error) {
alert("Change the time range first");
}
console.log(csvdata); //2
setTimeout(function () {
formatData(app.csvdata);
}, (3 * 1000));
尽管所有csvdata(在console.log1中)都在console中显示数据,但在console.log2中csvdata是未定义的。问题似乎是find.execute完成的时机,所以我添加了setTimeout。
这似乎可行,但是当我增加时间范围时,显然不会。
是否有将所有记录(1000-200,000)保留在特定时间范围内并导出到csv的方法?