<<На Главную    < В меню Советы по MapInfo

  В п.11 Советов по работе с ГИС MapInfo на нашем сайте (можно посмотреть здесь) рассказывалось о том, как можно быстро построить сетку элементарных участков. Но, в некоторых задачах (например, для задач точного земледелия с целью настройки контроллеров систем подачи удобрений) необходимо знать координаты таких элементарных участков. Как правило, для этого достаточно знать координаты центроида элементарного участка. Далее (как один из вариантов) рассмотрим, как можно решить такую задачу, используя ГИС MapInfo.

 Пусть исходная картинка контуров с нанесённой сеткой выглядит приблизительно так (слой сетки будем называть grid1):

Для удобства,  скопируем контур, с которым будем работать в слой kontur1(иначе, получиться не очень наглядно). Тогда, поставленную задачу проще всего решить, используя SQL-запрос. Для этого идём меню Запрос>SQL запрос и набираем выражение, как показано ниже:

Здесь для вычисления координат эл.участков использутся функции CentroidX/Y с условием, что слой сетки grid1 пересекает слой контура kontur1 (оператор Intersects) хотя бы в одной точке.

Результат может выглядеть так:

При вычислении координат есть одна тонкость. Дело в том, что по умолчанию координаты функцией CentroidX/Y измеряютя в системе Долгота/Широта, т.е. в градусах. Для того, чтобы поменять эту систему на прямоугольную (План/Схема) идем Настройки>Режимы>Окно Карты>вкладка Проекция, кнопка Проекция для сеанса :

В принципе, поставленную задачу мы решили. Но иногда хотелось избавиться от слишком мелких элементарных участков с площадью, ну скажем, меньше 1 гектара. Для решения этой задачи придётся немного потрудиться. Чтобы "отфильтровать" такие небольшие площади, необходимо побить наш контур на фрагменты с помощью сетки (слой grid1).  Сделать это можно с помощью операций над объектами(меню Объекты) : Удалить часть(для "полных" квадратов) и Разрезать (для тех квадратов, которые частично перекрывают наш контур). После проведения такой работы, наш "посечённый" контур может выглядеть так:

Теперь, чтобы отбросить фрагменты с площадью меньше 2 гектара составим следующий запрос:

Результат нашей выборки будет выглядеть так:

Как видим, мы избавились от небольших по площади элементарных участков.

На основании предложенного алгоритма, в принципе, наверно возможно "нацарапать" какой-нибудь макрос на MapBasic'е для автоматизации. Но это тема уже совсем другого разговора ...

Simashkov.2011

06.02.2011 г.

Назад