Страница 2 из 2
Re: MapInfo (MapBasic): Как получить новые полигоны из налож
Добавлено: 19 июн 2016, 21:56
Preev
trir писал(а):забудьте уже про MapInfo, это прошлый век
Вообще-то MapInfo весьма современная и популярная ГИС.
И тему я создал в соответствующей ветке форума.
Re: MapInfo (MapBasic): Как получить новые полигоны из налож
Добавлено: 19 июн 2016, 23:01
Boris
Я считаю, что без утилиты на 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 КБ) 309 скачиваний
Re: MapInfo (MapBasic): Как получить новые полигоны из налож
Добавлено: 19 июн 2016, 23:42
Preev
Boris писал(а):Я считаю, что без утилиты на MB можно обойтись, но придется делать повторяющиеся операции, так что стоит либо ее создать, либо записать повторы в текстовый файл и вставлять его для выполнения в окно MapBasic...
Спасибо. Буду в разбираться в коде.
У меня еще возникла идея проверки перекрытий полигонов в цикле (с ограничением по количеству итераций):
Код: Выделить всё
Objects Check From Selection Into Table tbl1
Каждый слой по одному разу сравнивается с другим и при наличии пересечений создает еще один слой, который также добавляется в список для сравнения.