ฉันโพสต์ในฟอรัม arcgis แต่ไม่เคยได้รับคำตอบใด ๆ มีใครบอกวิธีแก้ปัญหานี้ได้บ้าง
สมมติว่าคุณมีบันทึกการติดตามยานพาหนะตั้งแต่วันที่ 1 ตุลาคมถึง 31 ธันวาคมด้วยข้อมูลความเร็วลม ข้อมูลทั้งหมดจะถูกบันทึกในฐานข้อมูลภูมิศาสตร์ (sde-sqlserver) และสูงกว่าใน ArcGIS Server 10.1 เป็นเลเยอร์คุณลักษณะ แถบเลื่อนเวลาแสดงตำแหน่งของรถยนต์ด้วยความเร็วลม
เมื่อผู้ใช้เปลี่ยนช่วงเวลา (เช่น Oct.2 - Oct.4) งานแบบสอบถามแรก (สำหรับการนับ) คำนวณจำนวนของคุณสมบัติภายในช่วง โดยปกติจะมีผลลัพธ์มากกว่า 1,000 รายการถึงสองวัน (เช่น 1750) (ฉันไม่ต้องการเปลี่ยนขีด จำกัด นี้)
ฉันใช้งานแบบสอบถามอื่น (executeforIds) เพื่อเก็บบันทึกทั้งหมดไว้ในมือ แต่ลดจำนวนด้วยโมดูลัส (1/10) ซึ่งยังคงมีจำนวนเพียงพอสำหรับการทำแผนภูมิที่ดีสำหรับแนวโน้มโดยรวมของความเร็วลม อย่างไรก็ตามฉันต้องการให้ตัวเลือกในการดาวน์โหลดชุดข้อมูลทั้งหมดใน csv (ในกรณีนี้คือ 1,750 แถว)
ที่นี่ฉันใช้ 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 แม้ว่า csvdata ทั้งหมด (ใน console.log1) จะแสดงข้อมูลในคอนโซล ดูเหมือนว่าปัญหาเวลาในการค้นหาดำเนินการเสร็จสิ้นดังนั้นฉันจึงเพิ่ม setTimeout
ดูเหมือนว่าจะใช้งานได้ แต่เมื่อฉันเพิ่มช่วงเวลามันจะไม่ชัด
อย่างไรก็ตามมีการเก็บบันทึกทั้งหมด (1,000 - 200,000) ในช่วงเวลาที่กำหนดและส่งออกไปยัง csv หรือไม่