Получения слоя, как результата пересечения двух других
-
- Активный участник
- Сообщения: 107
- Зарегистрирован: 17 янв 2010, 00:07
- Репутация: 5
- Откуда: Курск
Получения слоя, как результата пересечения двух других
Здравствуйте. Имеются два слоя, скажем "zone" и "region". В первом - ландшафты, во втором - адм. области.
Нужно получить слой, в котором будут полигоны как результат пересечения контуров полигонов двух других слоев.
Интересует два случая.
1) Общая граница первого слоя и второго совпадает. Вот пусть, например, как тут. Синий - лес, зеленый - степь, красный - регион_1, фиолетовый - регион_2.
В итоговом слое нужно получить четыре полигона: 1) лес/регион_1, 2) лес/регион_2, 3) степь/регион_1, 4) степь/регион_2.
Делал когда-то такое в АркГИС, использовал инструмент Intersect. Все выходило прекрасно. Хочется в МИ.
2. Границы слоев не совпадают. Как тут: Цвета обозначают то же.
В результате хочется получить слой, в котором будут 3 полигона (как на рисунке)
1) степь/регион_1, 2) степь/регион_2, 3) лес/регион_2.
Точно не помню, но вроде давно в АркГИС у меня такое не выходило, потому что вроде граница разных слоев не совпадает. Хочется делать такое в МапИНФО.
Прошу, по возможности, по-детальнее, как для дурака.
Нужно получить слой, в котором будут полигоны как результат пересечения контуров полигонов двух других слоев.
Интересует два случая.
1) Общая граница первого слоя и второго совпадает. Вот пусть, например, как тут. Синий - лес, зеленый - степь, красный - регион_1, фиолетовый - регион_2.
В итоговом слое нужно получить четыре полигона: 1) лес/регион_1, 2) лес/регион_2, 3) степь/регион_1, 4) степь/регион_2.
Делал когда-то такое в АркГИС, использовал инструмент Intersect. Все выходило прекрасно. Хочется в МИ.
2. Границы слоев не совпадают. Как тут: Цвета обозначают то же.
В результате хочется получить слой, в котором будут 3 полигона (как на рисунке)
1) степь/регион_1, 2) степь/регион_2, 3) лес/регион_2.
Точно не помню, но вроде давно в АркГИС у меня такое не выходило, потому что вроде граница разных слоев не совпадает. Хочется делать такое в МапИНФО.
Прошу, по возможности, по-детальнее, как для дурака.
-
- Активный участник
- Сообщения: 161
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Получения слоя, как результата пересечения двух других
Для обоих случаев будет работать следующий подход (если я правильно понял задачу):
1. Выделяем объекты на «Зоны» (слой д.б. редактируемый)
2. Меню: Объекты/Выбрать изменяемый объект
3. Выделяем объекты на «Регионы»
4. Меню: Объекты/Удалить внешнюю часть…
Если нужно сохранить таблицу «Зоны», то предварительно нужно сделать с нее копию и работать с копией.
1. Выделяем объекты на «Зоны» (слой д.б. редактируемый)
2. Меню: Объекты/Выбрать изменяемый объект
3. Выделяем объекты на «Регионы»
4. Меню: Объекты/Удалить внешнюю часть…
Если нужно сохранить таблицу «Зоны», то предварительно нужно сделать с нее копию и работать с копией.
-
- Активный участник
- Сообщения: 107
- Зарегистрирован: 17 янв 2010, 00:07
- Репутация: 5
- Откуда: Курск
Re: Получения слоя, как результата пересечения двух других
Нужно, чтобы в атрибутах слоя нового были параметры и первого, и второго слоев исходных. Обрезка этого не даст. Короче говоря, нужно, чтобы потом была возможность идентифицировать, результат пересечения чего есть каждый полигон
P.S. Возникла тут идея сделать как Вы советуете. А потом просто обновить колонки в зависимости от положеняи конечных полигонов на исходных
P.S. Возникла тут идея сделать как Вы советуете. А потом просто обновить колонки в зависимости от положеняи конечных полигонов на исходных
Последний раз редактировалось xar4enkkoff 06 апр 2014, 19:59, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Получения слоя, как результата пересечения двух других
придется делать запрос с пространственным условиемxar4enkkoff писал(а):Нужно, чтобы в атрибутах слоя нового были параметры и первого, и второго слоев исходных. Обрезка этого не даст. Короче говоря, нужно, чтобы потом была возможность идентифицировать, результат пересечения чего есть каждый полигон
select * from a,b where a.obj within b.obj into tmp
и лучше, чтобы имена не пересекались (в запросе объединятся записи таблицы а, центроиды которых попадают в объекты в, что в вашем случае даст однозначный результат). Таблицу tmp нужно будет сохранить в файл.
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Получения слоя, как результата пересечения двух других
блин, писал инструкцию, но сообщение не добавилось...
вместо удалить часть нужно разрезать и потом обновить колонку у зон, извлекая значения из адм.терр., объединение данных по признаку объект из адм.терр. содержит объекти из зоны. колонку можно обновить существующую, а можно добавить временную
вместо удалить часть нужно разрезать и потом обновить колонку у зон, извлекая значения из адм.терр., объединение данных по признаку объект из адм.терр. содержит объекти из зоны. колонку можно обновить существующую, а можно добавить временную
Последний раз редактировалось ginpetr 06 апр 2014, 21:43, всего редактировалось 1 раз.
-
- Активный участник
- Сообщения: 161
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Получения слоя, как результата пересечения двух других
После удаления внешней части, постройте запрос для таблиц «Зоны» (измененная) и «Регионы» на пересечение. Из результирующей таблицы можно извлечь много полезного. При построении запроса учитывайте viewtopic.php?f=17&t=16137 .
-
- Активный участник
- Сообщения: 107
- Зарегистрирован: 17 янв 2010, 00:07
- Репутация: 5
- Откуда: Курск
Re: Получения слоя, как результата пересечения двух других
Всем спасибо! Проблема решилась. Я, наверное, некорректно объяснил. Мне сами объекты пересечения не так важны были, как их площадь вкупе с атрибутами исходными от двух слоев.
Проблема решилась идеально вот так:
http://web.pb.com/mapinfopro-jul-2013/Q ... witter"%7D
Проблема решилась идеально вот так:
http://web.pb.com/mapinfopro-jul-2013/Q ... witter"%7D
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Получения слоя, как результата пересечения двух других
Разработчики Mapinfo подумали немного больше, чем вам сообщили продвинутые пользователи, которые сперва вычисляют пересечение, а потом дополнительно еще и площадь, и вместоxar4enkkoff писал(а):Всем спасибо! Проблема решилась. Я, наверное, некорректно объяснил. Мне сами объекты пересечения не так важны были, как их площадь вкупе с атрибутами исходными от двух слоев.
Проблема решилась идеально вот так:
http://web.pb.com/mapinfopro-jul-2013/Q ... witter"%7D
Код: Выделить всё
CartesianArea(Overlap(Cadastre.Obj, Urban_Areas.Obj), "sq m") "Overlap sqm"
Код: Выделить всё
AreaOverlap( ) function
Purpose
Returns the area resulting from the overlap of two closed objects. You can call this function from the MapBasic Window in MapInfo Professional.
Syntax
AreaOverlap( object1, object2 )
object1 and object2 are closed objects.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя