Страница 1 из 2

Скользящим ОКНОМ -- Moving Window!

Добавлено: 08 июл 2013, 15:54
qssaka
В какой программе можно обработать массив данных методом Скользящего Окна и построить затем карту изолиний?
ИРЛ: есть данные по свинцу в пробах с координатной привязкой. Необходимо их усреднить.

Как это должно работать. Представим себе лист A4 -- карту точек опробования, при этом точки распределены неравномерно. Теперь разобъем лист на "окна" -- квадраты 1 x 1 см. В центре каждого окна должна появиться точка -- среднее значение (а лучше на выбор: среднее, медианное или модальное) по всем точкам оказавшимся в окне.
На следующем шаге программа должна мочь/уметь построить линии изоконцентраций по усредненным данным.

Заранее благодарен Вам за любую помощь в этом вопросе. :wink:

______ Сейчас я почти на 100% уверен, что с этой бедой (выбросы --> несоразмерно большие аномалии) можно бороться подставляя в центр этого окна (эллипса, etc) не средннее, а медиану. Тогда окно должно быть достаточно большим, чтобы захватывать минимум 5 - 10 точек (потому как медиана по 2ум точка = среднее, не так?) Но, в этом случае окно должно двигаться с перекрытием, а не "пошагово"!, иначе вся площадь может быть покрыта 40-50 такими окнами, а это равносильно 40-50 точкам для дальнейшей интерполяции. Теперь бы алгоритм движения окна продумать...

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 08 июл 2013, 17:07
pendduduk
Попробуйте Surfer

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 08 июл 2013, 17:35
qssaka
ума не приложу где в серфере может находится Moving Window :?

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 08 июл 2013, 17:40
Pilot
на форуме есть такая тема Обработка данных методом скользящего окна
Подходит для задачи?

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 08 июл 2013, 17:43
KolesovDmitry
Это может любая ГИС, в которой реализована поддержка растров. На вскидку из открытых ГИС: GRASS GIS, Saga GIS. Наверняка и множество других.

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 08 июл 2013, 18:00
qssaka
to Pilot, to KolesovDmitry спасибо, я читал эту тему! Жаль, но и там тоже нет более менее подробной инструкции как все же провести эту операцию. Обязательно покапаю GRASS, но.. я уже копался в Geostatistical Analist, но так и не смог найти там скользящее окно. Надеюсь здесь найдется кто-нибудь, кто уже сталкивался с подобным типом задач.

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 08 июл 2013, 19:00
KolesovDmitry
qssaka писал(а): Обязательно покапаю GRASS, но.. я уже копался в Geostatistical Analist, но так и не смог найти там скользящее окно. Надеюсь здесь найдется кто-нибудь, кто уже сталкивался с подобным типом задач.
За помощью по GRASS -- добро пожаловать в ветку GRASS :) Собственно сложностей с расчетами там никаких, скорее сложности будут на первом этапе -- когда нужно понять философию этой системы (если раньше с подобным не сталкивались, то она может показаться странной). Но это уже в ветке про GRASS задавайте конкретные вопросы, что и как.

PS Но не все GRASSом единым -- нужные вам операции делает огромное количество программ -- выбирайте то, что нравится лично вам :)

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 09 июл 2013, 06:19
gamm
qssaka писал(а):На следующем шаге программа должна мочь/уметь построить линии изоконцентраций по усредненным данным. и да здесь тоже желателен выбор каким образом интерполировать (ближайший neighbor, кригинг, etc).
зачем вам скользящее окно, если сразу можно интерполировать? единственное разумное объяснение - это выравнивание плотности исходных данных, но для этого достаточно посчитать веса (обратно пропорциональные плотности), и использовать их при интерполяции, можно использовать GSLib, там это называется декластеризация (declust). После вычисления средних веса в любом случае нужны, поскольку у данных после этой операции разная дисперсия (ее обычно пристраивают в сглаживающий сплайн).

Но если вам до таких тонкостей дела нет, то затащите данные в тот же R, и просто посчитайте номера квадратиков, делается это "на раз":

Код: Выделить всё

#load data
p<-read.table("my_data.dat",header=TRUE)
# X Y Val1 Val2
#12345.98 321345.89 0.9834
dx<-100 # 100m
dy<-100 # 100m
X0<-min(p$X)-0.5*dx
Y0<-min(p$Y)-0.5*dy
iX<-as.integer((p$X-X0)/dx)
iY<-as.integer((p$Y-Y0)/dx)
# координаты лучше тоже усреднить, чтобы уменьшить ошибку
tmp<-aggregate(p,by=list(iX=iX,iY=iY),FUN=mean)
#save data
write.table(tmp,"new_data.dat",row.names=FALSE,sep="\t")
а потом интерполируйте новые данные ...

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 09 июл 2013, 12:27
juffin_h
qssaka писал(а):ума не приложу где в серфере может находится Moving Window :?
А эллипс не годится?
Surfer Help писал(а):Moving Average
The Moving Average gridding method assigns values to grid nodes by averaging the data within the grid node's search ellipse

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 09 июл 2013, 13:02
qssaka
to gamm - спасибо! "Зачем вам скользящее окно, если сразу можно интерполировать?" объясню подробно:
По разным причинам проводилось неравномерное опробование (не по сети). При этом во множестве точек опробования выявлены рудные концентрации свинца. Значения концентраций в таких точках являются выбросами. => Таким образом, при интерполяции вокруг "рудных" точек , стоящих особнячком, возникают чудовищно большие аномалии. Я интерполировал в Surfer и в ArcMap Geostsat. analyst методами nearest neighbor и kriging (ordinary и simple).

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 09 июл 2013, 13:19
qssaka
to juffin_h (to gamm) Да у кригинга есть эллипс в который он подбирает точки. Сейчас я почти на 100% уверен, что с этой бедой (выбросы --> несоразмерно большие аномалии) можно бороться подставляя в центр этого окна (эллипса, etc) не средннее, а медиану. Тогда окно должно быть достаточно большим, чтобы захватывать минимум 5 - 10 точек (потому как медиана по 2ум точка = среднее, не так?) Но, в этом случае окно должно двигаться с перекрытием, а не "пошагово"!, иначе вся площадь может быть покрыта 40-50 такими окнами, а это равносильно 40-50 точкам для дальнейшей интерполяции. Теперь бы алгоритм движения окна продумать...

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 09 июл 2013, 17:31
gamm
qssaka писал(а):По разным причинам проводилось неравномерное опробование (не по сети). При этом во множестве точек опробования выявлены рудные концентрации свинца. Значения концентраций в таких точках являются выбросами. => Таким образом, при интерполяции вокруг "рудных" точек , стоящих особнячком, возникают чудовищно большие аномалии. Я интерполировал в Surfer и в ArcMap Geostsat. analyst методами nearest neighbor и kriging (ordinary и simple).
ну, так я и думал. Тогда осваивайте GSLib, он собственно под рудную геологию и сделан. И бесплатный, и исходники есть. Книжку в сети найдете, она там есть. И еще одно - я со свинцом дела не имел, но если там имеет место рудное тело, то сначала хорошо бы его оконтурить (отбив 0/1 по кондициям). А потом уже внутри тела интерполировать. Ну и, если там множество мелких рудных тел, то и на этот случай в GSLib есть лекарства ...

да, и учтите, то кригинг предполагает нормальное распределение, которого у вас ни разу нет. Так что либо lognormal kriging, либо трансформация данных (Cox-Box, логарифмирование или normal-score transform), либо индикаторный кригинг (тоже есть в GSLib). И придется поработать, готовой кнопки нигде нет.

и почитайте Майерса, тут, у него для R примеры есть, и вообще много полезного по рудной геологии

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 09 июл 2013, 17:35
gamm
qssaka писал(а):to juffin_h (to gamm) Да у кригинга есть эллипс в который он подбирает точки. Сейчас я почти на 100% уверен, что с этой бедой (выбросы --> несоразмерно большие аномалии) можно бороться подставляя в центр этого окна (эллипса, etc) не средннее, а медиану. Тогда окно должно быть достаточно большим, чтобы захватывать минимум 5 - 10 точек (потому как медиана по 2ум точка = среднее, не так?) Но, в этом случае окно должно двигаться с перекрытием, а не "пошагово"!, иначе вся площадь может быть покрыта 40-50 такими окнами, а это равносильно 40-50 точкам для дальнейшей интерполяции. Теперь бы алгоритм движения окна продумать...
вы на неверном пути ... почитайте литературу.

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 10 июл 2013, 09:58
juffin_h
В Surfer, среди методов интерполяции (Gridding Methods), есть метод Data Metrics. По сути, это не метод интерполяции, а инструмент для анализа набора исходных данных. На основе этого анализа делается выбор оптимального метода интерполяции. Используя этот инструмент, можно получить и количество точек, попадающих в область поиска (чтобы выбрать оптимальную облась) и построить медиану.

Re: Скользящим ОКНОМ -- Moving Window!

Добавлено: 13 июл 2013, 18:16
gamm
juffin_h писал(а):В Surfer, среди методов интерполяции (Gridding Methods), есть метод Data Metrics. По сути, это не метод интерполяции, а инструмент для анализа набора исходных данных. На основе этого анализа делается выбор оптимального метода интерполяции.
неверно, выбор оптимального метода интерполяции делается на основе перекрестной проверки (cross validation), для этого нужно поставить галку и проанализировать результаты (это если про Surfer). А в целом метод выбирается посредством построения модели, но это уже (гео)статистика, тут нажатием кнопки не обойтись..