Tôi đã đăng trong diễn đàn arcgis nhưng không bao giờ có câu trả lời. Bất cứ ai có thể cho tôi biết làm thế nào để giải quyết điều này?
Giả sử bạn có hồ sơ theo dõi xe từ ngày 1 tháng 10 đến ngày 31 tháng 12 với thông tin tốc độ gió. Tất cả dữ liệu được lưu trong cơ sở dữ liệu địa lý (sde-sqlserver) và trong ArcGIS Server 10.1 dưới dạng lớp tính năng. Một thanh trượt thời gian hiển thị các vị trí của một chiếc xe với tốc độ gió.
Khi người dùng thay đổi phạm vi thời gian (ví dụ: Oct.2 - Oct.4), tác vụ truy vấn đầu tiên (tính) sẽ tính số lượng tính năng trong phạm vi. Thường có hơn 1000 kết quả thậm chí hai ngày (ví dụ: 1750) (mặc dù tôi không muốn thay đổi giới hạn này).
Tôi đã sử dụng một tác vụ truy vấn khác (execeforIds) để giữ tất cả các bản ghi trong tay nhưng giảm số lượng với mô-đun (1/10) vẫn còn đủ để tạo một biểu đồ đẹp cho xu hướng chung của tốc độ gió. Tuy nhiên, tôi cũng muốn cung cấp tùy chọn tải xuống toàn bộ tập dữ liệu trong csv (trong trường hợp này là 1750 hàng)
Ở đây, tôi đã sử dụng findtask để lấy dữ liệu thuộc tính trong phạm vi thời gian.
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 không được xác định tại console.log2, mặc dù tất cả csvdata (trong console.log1) hiển thị dữ liệu trong bảng điều khiển. Vấn đề có vẻ như thời gian của find.execute đã hoàn tất, vì vậy tôi đã thêm setTimeout.
Điều này có vẻ hiệu quả nhưng khi tôi tăng phạm vi thời gian, nó sẽ không rõ ràng.
Có cách nào để giữ tất cả các bản ghi (1000 - 200.000) trong một khoảng thời gian cụ thể và xuất sang csv không?