Статистика по таблице без нулей

0 голосов
спросил 04 Авг, 05 от Гость (210,080 баллов) в категории Программные продукты Esri

Подскажите, пожалуйста.

Есть массив данных (точечная тема), нужно посчитать среднее по блокам (статистика по полю "номер блока"). Но при расчёте среднего значения не нужно использовать ячейки со значеним "0" (то есть сумму надо делить на число значимых значений).

Возможно ли это сделать?

Просто выкинуть точки нельзя, так как полей для каждой точки много, и где-то ноль, а где-то нет.

8 Ответы

0 голосов
ответил 04 Авг, 05 от Tatyana1 (6,140 баллов)
У меня была похожая проблема... Добрые люди посоветовали работать через Access. Проблемы не стало...
0 голосов
ответил 04 Авг, 05 от Гость (210,080 баллов)

Буду благодарна, если напишите формулу для вычисления среднего с игнорированием нулей, которую нужно записать в запрос. (Акцесс в первый раз открыла)image

Спасибо, что откликнулись.

0 голосов
ответил 04 Авг, 05 от Tatyana1 (6,140 баллов)
Вы меня не так поняли. Все вычисления я провожу в ГИС. К своему точечному слою добавляю таблицу. Так вот, чтобы "не мешались" ненужные нулевые ячейки, лучше всего мне подошла таблица Access. Если добавлять таблицу оттуда, то все нули автоматически заменяются на Null и расчеты проводятся корректно...
0 голосов
ответил 05 Авг, 05 от BigSerg (4,080 баллов)
а что мешает сделать выборку по теме <> 0
преобразоватьв шейп файл и рассчитать по новому файлу????
0 голосов
ответил 05 Авг, 05 от Tatyana1 (6,140 баллов)

to BigSerg

это можно... когда у Вас пара столбцов, по которым нужно проводить расчеты, а если их 250?

0 голосов
ответил 05 Авг, 05 от BigSerg (4,080 баллов)
Может все таки отказаться от Access и воспользоваться примерно таким скриптом - если дело все именно в 0 и Number Null

th = av.GetActiveDoc.GetActiveThemes.Get(0)
ft = th.GetFtab
if (ft.isEditable.Not) then
ft.SetEditable(true)
end
for each i in ft
for each j in ft.GetFields
    val = ft.ReturnValue(j,i)
    if ((j.IsTypeNumber) and (Val = 0)) then
      ft.SetValue(j,i,Number.M akeNull)
    end
end
end      
if (ft.isEditable) then
ft.SetEditable(false)
end
return nil
Заменяет все 0 на Number Null в полях Number type - можно в принципе туда вставить и список полей в проверку если в некотоорых полях нужны 0
0 голосов
ответил 05 Авг, 05 от Tatyana1 (6,140 баллов)

to BigSerg

это уже личное дело каждого - выбрать то, что ему удобнее для работы... я лишь предложила то, что использую сама...

0 голосов
ответил 09 Авг, 05 от Гость (210,080 баллов)

Огромное спасибо! Всё работает!image

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...