www.map-info.ru :: Просмотр темы - Как выполнить пересечение/вхождение объектов?
                               РќР° главную страницу сайта

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



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

СообщениеДобавлено: Чт Дек 17, 2009 6:21 am    Заголовок сообщения: Как выполнить пересечение/вхождение объектов? Добавить ответ со ссылкой на данный текст

Здравствуйте =)
У меня два векторных слоя:
Слой1 - множество мелких объектов
Слой2 - множество крупных объектов
Как получить список объектов из "Слой1" пересекающиеся/входящие в выбранный объект из "Слой2"?
Подскажите пожалуйсто кнопку или способ реализации, может SQL?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_Y



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

СообщениеДобавлено: Чт Дек 17, 2009 7:03 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Select * From Слой1, Слой2 Where Слой1.obj Intersects Слой2.obj
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

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

для выбранного объекта из Слоя2, скорее:
Select * From Слой1, Selection Where Слой1.obj Intersects Selection .obj
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



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

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

Благодарю за оперативный ответ. Помогло победить! Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



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

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

Question Подскажите пожалуйсто как определить selection.obj
Выполняю SQL - запрос вида "Select * From Слой1, Selection Where Слой1.obj Intersects Selection .obj"
Появляется ошибка "Не определена переменная или поле selection.obj"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

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

а объект-то выбран какой-то?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



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

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

reasonat писал(а):
а объект-то выбран какой-то?

Да, выбран =)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Пт Дек 18, 2009 1:19 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

тогда так

Dim sel As Alias
Dim o_sel As Object

sel = Selection.obj
o_sel = sel
Select * From Слой1 Where obj Intersects o_sel
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



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

СообщениеДобавлено: Пт Дек 18, 2009 4:18 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

reasonat писал(а):
тогда так

Dim sel As Alias
Dim o_sel As Object

sel = Selection.obj
o_sel = sel
Select * From Слой1 Where obj Intersects o_sel


Большое спасибо, заработало! Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Emetic



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

СообщениеДобавлено: Вт Фев 02, 2010 10:55 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Здраствуйте, встретился с аналогичной проблемой. Не подскажите как отсортировать объекты из слоя1 которые выходять за границы объектов слоя2 и переименовать их часть.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Вт Фев 02, 2010 11:10 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Что такое "выходят за границы"? Пересекаются с объектами из другого слоя, но не лежат целиком внутри? Или просто не лежат внутри объектов из другого слоя? Может объясните на реальном примере, что требуется?
И что значит переименовать? Изменить содержимое какого-то поля в таблице для выбранных объектов? Подписи поменять? Или перенести в новый слой?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Emetic



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

СообщениеДобавлено: Вт Фев 02, 2010 11:22 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Пример:
слой 1 - карта земельных участок некоторый из них находится одновременно в нескольких кварталах, поле КН содержит только номер участка (:ХХХ).
слой 2 - карта кадастровых кварталов поле КН содержит кадастровый номер (ХХ:ХХ:ХХХХХХ)
Задача:
Надо поле Слой1.КН приобразовать в ХХ:ХХ:ХХХХХХ:ХХХ тоесть полный кадастровый номер.
Загвоздка:
Некоторые земельные участки находящиеся в нескольких кварталах надо привести к виду ХХ:ХХ:000000:ХХХ.
Как поле Слой1.КН привести в данный вид?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Вт Фев 02, 2010 1:17 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

тут либо программировать..
либо в несколько этапов:
1. сохраняем копию участков - Слой1раб
2.добавляем номер квартала в номер участка - "Таблица/Обновить колонку" - указать, что обновляем какое-нибудь текстовое поле Слой1раб, берем значение КН из таблицы кварталов, связываем таблицы по графике (объекты из Слой1раб вложены в объекты из слоя кварталов)
3. выбираем все участки, затем - "Объекты/Выбрать изменяемый объект"
4. выбираем все кварталы и режем - "Объекты/Разрезать"
5. получаем слой участков, в котором участки, попавшие на 2 и более квартала порезаны на 2 и более частей, причем в этих случаях у частей совпадают значения полей с КН квартала и КН участка
6. "Запрос/SQL-запрос", указываем Слой1раб, группируем его по полям "КН квартала" и "КН участка" и добавляем поле Count(*) из обобщений - получаем таблицу, в которой посчитано количество встречающихся комбинаций КН квартала с КН участка. Эту сгруппированую таблицу лучше сохранить как копию в отдельную таблицу.
7. Теперь можно выбрать те строки, в которых Count(*) > 1 и обновить колонку КН квартала, заменив часть строки нулями. Собираем строку полного КН из двух полей, номер квартала + номер участка
8. Обновляем таблицу СЛОЙ1, берем значения из КН участка таблицы Слой1раб, связываем по графике.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Emetic



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

СообщениеДобавлено: Ср Фев 03, 2010 5:21 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Большое спасибо за ответ, но я застрял на пункте 6, не могу понять как добавить поле Count(*). Не могли бы вы объяснить поподробнее начиная с пункта 6.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Ср Фев 03, 2010 10:53 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

в окне SQL-запроса в поле "из таблиц" указываем таблицу Слой1раб
в поле "группировать по колонкам" - поле с КН квартала и с КН участка
(еще лучше сначала объединить строки в одну, чтобы в поле КН участка был полный номер)
в поле "выбрать колонки" указываем поля с КН (или одно поле с полным КН), и через запятую, Count(*)
чтобы не писать все это вручную, можно выбирать готовые названия таблиц, полей, обобщений и функций в выпадающих списках справа.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
На страницу 1, 2  След.
Страница 1 из 2

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


Top.Mail.Ru