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

Re: Автоматизация простых операций с помощью Mapbasic

Добавлено: 10 ноя 2013, 23:26
Boris
kuziavlad85 писал(а): 1) если можете,подскажите,как вырезать полигон Вороного таким образом, чтобы еще и учитывалось границы регионов?
Выложите пример на два смежных субъекта РФ, желательно с внешней морской границей, и теми границами регионов, которые вы используете для обрезки.
Во первых обрезка на границе субъектов не может использоваться. Вот мой пример:
ex1.png
ex1.png (6.04 КБ) 4350 просмотров
4 полигона, 4 точки в них (центроид) 4 полигона Воронова. Обрезка полигонов воронова границей приведет к тому, что часть данных от этого полигона пропадет. Нужно не обрезать, а разрезать и потом переносить обрезки в тот регион куда они попадают. Это раз.
Два, что предполагается за пределами РФ - значения 0 или как там в вашей отрасли обозначается "все хорошо"? Это совершенно не верное предположение, за исключением Ледовитого океана.
Три, IMHO, задача вообще решена не верным способом. Для моделирования полей (на сколько я помню, распределение показателя - это поле), использована линейно-кусочная функция. Но поля не остаются статичными между точками разного значения. Они или должны убывать квадратично от точки "выброса", или изменяться некоторой функцией, возможно, что и линейной, между точками измерений. Но правило непрерывности должно сохранятся. Не может справа от границы быть 10, а слева 2. Тут очевидная задача пространственного анализа, решаемая с помощью построения грид-моделей, которые должны учитывать непрерывность изменения показателя.
PS
Еще раз, ссылаться на данные, которые никто не может увидеть - это очень плохой способ получить совет.

Re: Автоматизация простых операций с помощью Mapbasic

Добавлено: 10 ноя 2013, 23:51
kuziavlad85
1)Борис, насчет кусочно-непрерывной функции-я согласен с Вами, что решается задача несколько некооректно. Однако строить карты, где бы у нас были непрерывные значения мы также не можем и вот по какой причине: у нас всего 500-600 метеостанций на территории РФ, которые занимаются загрязнением снежного покрова. И на основании этих данных мы и должны строить карты. Т.е. когда расстояния между станциями 100-300 км!Разумеется, это полный бред, когда мы выдаем значения ввиде полигонов ВОРоного, но еще хуже, когда мы будем использовать сложные зависимости, которые математически мы не сможем доказать!

2)Скажем так, то,что предполагается за пределами РФ мы не знаем, у нас просто нет информации. НО искренне надеюсь, что она будет. Поэтому мы ограничиваемся пределами РФ.Пока надеюсь
3)не совсем понял просьбу. Мне выложить excel файл с геоданными? Не вопрос, могу скинуть! ТОлько значения pH там будут не теми,которые у нас есть-я не могу без ведома начальства делиться этими данными=))) Или какую то карту в формате jpg? те,что мы успели построить?

Re: Автоматизация простых операций с помощью Mapbasic

Добавлено: 10 ноя 2013, 23:58
kuziavlad85
Пока же я делаю совсем примитивным образом: совершенно не учтываю границы регионов, даже если эти полигноы залезают за административные границы.

Re: Автоматизация простых операций с помощью Mapbasic

Добавлено: 11 ноя 2013, 18:05
juffin_h
To kuziavlad85. Я извиняюсь, абсолютно нет времени на разъяснения. На работе завал. Выложите (можно в личку) таблицу с Ph (с произвольными значениями) и границы регионов, которые Вы используете. Если будет минутка, что нибудь набросаю.

Почему Вы используете Count(column)? Вам же надо не количество, а сумму - Sum( column )?
В MapInfo есть натуральный логарифм: Log().
Для вычисления логарифма по основанию 10 из N можно сделать так: Log(N)/Log(10).

Re: Автоматизация простых операций с помощью Mapbasic

Добавлено: 13 ноя 2013, 10:18
kuziavlad85
Спасибо Вам огромное, я уже понял, как можно вывести 2 колонки с суммами в sql-запросе! Правда, есть одно НО: я пока не смог поделить одно на другое и взять логарифм, приходится для этого в excel переводить.
Спасибо Вам огромное!

Re: Автоматизация простых операций с помощью Mapbasic

Добавлено: 15 ноя 2013, 06:22
Sibit
Можно попробовать такой запрос выполнить, так можно обойтись без екселя:

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

Select COL1,COL2, Log(COL1/COL2)/Log(10) from Query1 into Selection