Я написал на форуме Arcgis, но так и не получил ответа. Может кто-нибудь сказать мне, как это решить?
Предположим, у вас есть записи отслеживания транспортных средств с 1 октября по 31 декабря с информацией о скорости ветра. Все данные сохраняются в базе геоданных (sde-sqlserver) и выше в ArcGIS Server 10.1 в качестве векторного слоя. Ползунок времени показывает местоположение автомобиля со скоростью ветра.
Когда пользователь изменяет временной диапазон (например, 2 октября - 4 октября), первая задача запроса (для подсчета) вычисляет количество объектов в диапазоне. Обычно есть более 1000 результатов даже за два дня (например, 1750) (хотя я не хочу менять этот предел).
Я использовал другую задачу запроса (executeforIds), чтобы держать все записи под рукой, но уменьшить количество с модулем (1/10), которого все еще достаточно для создания хорошей диаграммы для общей тенденции скорости ветра. Однако я также хочу предоставить возможность загрузки всего набора данных в CSV (в данном случае 1750 строк)
Здесь я использовал 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.
Кажется, это работает, но когда я увеличиваю временной диапазон, это явно не будет.
Есть ли возможность хранить все записи (от 1000 до 200 000) за определенный промежуток времени и экспортировать их в csv?
Конечно, вы можете увеличить лимит записей службы до 10 000 или более, если вы имеете дело с точками и парными атрибутами, особенно если вы не генерируете графику.
Вы можете выполнить асинхронную задачу геообработки и собрать данные после их генерации в выходной папке на сервере.
Если вы бросите, если порядок по пункту и время в вашем запросе. Возможно, вы сможете прочитать время в последней записи и получить следующий набор записей больше, чем это время. Продолжайте, пока не достигнете конца своего временного диапазона.
источник