arcgis 포럼에 게시했지만 아무런 대답도 얻지 못했습니다. 누구든지 이것을 해결하는 방법을 말해 줄 수 있습니까?
풍속 정보가있는 차량 추적 기록이 10 월 1 일부터 12 월 31 일로 가정합니다. 모든 데이터는 지오 데이터베이스 (sde-sqlserver)에 저장되고 ArcGIS Server 10.1에 피처 레이어로 저장됩니다. 시간 슬라이더는 풍속이있는 자동차의 위치를 보여줍니다.
사용자가 시간 범위를 변경하면 (예 : 10 월 2 일-10 월 4 일), 첫 번째 쿼리 작업 (카운트)은 범위 내의 피처 수를 계산합니다. 일반적으로 이틀이더라도 1000 개가 넘는 결과가 있습니다 (예 : 1750) (이 제한은 변경하고 싶지 않습니다).
나는 다른 쿼리 작업 (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.log2에 정의되어 있지 않지만 console.log1의 모든 csvdata는 콘솔에 데이터를 표시합니다. 문제는 find.execute의 타이밍이 완료된 것으로 보이므로 setTimeout을 추가했습니다.
이것은 작동하는 것처럼 보이지만 시간 범위를 늘리면 분명히 그렇지 않습니다.
어쨌든 모든 레코드 (1000-200,000)를 특정 시간 범위로 유지하고 CSV로 내보내는 것이 있습니까?