Spatial interpolation
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 дек 2016, 09:47
- Репутация: 1
Spatial interpolation
Всем привет.
Есть задачка - нарисовать пространственное распредение на карте некой метрики.
На входе - массив данных в виде широта, долгота, значение метрики в данной точке, - на выходе - результат двухмерной интерполяции данных в виде цветовой схемы. Обращаю внимание, это не heat map, здесь учитывается не плотность точек (кол-во точек на единицу площади), а именно значение самой метрики, - то есть задача, аналогичная той, что обсуждалась тут lleo.me/dnevnik/2015/10/16.html.
Массив входных данных у меня есть, есть Python скрипт, который это обрабатывает и рисует похожую на правду картинку (см атачмент, - Саратов)
Несколько вопросов.
1)Скрипт - работает достаточно долго. Картинку размером 1000*1000 рисует около часа. Есть ли какие то альтернативные инструменты? Бесплатные Gis тулзы или библиотеки под .Net (c C# я дружу больше чем с Python)
2)При прорисовке картинки не учитываются некие физические границы, городов, береговых линий. Вопрос - где можно взять данные для учета этого? Нужны некие полигоны точек для ограничения границ городов или линии точек для береговой линии.
3)Какая функция позволяет определить принадлежность GPS точки к полигону ?(Python, C#)
Есть задачка - нарисовать пространственное распредение на карте некой метрики.
На входе - массив данных в виде широта, долгота, значение метрики в данной точке, - на выходе - результат двухмерной интерполяции данных в виде цветовой схемы. Обращаю внимание, это не heat map, здесь учитывается не плотность точек (кол-во точек на единицу площади), а именно значение самой метрики, - то есть задача, аналогичная той, что обсуждалась тут lleo.me/dnevnik/2015/10/16.html.
Массив входных данных у меня есть, есть Python скрипт, который это обрабатывает и рисует похожую на правду картинку (см атачмент, - Саратов)
Несколько вопросов.
1)Скрипт - работает достаточно долго. Картинку размером 1000*1000 рисует около часа. Есть ли какие то альтернативные инструменты? Бесплатные Gis тулзы или библиотеки под .Net (c C# я дружу больше чем с Python)
2)При прорисовке картинки не учитываются некие физические границы, городов, береговых линий. Вопрос - где можно взять данные для учета этого? Нужны некие полигоны точек для ограничения границ городов или линии точек для береговой линии.
3)Какая функция позволяет определить принадлежность GPS точки к полигону ?(Python, C#)
- Вложения
-
- карта.jpg (89.65 КБ) 7123 просмотра
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Spatial interpolation
Задача очень известная, имеет множество решений и уже готовых инструментов. Погуглите по ключевым словам: "геостатистика", "kriging", "IDW", "TIN".
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Spatial interpolation
На форуме действует правило "один вопрос - одна тема". Так что будьте добры.
Редактор материалов, модератор форума
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 дек 2016, 09:47
- Репутация: 1
Re: Spatial interpolation
Тогда, если не возражаете, будем считать что в первом посте топика только один вопрос.
Я правильно понимаю, если мы говорим о ArgGis, мне нужна функциональность, описанная в этой статье
npk-kaluga.ru/GeoStatAnalyze_AGIS.htm ?
А расширирение "Geostatistical Analyst" будет для меня доступно, если я скачаю триальную версию ArgGis?
Или, может быть есть какие то более легковесные, возможно бесплатные инструменты, включающие в себя эту функциональность?
Спасибо.
Я правильно понимаю, если мы говорим о ArgGis, мне нужна функциональность, описанная в этой статье
npk-kaluga.ru/GeoStatAnalyze_AGIS.htm ?
А расширирение "Geostatistical Analyst" будет для меня доступно, если я скачаю триальную версию ArgGis?
Или, может быть есть какие то более легковесные, возможно бесплатные инструменты, включающие в себя эту функциональность?
Спасибо.
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 11 фев 2016, 14:08
- Репутация: 3
- Откуда: Kiev
Re: Spatial interpolation
Добрый день!
1) Можете проинтерполировать результаты через ту же Grass или Saga ( Saga_krigging.pdf)
2) Данные с границами можете выгрузить с OSM (тут на форуме поднимался вопрос, поищите);
3) Результаты интерполяции будут в каком-то растровом формате. Я не знаю что Вы интерполируете, но я похожую задачу решал следующим образом:
3.1) Проводил полигонизацию растра (стандартными средствами если целочисленные значения (Qgis – Raster – Conversion – Polygonize или через gdal_polygonize (gdal_polygonize)), или через gdal_polygonize_float если данные с плавающей точкой).
3.2) Дальше если необходимо результат через калькулятор полей кластеризировал (например мы работаем с температурой, я создавал новый столбец, и в нем записывал значения (Если температура от 0 до 11 то холодно, если от 12 до 20 – нормально, от 21 до 30 - жарко), т.е. у нас получалось 3 группы объектов).
3.3) Дальше результат кластеризации проводил слияние (через Python Fiona, напр. Dissolve )
В результате имеем 3 мульти полигона (холодно, нормально и жарко), и дальше уже обычным наложением (Qgis Vector - Geoprocessing), определяем принадлежность каждой точки к конкретному полигону.
Как-то так
1) Можете проинтерполировать результаты через ту же Grass или Saga ( Saga_krigging.pdf)
2) Данные с границами можете выгрузить с OSM (тут на форуме поднимался вопрос, поищите);
3) Результаты интерполяции будут в каком-то растровом формате. Я не знаю что Вы интерполируете, но я похожую задачу решал следующим образом:
3.1) Проводил полигонизацию растра (стандартными средствами если целочисленные значения (Qgis – Raster – Conversion – Polygonize или через gdal_polygonize (gdal_polygonize)), или через gdal_polygonize_float если данные с плавающей точкой).
3.2) Дальше если необходимо результат через калькулятор полей кластеризировал (например мы работаем с температурой, я создавал новый столбец, и в нем записывал значения (Если температура от 0 до 11 то холодно, если от 12 до 20 – нормально, от 21 до 30 - жарко), т.е. у нас получалось 3 группы объектов).
3.3) Дальше результат кластеризации проводил слияние (через Python Fiona, напр. Dissolve )
В результате имеем 3 мульти полигона (холодно, нормально и жарко), и дальше уже обычным наложением (Qgis Vector - Geoprocessing), определяем принадлежность каждой точки к конкретному полигону.
Как-то так
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 дек 2016, 09:47
- Репутация: 1
Re: Spatial interpolation
Моя метрика - стоимость квадрата жилой недвижимости на вторичном рынке. Пришлось парсер Авито самому написать. Спасибо за наводки, после НГ будет чуть больше времени, попробую разобраться.Malyuk_M писал(а):
3) Результаты интерполяции будут в каком-то растровом формате. Я не знаю что Вы интерполируете, но я похожую задачу решал следующим образом:
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Spatial interpolation
Если вопрос был ко мне, то - нет , не правильно. Мой комментарий был о том, что вы сами сможете написать тот алгоритм, который вам нужен (я сужу об этом из того, что вы уже написали свой модуль для интерполяции), если выберете подходящий метод. Поэтому я перечислил список очень известных методов, устройство которых вам следует погуглить. А в чем все это реализовывать - вопрос уже вторичный.dklmn писал(а): Я правильно понимаю, если мы говорим о ArgGis, мне нужна функциональность, описанная в этой статье
npk-kaluga.ru/GeoStatAnalyze_AGIS.htm ?
PS А вообще да -- большая путаница возникает из-за того, что вы не следуете правилу "один вопрос - одна тема", в итоге не очень понятно, что же вы хотите получить в итоге (список методов? советы, какой метод лучше в вашей ситуации? список ПО?...) и о чем вам отвечать.
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 дек 2016, 09:47
- Репутация: 1
Re: Spatial interpolation
Не совсем правильно меня поняли. Скрипт для интерполяции я взял уже готовыйKolesovDmitry писал(а):Если вопрос был ко мне, то - нет , не правильно. Мой комментарий был о том, что вы сами сможете написать тот алгоритм, который вам нужен (я сужу об этом из того, что вы уже написали свой модуль для интерполяции), если выберете подходящий метод..dklmn писал(а): Я правильно понимаю, если мы говорим о ArgGis, мне нужна функциональность, описанная в этой статье
npk-kaluga.ru/GeoStatAnalyze_AGIS.htm ?
https://github.com/jeffkaufman/apartment_prices
http://www.jefftk.com/apartment_prices/ ... 13-01-29&1, и с минимальными изменениями применил его к своим входным данным. Было бы очень интересно погрузиться в тему и изобрести свой велосипед, но сейчас это к сожалению сложно, поэтому я решил поискать готовые тулзы с нужной для меня функциональностью.
Все равно спасибо за наводки, буду изучать "мат часть" тоже.
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 дек 2016, 09:47
- Репутация: 1
Re: Spatial interpolation
Действительно, данные по границами можно найти на OSM.Malyuk_M писал(а): 2) Данные с границами можете выгрузить с OSM (тут на форуме поднимался вопрос, поищите);
..
Как-то так
Но в моем случае эти данные оказываются не слишком полезными, так как они не учитывают берегову линию.
То есть граница между Саратовом и Энгельсом проходит посредине Волги.
http://www.openstreetmap.org/relation/4869409
Похоже придется осваивать фотошоп и вручную отсекать от сгененерированной картинки "водяную часть."
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 дек 2016, 09:47
- Репутация: 1
Re: Spatial interpolation
Решил зафиксировать промежуточные результаты своей работы в виде статьи на хабре.
Статистика по стоимости недвижимости — визуализация на карте
Тема для меня скорее хобби, поэтому, к сожалению, пока нет времени ее развивать, но
буду благодарен за любые конструктивные комментарии и предложения.
Статистика по стоимости недвижимости — визуализация на карте
Тема для меня скорее хобби, поэтому, к сожалению, пока нет времени ее развивать, но
буду благодарен за любые конструктивные комментарии и предложения.
-
- Гуру
- Сообщения: 4049
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1050
- Ваше звание: программист
- Откуда: Казань
Re: Spatial interpolation
чистая интерполяция не есть хорошо, мурзилки можно делать, но для работы не годится.dklmn писал(а):но буду благодарен за любые конструктивные комментарии и предложения.
Пример того, как делали уже 40 лет назад здесь (данные и описание, статья приложена к посту). Мы со студентами сделали аналог, взяв очевидные факторы (расстояние до магистралей, и т.д.), которые обычно учитываются в кадастровой оценке, и, хотя делали "на коленке" (чисто как пример методики), получили неплохое совпадение с фактом (фактические стоимости брали с ПКК, примерно 20% для обучения, остальные для контроля).
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя