MapInfo (MapBasic): Как получить новые полигоны из наложений

MapInfo, MapBasic
Preev
Новоприбывший
Сообщения: 9
Зарегистрирован: 19 июн 2016, 17:50
Репутация: 0

Re: MapInfo (MapBasic): Как получить новые полигоны из налож

Сообщение Preev » 19 июн 2016, 21:56

trir писал(а):забудьте уже про MapInfo, это прошлый век
Вообще-то MapInfo весьма современная и популярная ГИС.
И тему я создал в соответствующей ветке форума.

Boris
Гуру
Сообщения: 4115
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 406
Откуда: Париж

Re: MapInfo (MapBasic): Как получить новые полигоны из налож

Сообщение Boris » 19 июн 2016, 23:01

Я считаю, что без утилиты на MB можно обойтись, но придется делать повторяющиеся операции, так что стоит либо ее создать, либо записать повторы в текстовый файл и вставлять его для выполнения в окно MapBasic. Я опишу только задачу "порезать на части", присвоить сумму надо придумать самому, но она уже обсуждалась где то в форуме (запрос на группировку и суммирование) на примере превращения таблицы T1 в таблицу T1a (см. приложение):
1. таблицы "разрезаемая" (t1) и "режущая" (t2 в примере = копия t1) должны быть разные. иначе надо сделать копию таблицы.
2. обе таблицы должны иметь уникальное поле.
3 и далее см. код, результирующая таблица t1a.tab будет состоять из "кусочков" на которые сама себя порежет за счет пересечений:

Код: Выделить всё

 
Open Table "t1.TAB" Interactive
Map From t1
Set Map Layer 1 Label Auto On
Commit Table t1 As "T2.TAB" TYPE NATIVE Charset "WindowsCyrillic" Interactive
Open Table "T2.TAB" Interactive
Add Map Auto Layer T2
Commit Table t1 As "t1a.TAB" TYPE NATIVE Charset "WindowsCyrillic" Interactive
Open Table "t1a.TAB" Interactive
Alter Table "t1a" ( add ID2 Integer,p1 Integer ) Interactive
Commit Table t1a
Add Map Auto Layer t1a
Set Map Layer 1 Editable On
Browse * From t1a
select * from t1a
set Target On
select * from T2
Objects Split Into Target Data ID1=ID1
Commit Table t1a Interactive
Update t1a Set ID2 = rowid
Commit Table t1a Interactive
t1.7z
(2.22 КБ) 46 скачиваний

Preev
Новоприбывший
Сообщения: 9
Зарегистрирован: 19 июн 2016, 17:50
Репутация: 0

Re: MapInfo (MapBasic): Как получить новые полигоны из налож

Сообщение Preev » 19 июн 2016, 23:42

Boris писал(а):Я считаю, что без утилиты на MB можно обойтись, но придется делать повторяющиеся операции, так что стоит либо ее создать, либо записать повторы в текстовый файл и вставлять его для выполнения в окно MapBasic...
Спасибо. Буду в разбираться в коде.
У меня еще возникла идея проверки перекрытий полигонов в цикле (с ограничением по количеству итераций):

Код: Выделить всё

Objects Check From Selection Into Table tbl1
Каждый слой по одному разу сравнивается с другим и при наличии пересечений создает еще один слой, который также добавляется в список для сравнения.

Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость