Страница 1 из 1

Как подсчитать количество пикселей в полигоне?

Добавлено: 09 сен 2013, 14:14
li_sasha
Здравствуйте.

имеется shape файл в виде полигона и растр.
Задача, подсчитать количество пикселей в каждом полигоне, но при этом не учитывать те пиксели, которые частично входят в данный полигон. Другими словами, подсчитать только те пиксели, которые полностью находятся в полигоне.
Как это сделать в ERDAS 2010 или ArcGIS 10.

Заранее благодарю за ответ

Re: Как подсчитать количество пикселей в полигоне?

Добавлено: 09 сен 2013, 15:05
lam
ArcGIS 10 - зональная статистика вам в помощь.

Re: Как подсчитать количество пикселей в полигоне?

Добавлено: 09 сен 2013, 15:11
li_sasha
lam писал(а):ArcGIS 10 - зональная статистика вам в помощь.
Спасибо за ответ.
в ArcGIS зональной статистики в расчет берутся частичные полигоны, мне же нужно, чтобы в расчет брались только те пиксели, которые полностью находятся в данном полигоне. С утилитой Zonal Atributs из ERDASa то же самое.
Есть еще какие либо идеи?

Re: Как подсчитать количество пикселей в полигоне?

Добавлено: 09 сен 2013, 18:48
gamm
li_sasha писал(а):
lam писал(а):Есть еще какие либо идеи?
план а) брутфорсим, но нужно много места. Создаем (руками) табличку с углами ячеек, и ID - номером ячейки. Делаем point_in_poly, и считаем, сколько углов попало в полигон, если 4, то ячейка ваша.

план в) тоже брутфорсим, но менее тупо. Скорее всего, арка проверяет вхождение центра ячейки (нужно смотреть инструкцию). Если так, то создаем 4 растра, сдвинутых так, чтобы углы стали центрами, и делаем план (а) на растре

делать все это удобнее не в Арке, а в том же R или любой знакомой среде типа Матлаба.

Re: Как подсчитать количество пикселей в полигоне?

Добавлено: 10 сен 2013, 09:08
lam
li_sasha писал(а):
lam писал(а):ArcGIS 10 - зональная статистика вам в помощь.
Спасибо за ответ.
в ArcGIS зональной статистики в расчет берутся частичные полигоны, мне же нужно, чтобы в расчет брались только те пиксели, которые полностью находятся в данном полигоне. С утилитой Zonal Atributs из ERDASa то же самое.
Есть еще какие либо идеи?
1. Конвертировать грид в Integer
2. Конвертировать грид в точки
3. Построить прямоугольный буфер по точкам заданного размера, т.е. размера пикселя -
viewtopic.php?f=15&t=12791&p=81755&hili ... %80#p81755
4. Сделать выборку (Select By Location) тех прямоугольных буферов, которые полностью содержаться в полигонах и записать в новый слой.
5. Используя инструмент из тулбокса Spatial Join, присоединить к слою прямоугольных буферов информацию из слоя полигонов, а именно поле идентификации полигонов.
6. Посчитать количество прямоугольных буферов, т.е. пикселей, которые полностью содержаться в соответствующих полигонах, для этого открыть таблицу слоя прямоугольных буферов, указать поле идентификации полигонов и затем правая кнопка мыши - Summarize..., в результате будет создана таблица с количеством прямоугольных буферов, т.е. пикселей, которые полностью содержаться в соответствующих полигонах.