Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
АВ
Зарегистрирован: 02.07.2009 Сообщения: 31
|
Добавлено: Вт Июл 05, 2011 10:17 am Заголовок сообщения: Запрос на пересечение объектов заданной величины |
|
|
Подскажите пожалуйста как правильно составить запрос в MapInfo, который бы выявлял все пересекающиеся объекты таблицы, причем величина пересечения была бы больше заданной (например 0,1м).
Заранее спасибо |
|
Вернуться к началу |
|
|
SergS
Зарегистрирован: 01.11.2010 Сообщения: 51
|
Добавлено: Чт Июл 07, 2011 12:25 pm Заголовок сообщения: |
|
|
в силу особенностей диалекта sql, используемого в MI, такой запрос (именно как запрос) составить невозможно
но задачка вполне решается с помощью элементарного программирования в MB
ну, еще можно, наверное, попользоваться инструментом проверки топологии или серией штатных опреаций MI (заранее нельзя сказать - надо на данные глянуть) |
|
Вернуться к началу |
|
|
АВ
Зарегистрирован: 02.07.2009 Сообщения: 31
|
Добавлено: Пт Июл 08, 2011 1:14 pm Заголовок сообщения: Запрос на пересечение объектов заданной величины |
|
|
Объекты представляют собой полигоны (земельные участки). Часть из них пересекаются незначительно (в пределах погрешности), а часть имеют значительные пересечения. Именно их необходимо выявить. Имеется запрос, с помощью которого можно выбрать объекты площадь наложения которых больше (меньше) заданной величины. Но он не может помочь, так как площадь наложения на большой длине может быть значительной тогда как величина пересечения всего 1мм. |
|
Вернуться к началу |
|
|
SergS
Зарегистрирован: 01.11.2010 Сообщения: 51
|
Добавлено: Пн Июл 11, 2011 5:04 am Заголовок сообщения: |
|
|
"Имеется запрос, с помощью которого можно выбрать объекты площадь наложения которых больше (меньше) заданной величины."
Хотелось бы увидеть такой запрос... |
|
Вернуться к началу |
|
|
АВ
Зарегистрирован: 02.07.2009 Сообщения: 31
|
Добавлено: Пн Июл 11, 2011 8:47 am Заголовок сообщения: Запрос на пересечение объектов заданной величины |
|
|
Запрос на пересчение объектов по площади заданной величины выглядит следующим образом
Select * from A, B where A.obj Intersects B.obj and (Area(Overlap( A.obj, B.obj ),"sq m") < 1).
Подробно см. мой вопрос от 02.07.09
Запрос нормально работает. |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Пн Июл 11, 2011 1:00 pm Заголовок сообщения: |
|
|
Первое условие попробуйте переписать аналогочно второму, используя функцию
IntersectNodes - возвращает полилинию, имеющую узлы в точках пересечения. Нужно выставить условие на длину этой линии. |
|
Вернуться к началу |
|
|
АВ
Зарегистрирован: 02.07.2009 Сообщения: 31
|
Добавлено: Пн Июл 11, 2011 2:06 pm Заголовок сообщения: Запрос на пересечение объектов заданной величины |
|
|
Не понял как это сделать. Можно объяснить на примере |
|
Вернуться к началу |
|
|
SergS
Зарегистрирован: 01.11.2010 Сообщения: 51
|
Добавлено: Пн Июл 11, 2011 2:09 pm Заголовок сообщения: Re: Запрос на пересечение объектов заданной величины |
|
|
АВ писал(а): |
Запрос на пересчение объектов по площади заданной величины выглядит следующим образом
Select * from A, B where A.obj Intersects B.obj and (Area(Overlap( A.obj, B.obj ),"sq m") < 1).
Подробно см. мой вопрос от 02.07.09
Запрос нормально работает. |
Конечно он будет нормально работать, особенно если учесть, что он не соответствует условиям в "мой вопрос от 02.07.09"
Вы уж нормально описывайте задачу. |
|
Вернуться к началу |
|
|
АВ
Зарегистрирован: 02.07.2009 Сообщения: 31
|
Добавлено: Пн Июл 11, 2011 2:50 pm Заголовок сообщения: Запрос на пересечение объектов заданной величины |
|
|
Я написал ранее, что этот запрос помочь не может, но вы захотели егоувидеть. Я и показал вам. При чем здесь "вы уж нормально описывайте ситуацию"? Вопрос изначально ставился на конкретную величину пересечения в метрах, а не в кв. метрах |
|
Вернуться к началу |
|
|
SergS
Зарегистрирован: 01.11.2010 Сообщения: 51
|
Добавлено: Ср Июл 13, 2011 9:11 am Заголовок сообщения: |
|
|
я захотел увидеть запрос, следующий из первого поста - отбирающий перекрывающиеся объекты из одной таблицы (согласитесь, это именно так звучало) - думаю, неужели кому-то удалось - увы, чуда не случилось
Что касается второго, функция IntersectNodes() вам скорее всего не поможет - вам ведь надо оценить максимальную величину (ширину) перекрытия объектов? IntersectNodes() вернет все, что угодно, но не это.
Потому я и написал что такую задачу (если я правильно все понял) одним запросом решить невозможно. |
|
Вернуться к началу |
|
|
|