J'ai posté sur le forum arcgis mais je n'ai jamais eu de réponse. Quelqu'un peut-il me dire comment résoudre ce problème?
Supposons que vous ayez un dossier de suivi de véhicule du 1er octobre au 31 décembre avec des informations sur la vitesse du vent. Toutes les données sont enregistrées dans la géodatabase (sde-sqlserver) et mises à jour dans ArcGIS Server 10.1 en tant que couche d'entités. Un curseur temporel indique l'emplacement d'une voiture avec la vitesse du vent.
Lorsqu'un utilisateur modifie une plage de temps (par exemple, du 2 octobre au 4 octobre), la première tâche de requête (pour le comptage) calcule le nombre de fonctionnalités dans la plage. Il y a généralement plus de 1000 résultats, même sur deux jours (par exemple 1750) (je ne veux cependant pas modifier cette limite).
J'ai utilisé une autre tâche de requête (executeforIds) pour garder tous les enregistrements en main, mais réduire le montant avec le module (1/10), ce qui est encore assez pour créer un joli graphique pour une tendance générale de la vitesse du vent. Cependant, je veux également fournir une option pour télécharger un ensemble de données complet en csv (dans ce cas 1750 lignes)
Ici, j'ai utilisé findtask pour récupérer l'ensemble de données d'attribut dans la plage de temps.
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 n'était pas défini dans console.log2, bien que tous les csvdata (dans console.log1) affichent des données dans la console. Le problème semble que le timing de find.execute soit terminé, j'ai donc ajouté setTimeout.
Cela semble fonctionner mais quand j'augmente la plage de temps, ce ne sera évidemment pas le cas.
Est-il possible de conserver tous les enregistrements (1000 - 200 000) dans une plage de temps spécifique et d'exporter vers csv?