Как разбить карту mid-mif на ячейки с высотами и свойствами?

MapInfo, MapBasic
Ответить
Barvetal
Интересующийся
Сообщения: 41
Зарегистрирован: 28 авг 2008, 18:19
Репутация: 0

Как разбить карту mid-mif на ячейки с высотами и свойствами?

Сообщение Barvetal » 29 авг 2008, 09:05

Добрый день!

У меня есть местность 20 км * 20 км. Есть задача: создать двухмерную матрицу, и в клетках этой матрицы записать аггрегатные значения для каждого участка 50*50 метров: среднюю высоту и преобладающий тип поверхности (вода, лес, поле и т.п.).

Другими словами, нужно разбить территорию 20км*20км на клетки 400*400, и в каждой клетке записать структуру данных со средней высотой и преобладающим типом поверхности для данного участка местности.

Как это можно сделать? Есть ли готовые библиотеки и методы для этого? (Желательно на java, но С++ тоже подойдет) Я программист, но никогда раньше не работал с ГИС. Подскажите пожалуйста!

Всем заранее спасибо!

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Как разбить карту mid-mif на ячейки с высотами и свойствами?

Сообщение Максим Дубинин » 30 авг 2008, 03:16

то что вам нужно называется зональная статистика или аггрегация, вот тут немного про это есть http://gis-lab.info/qa/zonalstats.html

чтобы порекомендовать какой-либо метод, скажите для начала "условия", вам нужно создать самостоятельную программу? научиться это делать в одной из ГИС? Написать модуль для ГИС?
пристегивайтесь, турбулентность прямо по курсу

Barvetal
Интересующийся
Сообщения: 41
Зарегистрирован: 28 авг 2008, 18:19
Репутация: 0

Re: Как разбить карту mid-mif на ячейки с высотами и свойствами?

Сообщение Barvetal » 01 сен 2008, 11:37

Оптимально - написать свою программу. Я думаю посмотреть в сторону GeoTools - это опенсорсная бесплатная библиотека для GIS. Может, там что-то такое найдется... А может, в MapXTreme...
Если не получится написать свою программу, тогда можно и использовать какой-нить готовый GIS или какую-нить оболочку к нему.
Дело в том, что мне нужно взять карту в формате ГИС, получить эту матрицу высот/типов_поверхности, и все. Кроме матрицы мне больше от карты ничего не надо.

Что можете теперь порекомендовать?

Заранее спасибо!

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Как разбить карту mid-mif на ячейки с высотами и свойствами?

Сообщение Boris » 06 сен 2008, 02:48

я не скажу как по уму, но раз уж речь в заголовке идет именно о MIF/MID, то скажу как тупо в лоб ее делают в Mainfo:
1. Создают сетку требуемого размера. В MapInfo через тот же MIF/MID - счетная задача.
2. Берут слой обрабатываемых данных, в котором атрибутами записаны агрегированные данные. Тут два пути если данные - это россыпь точек - это один путь, если данные в виде линий и полигонов, размером, превышающим размер вашей ячейки - другой.
3. Создаем копию таблицы с ячейками, дополнив ее всеми атрибутивными полями, где будете сохранять агрегированные данные.
4. Итерационно обходим все ячейки находим объекты в обрабатываемом слое, которые она (одна ячейка) перекрывает или пересекает с помощь команды Select * ... Overlap или Intersect - получаем запрос, сохраняем его как таблицу. Из-за особенностей команды Select он будет содержать геометрию первой таблицы, а атрибуты обеих таблиц.
5. Получаем набор из N*N таблиц. Перебираем эти таблицы по одной. С помощью пары команд MapBasic'а
Set Target
Objects Intersect Into Target
[ Data column_name = expression [ , column_name = expression ... ] ]
или функций
Overlap( ) function или AreaOverlap( ) function
для каждой ячейки получаем выборку "обрезанных" объектов.
6. Перебрать объекты в выборке после этого и проделать над ними любые вычисления - задача тривиальная. Делается агрегирующим запросом Select ...
7. Расчетный результат пишем в результирующую таблицу ячеек.

Все что нужно можно реализовать на бесплатном MapBasic'е или с помощью OLE интерфейса к MapInfo. Правда, сам MapInfo - платный. :(

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: Semrush [Bot] и 6 гостей