Publiqué en el foro de arcgis pero nunca obtuve respuesta. ¿Alguien puede decirme cómo resolver esto?
Suponga que tiene un registro de seguimiento de vehículos del 1 de octubre al 31 de diciembre con información sobre la velocidad del viento. Todos los datos se guardan en la geodatabase (sde-sqlserver) y en ArcGIS Server 10.1 como capa de entidades. Un control deslizante de tiempo muestra las ubicaciones de un automóvil con velocidad del viento.
Cuando un usuario cambia un rango de tiempo (por ejemplo, del 2 de octubre al 4 de octubre), la primera tarea de consulta (para contar) calcula el número de características dentro del rango. Por lo general, hay más de 1000 resultados, incluso dos días (por ejemplo, 1750) (aunque no quiero cambiar este límite).
Utilicé otra tarea de consulta (executeforIds) para mantener todos los registros en la mano, pero reduje la cantidad con el módulo (1/10), que todavía es un número suficiente para hacer un buen gráfico para una tendencia general de la velocidad del viento. Sin embargo, también quiero proporcionar una opción para descargar un conjunto de datos completo en csv (en este caso, 1750 filas)
Aquí, usé findtask para recuperar el conjunto de datos de atributos dentro del rango de tiempo.
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 no estaba definido en console.log2, aunque todos los csvdata (en console.log1) muestran datos en la consola. El problema parece la sincronización de find.execute complete, así que agregué setTimeout.
Esto parece funcionar, pero cuando aumento el rango de tiempo, obviamente no lo hará.
¿Hay alguna forma de mantener todos los registros (1000 - 200,000) en un rango de tiempo específico y exportarlos a csv?