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

Определить координаты элементарных участков

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

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

Карта элементарных участки с сеткой в MapInfo

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

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

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

Список в MapInfo с координатами элементарных участков

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

Форма Параметры окна карты в MapInfo

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

Избавиться от мелких объектов в MapInfo

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

Запрос на выбор мелких объектов по площади в MapInfo

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

Результат отработки запроса по выборке объектов в MapInfo

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

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

© Simashkov.2011

06.02.2011 г.

Назад