Найти многоконтурные объекты

MapInfo, MapBasic
Ответить
tracer78
Интересующийся
Сообщения: 33
Зарегистрирован: 02 ноя 2012, 11:30
Репутация: 1

Найти многоконтурные объекты

Сообщение tracer78 » 12 июн 2019, 22:12

Задача такая - есть слой с площадными объектами. Их в слое больше 200 тысяч. Некоторые из них многоконтурные. Требуется, собственно, найти эти многоконтурные объекты. Задача кажется простой на первый взгляд, а вот как она решается - совсем не очевидно. Может есть у кого-то решение?

gamm
Гуру
Сообщения: 2961
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 687
Ваше звание: программист
Откуда: Казань

Re: Найти многоконтурные объекты

Сообщение gamm » 12 июн 2019, 22:27

ObjectInfo(table.obj,OBJ_INFO_NPOLYGONS) https://mapbasic.ru/doc/MapBasicReference-9-0.pdf

tracer78
Интересующийся
Сообщения: 33
Зарегистрирован: 02 ноя 2012, 11:30
Репутация: 1

Re: Найти многоконтурные объекты

Сообщение tracer78 » 12 июн 2019, 23:16

gamm писал(а):
12 июн 2019, 22:27
ObjectInfo(table.obj,OBJ_INFO_NPOLYGONS)
Как это использовать? Я не разбираюсь в мапбэйсике. Если можно то пошагово пожалуйста.

juffin_h
Активный участник
Сообщения: 239
Зарегистрирован: 22 окт 2012, 08:35
Репутация: 42
Откуда: Нижний Новгород

Re: Найти многоконтурные объекты

Сообщение juffin_h » 13 июн 2019, 08:56

tracer78 писал(а):
12 июн 2019, 23:16
Я не разбираюсь в мапбэйсике.
Это не обязательно. Просто сделайте выборку (запрос) Select * from my_table where ObjectInfo(obj,21) > 1

tracer78
Интересующийся
Сообщения: 33
Зарегистрирован: 02 ноя 2012, 11:30
Репутация: 1

Re: Найти многоконтурные объекты

Сообщение tracer78 » 13 июн 2019, 09:33

juffin_h писал(а):
13 июн 2019, 08:56
Select * from my_table where ObjectInfo(obj,21) > 1
Что-то тут не то - при выполнении такого запроса Мапинфо пишет о несовпадении типов данных в выражении. Где засада? Упд. Убрал > 1, запрос сработал, но результат - полностью выбранный слой. Либо я что-то делаю не так, либо оператор запроса не тот. Может есть еще варианты запросов?

juffin_h
Активный участник
Сообщения: 239
Зарегистрирован: 22 окт 2012, 08:35
Репутация: 42
Откуда: Нижний Новгород

Re: Найти многоконтурные объекты

Сообщение juffin_h » 13 июн 2019, 10:37

Val(Str$(ObjectInfo(obj,21))) > 1

tracer78
Интересующийся
Сообщения: 33
Зарегистрирован: 02 ноя 2012, 11:30
Репутация: 1

Re: Найти многоконтурные объекты

Сообщение tracer78 » 13 июн 2019, 10:56

juffin_h писал(а):
13 июн 2019, 10:37
Val(Str$(ObjectInfo(obj,21))) > 1
Запрос сработал. И вроде выбраны многоконтурные объекты. Теперь было бы неплохо выяснить что он делает и что значат его операторы (Val и прочие) в данной комбинации.

trir
Гуру
Сообщения: 4360
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 794
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Найти многоконтурные объекты

Сообщение trir » 13 июн 2019, 11:19

Теперь было бы неплохо выяснить что он делает и что значат его операторы (Val и прочие) в данной комбинации
RTFM

tracer78
Интересующийся
Сообщения: 33
Зарегистрирован: 02 ноя 2012, 11:30
Репутация: 1

Re: Найти многоконтурные объекты

Сообщение tracer78 » 13 июн 2019, 15:41

Похоже запрос работает. Только с его точки зрения полигон с дыркой - тоже многоконтурный объект. Но это не страшно. Всем спасибо за помощь. Остался еще один момент. Есть ли возможность видоизменить этот запрос таким образом, чтобы выбирались объекты, в которых расстояние между фрагментами многоконтурного полигона больше определенного расстояния? То есть не просто автоматизировать выборку многоконтурных объектов, а объектов с максимальными расстояниями между фрагментами или расстояние больше определенного числа. :?:

trir
Гуру
Сообщения: 4360
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 794
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Найти многоконтурные объекты

Сообщение trir » 13 июн 2019, 19:08

тут без mapbasic'а не обойдешься, или можно загрузить в БД и реализовать на SQL'е

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 1 гость