Коллеги, добрый день.
Может кто подскажет:
Как стандартными средствами сравнить площадные объекты из разных слоев на:
//сравнить - имеется ввиду: найти это и вычислить площадь
- объект имущества (ОИ) полностью лежит внутри земельного участка (ЗУ);
- ОИ частично выходит за пределы ЗУ; (интересует внешняя часть площади)
- ОИ не лежит на ЗУ.
СПАСИБО.
Сравнение площадных объектов
-
- Интересующийся
- Сообщения: 36
- Зарегистрирован: 17 апр 2014, 14:10
- Репутация: 0
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Сравнение площадных объектов
1) Select * From ОИ Where ОИ.obj Within ЗУ.obj (Возможно, Within надо будет заменить на Entirely Within. Это даст чуть другой результат, но в обоих случаях получите ОИ, лежащие внутри ЗУ, либо на границах с ЗУ)
2) Делаете слой с ОИ редактируемым и изменяемым (Ctrl + T). Далее SQL запрос Select * From ОИ Where ОИ.obj Intersects ЗУ.obj. Получите пересекаемые с ЗУ объекты. Затем резрезаете ОИ (объекты - разрезать). Затем SQL запрос Select * From ОИ Where ОИ.obj Within ЗУ.obj. Получите объекты внутри ЗУ. Удаляете их. В итоге получите кусочки ОИ за пределами ЗУ. Возможно в самом начале надо удалить те участки, которые вообще не пересекаются с ЗУ. Для это используйте запрос Select * From ОИ Where ОИ.obj Intersects ЗУ.obj и затем "обратить выборку".
3) То же самое. Select * From ОИ Where ОИ.obj Intersects ЗУ.obj и затем "обратить выборку".
2) Делаете слой с ОИ редактируемым и изменяемым (Ctrl + T). Далее SQL запрос Select * From ОИ Where ОИ.obj Intersects ЗУ.obj. Получите пересекаемые с ЗУ объекты. Затем резрезаете ОИ (объекты - разрезать). Затем SQL запрос Select * From ОИ Where ОИ.obj Within ЗУ.obj. Получите объекты внутри ЗУ. Удаляете их. В итоге получите кусочки ОИ за пределами ЗУ. Возможно в самом начале надо удалить те участки, которые вообще не пересекаются с ЗУ. Для это используйте запрос Select * From ОИ Where ОИ.obj Intersects ЗУ.obj и затем "обратить выборку".
3) То же самое. Select * From ОИ Where ОИ.obj Intersects ЗУ.obj и затем "обратить выборку".
-
- Интересующийся
- Сообщения: 36
- Зарегистрирован: 17 апр 2014, 14:10
- Репутация: 0
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Сравнение площадных объектов
Есть такая замечательная функция MapBasic'а ProportionOverlap( object1, object2 ), которая отвечает сразу на все вопросы. Единственное отличие от вопроса, это то, что она говорит "сколько входит, а не сколько не входит".
И запрос тогда выглядит так:
Код: Выделить всё
Return Value
A float value equal to AreaOverlap( object1, object2 ) / Area( object1 ).
Select ID1,ID2, (1-ProportionOverlap( ОИ.obj, ЗУ.obj )) "Res" From ОИ Where ОИ.obj Intersects ЗУ.obj
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей