Ho pubblicato nel forum arcgis ma non ho mai avuto risposta. Qualcuno può dirmi come risolverlo?
Supponiamo di avere una documentazione relativa al rilevamento dei veicoli dal 1 ° ottobre al 31 dicembre con informazioni sulla velocità del vento. Tutti i dati vengono salvati in geodatabase (sde-sqlserver) e fino in ArcGIS Server 10.1 come feature layer. Un dispositivo di scorrimento temporale mostra le posizioni di un'auto con la velocità del vento.
Quando un utente modifica un intervallo di tempo (ad es. 2 ottobre - 4 ottobre), la prima attività di query (per conteggio) calcola il numero di funzioni all'interno dell'intervallo. Di solito ci sono più di 1000 risultati anche due giorni (es. 1750) (non voglio cambiare questo limite però).
Ho usato un'altra attività di query (executeforIds) per tenere a portata di mano tutti i record ma ridurre la quantità con modulo (1/10) che è ancora un numero sufficiente per creare un bel grafico per un andamento generale della velocità del vento. Tuttavia, voglio anche fornire un'opzione per scaricare un intero set di dati in CSV (in questo caso 1750 righe)
Qui, ho usato findtask per recuperare il set di dati degli attributi all'interno dell'intervallo di tempo.
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 non era definito su console.log2, sebbene tutti csvdata (in console.log1) mostrino i dati nella console. Il problema sembra che i tempi di find.execute siano completi, quindi ho aggiunto setTimeout.
Questo sembra funzionare ma quando aumento l'intervallo di tempo, ovviamente non lo farà.
Esiste un modo per conservare tutti i record (1000 - 200.000) in un intervallo di tempo specifico ed esportarli in CSV?