Здравствуй, Максим!
Хорошо. Если это действительно интересно...
1. Было задание посчитать береговую линию в каждом из 20 российских заповедников, имеющих выход к морю, причем в эту береговую линию входят береговые линии островов, попадающих в границы заповедников, как полностью, так и частично.
2. До этого мне не приходилось считать береговые линии, но я представлял, что это простая геометрическая операция с контурами полигонов. Про то, что можно резать полигонами полилинии, я тоже раньше не знал, так как не пользовался этим. Поэтому и обратился сюда за помощью.
3. Пока шла дискуссия, я немного подумал, порисовал карандашом на бумаге, и понял, что можно решить эту задачку с помощью одних только периметров полигонов РФ и заповедников. Вот как это выглядит.
4. Полигон заповедника располагается на побережье и покрывает часть суши и прилегающей акватории с островами.
В аттрибутивной таблице слоя РФ подсчитываем ее периметр (громоздко, согласен, можно было кусок вокруг вырезать, но мне предстояло считать много полигонов, поэтому не стал).
5. Делаем отдельный слой Астраханского заповедника и union все три участка.
6. Делаем intersect полигона РФ полигоном заповедника. Получаем ряд полигонов, очерченных внутри полигона РФ + острова. Делаем из них отдельный слой и подсчитываем его периметр.
7. Затем делаем clip полигона заповедника из полигона РФ. В результате получаем полигон РФ с вырезками и без островов. В аттрибутивной таблице подсчитываем периметр этого слоя с вырезками.
8. Видим, что длины ВЫРЕЗОК равны длинам ВНЕШНИХ краев полигона заповедника (которыми он "соприкасался" с полигоном РФ).
9. Теперь, если (например в excel) из периметра РФ с "вырезками" вычесть периметр полигонов заповедника, полученных в результате intersect, мы получим часть периметра РФ (внимание!): без контуров "вырезок", так же из него будет вычтена удвоенная длина береговых линий островов, попавших в заповедник, и будет вычтена удвоенная длина береговой линии материковой части заповедника. Понятно? Просто, когда мы вычитали длины береговых линий и островов их и так уже не было, так как была произведена операция clip, поэтому они оказались вычтены в двойном размере.
10. Нам надо получить длину береговой линии заповедника + длины береговых линий островов. Для этого из нетронутого периметра РФ вычитаем то, что получилось в п. 9. В результате получаем удвоенную длину береговой линии заповедника + длины береговых линий островов. Делим пополам. Получаем искомое.
11. Но все это не нужно, если применять Analysis tools (хвала gis-lab!!!)
