Считаем площади в MapInfo (пргаммирование)
- WeMaN
- Завсегдатай
- Сообщения: 310
- Зарегистрирован: 16 фев 2009, 10:49
- Репутация: 0
Считаем площади в MapInfo (пргаммирование)
Добрый день, давно уже не задавался вопросами, вот решил с вами советоваться, тема в первую очередь интересна тем, кто умеет программировать в мапинфо. Есть карта, прикрепил её, необходимо создать инструменты, которые бы делали следующее:
1. Надо посчитать суммарную площадь всех объектов с одинаковы неаименованием в определённой таблице. Например: Таблица Rast нужно посчитать суммарную площадь обектов со значением колонки "Луговая растительность (разнотравье)"
2. Надо посчитать суммарную площадь всех объектов с одинаковы неаименованием в определённой таблице находящихся в границах определённой области выделенной полигоном. Например: Таблица Rast нужно посчитать суммарную площадь обектов со значением колонки "Луговая растительность (разнотравье)" находящихся в пределе зеленого прямоугольника таблицы "границы_регионов"
3. Посчитать суммарную площадь всех объектов таблицы (например "Rast") попадающих в область фиолетового прямоугольника таблицы "границы_регионов"
4. Посчитать суммарную площадь всех объектов всех таблиц с площадями попадающих в область фиолетового прямоугольника таблицы "границы_регионов"
5. Посчитать суммарную площадь всех объектов всех таблиц
Теперь собственно вопросы:
1. Реализуемо ли это с помощью VBA в MapInfo?
2. Есть ли какие либо уже созданные кем то аналоги (мало ли вдруг кто сталкивался)?
3. Само собой названия таблиц должны быть не фиксированными и названия аттрибутов тоже, потом будут другие таблицы и аттрибуты, и считаться будет по ним, данная карта просто пример.
Вот спасибо за внимание, буду рад услышать советы.
1. Надо посчитать суммарную площадь всех объектов с одинаковы неаименованием в определённой таблице. Например: Таблица Rast нужно посчитать суммарную площадь обектов со значением колонки "Луговая растительность (разнотравье)"
2. Надо посчитать суммарную площадь всех объектов с одинаковы неаименованием в определённой таблице находящихся в границах определённой области выделенной полигоном. Например: Таблица Rast нужно посчитать суммарную площадь обектов со значением колонки "Луговая растительность (разнотравье)" находящихся в пределе зеленого прямоугольника таблицы "границы_регионов"
3. Посчитать суммарную площадь всех объектов таблицы (например "Rast") попадающих в область фиолетового прямоугольника таблицы "границы_регионов"
4. Посчитать суммарную площадь всех объектов всех таблиц с площадями попадающих в область фиолетового прямоугольника таблицы "границы_регионов"
5. Посчитать суммарную площадь всех объектов всех таблиц
Теперь собственно вопросы:
1. Реализуемо ли это с помощью VBA в MapInfo?
2. Есть ли какие либо уже созданные кем то аналоги (мало ли вдруг кто сталкивался)?
3. Само собой названия таблиц должны быть не фиксированными и названия аттрибутов тоже, потом будут другие таблицы и аттрибуты, и считаться будет по ним, данная карта просто пример.
Вот спасибо за внимание, буду рад услышать советы.
- Вложения
-
- Пример.rar
- (42.39 КБ) 482 скачивания
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Считаем площади в MapInfo (пргаммирование)
Проще использовать БД - всего то чучуть SQL'я
- WeMaN
- Завсегдатай
- Сообщения: 310
- Зарегистрирован: 16 фев 2009, 10:49
- Репутация: 0
Re: Считаем площади в MapInfo (пргаммирование)
Мне надо чтобы человек не знающий мапинфо нажал на кнопку ввёл условия и ему всё посчиталось
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Считаем площади в MapInfo (пргаммирование)
При чём здесь VBA? Вы имели в виду Mapbasic?WeMaN писал(а): 1. Реализуемо ли это с помощью VBA в MapInfo?
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Считаем площади в MapInfo (пргаммирование)
Нуу, если использовать БД, то можно реализовать это и на VBA в Excel'е...
-
- Активный участник
- Сообщения: 216
- Зарегистрирован: 21 окт 2009, 13:29
- Репутация: 28
- Откуда: Новосибирск
Re: Считаем площади в MapInfo (пргаммирование)
1) Да, только там не VBA. Если надо именно VBA то копать в сторону OLE.
2) Прям совсем аналогов, я - нет. Но и задача не сильно сложная у вас.
3) Не проблема
PS возможно вашу задачу можно решить и без программирования
2) Прям совсем аналогов, я - нет. Но и задача не сильно сложная у вас.
3) Не проблема
PS возможно вашу задачу можно решить и без программирования
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Считаем площади в MapInfo (пргаммирование)
Вообще то, при таких условиях, ничего проще SQL - мне на ум не приходит. А если ещё найти навороченный GUI с графическим построителем запросов - то и писать ничего не придётся...названия таблиц должны быть не фиксированными и названия аттрибутов тоже, потом будут другие таблицы и аттрибуты, и считаться будет по ним
- Игорь Белов
- Гуру
- Сообщения: 2232
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1506
- Откуда: Казань
Re: Считаем площади в MapInfo (пргаммирование)
Согласен с Вами. Однако если топикстартер подразумевает обрезание объектов по границе фиолетового прямоугольника, ситуация несколько усложняется.trir писал(а):при таких условиях, ничего проще SQL
The purpose of computing is insight, not numbers
- WeMaN
- Завсегдатай
- Сообщения: 310
- Зарегистрирован: 16 фев 2009, 10:49
- Репутация: 0
Re: Считаем площади в MapInfo (пргаммирование)
Господа, я вас не понял, всех, давай по порядку:
1. Да имел ввиду МэпБэйсик, аналог VBA Для мапинфы
2. SQL имеется ввиду встроенный, можете на примере одной из задач показать как эти все действия подвесить на 1 кнопку
3. Может вы меня не так поняли, 5 задач, 5 кнопок, диалоговое окно спрашивает что я хочу найти и т.д.
1. Да имел ввиду МэпБэйсик, аналог VBA Для мапинфы
2. SQL имеется ввиду встроенный, можете на примере одной из задач показать как эти все действия подвесить на 1 кнопку
3. Может вы меня не так поняли, 5 задач, 5 кнопок, диалоговое окно спрашивает что я хочу найти и т.д.
-
- Активный участник
- Сообщения: 216
- Зарегистрирован: 21 окт 2009, 13:29
- Репутация: 28
- Откуда: Новосибирск
Re: Считаем площади в MapInfo (пргаммирование)
1) Ну там не совсем аналог. Может просто выложите что у вас получилось, а мы поможем сделать что не получается?
2) А в чем сложности?
3) ну напимер:
Дальше в том же духе
2) А в чем сложности?
3) ну напимер:
Код: Выделить всё
1)
Select Наименование,Sum(Area(Obj,"hectare")) from Rast where Наименование = "Луговая растительность (разнотравье)" group by Наименование into Selection
2)
Select * from Rast where obj Entirely Within Any(Select Obj from Границы_регионов where Наименоваеие = "Зилениенький :)") into sel1 noselect
Select Наименование,Sum(Area(Obj,"hectare")) from sel1 where Наименование = "Луговая растительность (разнотравье)" group by Наименование into Selection
-
- Активный участник
- Сообщения: 128
- Зарегистрирован: 07 окт 2012, 16:25
- Репутация: 20
- Откуда: Москва
Re: Считаем площади в MapInfo (пргаммирование)
вот пример программы в виде 5 кнопок (на скорую руку), первая кнопка выводит в окно получившуюся площадь, остальные кнопки ничего не делают (пока)
если у вас нет компилятора мапбэйсик, напишите - скомпилирую, выложу
если у вас нет компилятора мапбэйсик, напишите - скомпилирую, выложу
Код: Выделить всё
Include "mapbasic.def"
Include "icons.def"
Declare Sub Main
Declare Sub proc1
Declare Sub proc2
Declare Sub proc3
Declare Sub proc4
Declare Sub proc5
Sub Main
Create ButtonPad "Мои Кнопки" As
PushButton
Icon MI_ICON_NUMBERS_2
Calling proc1
HelpMsg "кнопка1"
PushButton
Icon MI_ICON_NUMBERS_3
Calling proc2
HelpMsg "кнопка2"
PushButton
Icon MI_ICON_NUMBERS_4
Calling proc3
HelpMsg "кнопка3"
PushButton
Icon MI_ICON_NUMBERS_5
Calling proc4
HelpMsg "кнопка4"
PushButton
Icon MI_ICON_NUMBERS_6
Calling proc5
HelpMsg "кнопка5"
show
End Sub
Sub proc1
'тут сама процедура
Select Наименование,Sum(Area(Obj,"hectare"))
from Rast where Наименование = "Луговая растительность (разнотравье)"
group by Наименование into q1
note "площадь: " +q1.col2
End Sub
Sub proc2
End Sub
Sub proc3
End Sub
Sub proc4
End Sub
Sub proc5
End Sub
-
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Re: Считаем площади в MapInfo (пргаммирование)
Люди добрые! Подскажите, пожалуйста, как составить SQL-запрос, так чтобы подсчитать СУММАРНУЮ ПОЭТАЖНУЮ площадь зданий, размещенных на КАЖДОМ участке, и записать полученные значения в колонку «Площадь_Зданий_в_Участке» таблицы «Участки».
- Вложения
-
- Здания в участке.rar
- (3.8 КБ) 336 скачиваний
-
- Здания в участке.png (98.15 КБ) 7735 просмотров
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Считаем площади в MapInfo (пргаммирование)
Группировка должна быть и по участку и по этажу.
-
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Re: Считаем площади в MapInfo (пргаммирование)
Группировка зданий по участкам. А если еще и по этажам, то совсем здорово будет!
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Считаем площади в MapInfo (пргаммирование)
Прочитать руководство по языку SQL + Mapinfo ?
У вас какие-то особые здания - на каждом этаже подразумевается разная площадь? Если "нет", то для каждого здания суммарная площадь = "площадь фундамента" * "количество этажей".
Запрос на отнесение здания к участку называется пространственным. Перед его составлением стоит прочитать руководство чем отличается один пространственный оператор от другого. Это сократит время на выяснение почему не все здания "попали" в участки.
Последовательность запросов:
1. здания "входящие" или "пересекающие" с участками. выбрать только два столбца id-участка и "площадь * этажность" из таблицы "здания"
2. группировка запроса 1 по полю id с функцией агрегирования SUM.
3. обновление колонки в таблице "здания" вычисленной суммой. Связь по полю id.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость