www.map-info.ru :: Просмотр темы - Определение растрового слоя под объектом
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  
На страницу 1, 2  След.
 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
khSerg



Зарегистрирован: 16.07.2008
Сообщения: 19

СообщениеДобавлено: Чт Окт 16, 2008 11:02 am    Заголовок сообщения: Определение растрового слоя под объектом Добавить ответ со ссылкой на данный текст

Сталкнулся с такой проблемой:
необходимо узнать какой растровый слой(без атрибутивной информации,просто карта) лежит под объектом (полигон).
Может я какой нибудь оператор в MapBasic не заметил :))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Чт Окт 16, 2008 8:45 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Не понял, в чем проблема? Выясняете слой на котором лежит селектированный объект (SelectionInfo(1)), выясняете порядковый номер этого слоя на карте. Перебираете все слои вниз от этого слоя, пока не наткнетесь на растровый.
Учтите, что растровых слоев может быть несколько на карте.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Окт 27, 2008 10:40 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

я думаю, человека интересует не факт наличия растрового слоя в окне карты, а попадание выделенного объекта в пределы растрового слоя. Это несколько разные задачи ;-). А если понимать под картой совокупность открытых таблиц, то понтяие окна для решения задачи не уместно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
khSerg



Зарегистрирован: 16.07.2008
Сообщения: 19

СообщениеДобавлено: Пт Дек 05, 2008 3:31 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Да, FedorinoFF, правильно интерпретировал мою идею!Например нарисован полигон, он лежит в рамках каких-то координат, необходимо получить список растров, которые лежат под этим полигоном...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Нестеров Валерий



Зарегистрирован: 21.03.2006
Сообщения: 492

СообщениеДобавлено: Сб Дек 06, 2008 11:46 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Думаю можно это сделать с некоторой точностью, написав программульку со следующим алгоритмом:
1. Программа должна считать все растры из открытой карты, и найти их tab файлы на диске.
2. Открыть эти tab файлики и считать у них точки привязки этих растров.
3. Определить у селектированного объекта (для которого нужно найти растры под ним) координаты центроида (а лучше координаты описывающего объект прямоугольника).
4. Сравнить, с некоторым допуском, попадание этих координат, по очереди, со всеми координатами привязки растров.
5. Ну и получите таким образом примерный список растров.

Менее автоматизированный, но более точный метод такой:
1. Подготавливаете векторный слой (назовем его "картой растров") в котором нарисуем столько объектов, сколько растров и каждый объект повторяет границы растров.
2. В список к каждому такому объекту приписываем имя растра
3. Теперь остается сделать только пространственный запрос из MapInfo (меню "Запрос\SQL запрос") где задаем условия поиска объектов, пересекающих заданный. И все, у вас получится выборка из объектов границ растров с именами этих растров.
_________________
Жизнь прекрасна!i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
khSerg



Зарегистрирован: 16.07.2008
Сообщения: 19

СообщениеДобавлено: Пн Дек 08, 2008 8:59 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо!
Я думаю надо будет попробывать 1 вариант, так как 2 будет очень трудозатратным :) Я думал примерно также, но предполагал, что есть какие-либо спец операторы :)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Дек 08, 2008 11:23 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

при помощи TableInfo() для растрового слоя можно легко получить границы растра и не заниматься разбором текстового содержимого tab-файла...
2Нестеров: Валерий, специально мутите? или просто не знали ;-)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_Y



Зарегистрирован: 28.11.2008
Сообщения: 122

СообщениеДобавлено: Вт Дек 09, 2008 5:40 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

2 FedorinoFF

Фишка в том, что каждый растр это отдельная таблица и для каждой нужно сделать запрос, а функция цикла реализуется только в мапбейсике. А это надо писать отдельную программу, о чем и было сказано.
Во втором варианте таблица одна, поэтому можно одним рзапросом получить нужный результат в окне SQL-запрос
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Дек 10, 2008 10:22 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Прикольно. а откуда возьмется зарнее подготовленный список (таблица) с параметрами растров? это ведь тоже надо программировать... может тогда лучше поднапрячься и сделать нормальное решение, работающее в любом окне карты по выделенному объекту, например.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Нестеров Валерий



Зарегистрирован: 21.03.2006
Сообщения: 492

СообщениеДобавлено: Ср Дек 10, 2008 10:37 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

FedorinoFF писал(а):
при помощи TableInfo() для растрового слоя можно легко получить границы растра и не заниматься разбором текстового содержимого tab-файла...
2Нестеров: Валерий, специально мутите? или просто не знали ;-)


Да нет, специально не мучУ )))
Просто у меня сидит где-то в закромах памяти, что не получится с помощью этой функции.
Вы попробуйте получить для растра границы с помощью TableInfo() и нам расскажете, за одним я для себя это уточню еще раз.
Что-то мне кажется, что вы не увидите реальных границ растра, а увидите большие непонятные цифры.
_________________
Жизнь прекрасна!i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Нестеров Валерий



Зарегистрирован: 21.03.2006
Сообщения: 492

СообщениеДобавлено: Ср Дек 10, 2008 10:44 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

FedorinoFF писал(а):
Прикольно. а откуда возьмется зарнее подготовленный список (таблица) с параметрами растров? это ведь тоже надо программировать... может тогда лучше поднапрячься и сделать нормальное решение, работающее в любом окне карты по выделенному объекту, например.


Ну вы все запрограммировать хотите... Сам видел, как люди делали "карты растров", - просто рисовали прямоугольники по площади покрываемой растром, а в базу вписывали название растра и получалась такая векторная карта вся в квадратиках с подписями растров. Ее кстати даже по моему используют в некоторых отчетах... выводят на печать часть реальной карты и в углу выводят карту растров с заштрихованными квадратиками, чтобы заказчик видел из какого места выводимая карта.
По такой карте у вас гораздо точнее будет попадание! А по моему первому методу приблизительное, ведь привязка растра не всегда по краям идет, а может идти и по четырем точкам в одном углу растра... всякое бывает.
_________________
Жизнь прекрасна!i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alex_Y



Зарегистрирован: 28.11.2008
Сообщения: 122

СообщениеДобавлено: Чт Дек 11, 2008 5:44 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

2 Нестеров Валерий
ага есть такие, границы трапеций называются, и они могут быть далеко не квадратиками :)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Дек 11, 2008 11:27 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

TableInfo(tableName, TAB_INFO_MIN*)
TableInfo(tableName, TAB_INFO_MAX*)
реально работают...

Все зависит от конкретной задачи и требований. Не очень много продвинутых пользователй, которые будут запускать запросы в окне Mapbasic и делать пространственные выборки из заранее подготовленной кем-то таблицы с растровыми границами... Вот и приходит мысль один раз запрограммировать и много раз пользоваться.

З.Ы. Удивительно что Инструментарии до сих пор нет формирования схемы расположения листов :-)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Нестеров Валерий



Зарегистрирован: 21.03.2006
Сообщения: 492

СообщениеДобавлено: Пт Дек 12, 2008 11:06 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

FedorinoFF писал(а):
TableInfo(tableName, TAB_INFO_MIN*)
TableInfo(tableName, TAB_INFO_MAX*)
реально работают...


Ну и лентяй же вы!
То, что операторы работают, никто не оспаривает... А я вам предлагал применить этот оператор на практике для растрового слоя и сказать нам что получилось... и всего то!
_________________
Жизнь прекрасна!i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Нестеров Валерий



Зарегистрирован: 21.03.2006
Сообщения: 492

СообщениеДобавлено: Пт Дек 12, 2008 11:16 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

FedorinoFF писал(а):

Все зависит от конкретной задачи и требований. Не очень много продвинутых пользователй, которые будут запускать запросы в окне Mapbasic и делать пространственные выборки из заранее подготовленной кем-то таблицы с растровыми границами... Вот и приходит мысль один раз запрограммировать и много раз пользоваться.


Разве я писал для продвинутых пользователей? И разве я упоминал запускать запросы из окна MapBasic?
вот мои слова:
----------
3. Теперь остается сделать только пространственный запрос из MapInfo (меню "Запрос\SQL запрос") где задаем условия поиска объектов, пересекающих заданный. И все, у вас получится выборка из объектов границ растров с именами этих растров.
----------

Этот построитель запросов сделан для обычных пользователей, в нем можно один раз написать запрос и сохранить, чтоб не писать заново каждый раз.

--------------------------------
FedorinoFF писал(а):
З.Ы. Удивительно что Инструментарии до сих пор нет формирования схемы расположения листов :-)


В инструментарии есть построение сетки координат, можете задать с помощью нее сетку. Если растры одного формата, то можно задать параметры построения сетки, начальную координату и шаг, останется потом только обвести по сетке прямоугольнички и вписать в списки соответствующие имена растров.
_________________
Жизнь прекрасна!i


Последний раз редактировалось: Нестеров Валерий (Пт Дек 12, 2008 11:43 pm), всего редактировалось 2 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru