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?
fuente
Ciertamente, podría aumentar el límite de registro de servicio a 10k o más si se trata de puntos y atributos de pareja, especialmente si no está generando gráficos.
Puede realizar una tarea de geoprocesamiento asíncrono y recoger los datos después de generados en una carpeta de salida en el servidor.
Si lanza un pedido por cláusula y el tiempo en su consulta. Es posible que pueda leer la hora en el último registro y obtener el siguiente conjunto de registros mayor que esa hora. Continúe hasta llegar al final de su rango de tiempo.
fuente