arcgisフォーラムに投稿しましたが、回答がありませんでした。誰もこれを解決する方法を教えてもらえますか?
10月1日から12月31日までの風速情報を含む車両追跡記録があるとします。すべてのデータはジオデータベース(sde-sqlserver)に保存され、フィーチャレイヤーとしてArcGIS Server 10.1に保存されます。タイムスライダーは、車の位置を風速で表示します。
ユーザーが時間範囲(たとえば、10月2日から10月4日)を変更すると、最初のクエリタスク(カウント用)が範囲内のフィーチャの数を計算します。通常、2日(例: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));
console.log2では、csvdataは未定義でしたが、すべてのcsvdata(console.log1内)はコンソールにデータを表示します。この問題は、find.executeのタイミングが完了したように見えるため、setTimeoutを追加しました。
これは動作しているように見えますが、時間範囲を広げると、明らかになりません。
とにかく特定の時間範囲ですべてのレコード(1000〜200,000)を保持し、csvにエクスポートする方法はありますか?