指定した基準の近傍内で、ラスターの各セルの焦点統計を計算しようとしています。
背景-3つのバイナリラスタがあり、それぞれが関心のある単一の植生タイプを表します。調査地域内のセル(近隣のセルの合計/合計)から20 km ^ 2以内の各植生タイプの被覆率を計算したいと思います。問題は、各セルの周囲に単純な円または正方形の近傍を使用できないことです。これを行うと、合計の計算に使用される検索領域に研究領域外の領域が組み込まれるためです。この例外は重要です。統計は生息地モデルの入力として使用され、研究エリア外の地域は生息地の可能性があると見なすことができないため、都市化されているためです。それらを含めると、誤った統計が得られます。だから、私はnは、基準を満たす、希望する近隣のサイズに等しいエリアをカバーするために必要なセルの数によって決定されます。基準は、都市化された地域に該当しないことです。何らかの形のセルオートマトンを使用すべきだと考えています。私はCAで働いたことはありませんが。
私が望むのは、スターターコード、または正しい方向のポイントのようなものだと思います。
以下のコメントに返信:
私の研究サイトの境界にあるセルのこの統計を計算しているとしましょう。調査エリア外のすべてのエリアをゼロに割り当てる(またはNoDataを無視する)と、関心のあるエリアカバレッジの約半分を表す統計が得られます。したがって、約10 km ^ 2のエリアのカバレッジ率、20 km ^ 2エリアの代わりに。私は家の範囲のサイズを勉強しているので、これは重要です。それは動物が風景を見る/使用する方法であるため、近所は形を変えなければなりません。20 km ^ 2が必要な場合は、形状またはホームテリトリーを変更します。[NoDataを無視する]チェックボックスをオンにしない場合、セル出力はNoDataになり、NoDataは役に立ちません。
2014年10月24日現在の「プログラム」
ShapelyとFionaを使用してこれまでに作成したコードは次のとおりです。
import numpy as np
import pprint
import shapely
from shapely.geometry import*
import fiona
from fiona import collection
import math
traps = fiona.open('C:/Users/Curtis/Documents/ArcGIS/GIS_Data/occurrence/ss_occ.shp', 'r')
study_area = fiona.open('C:/Users/Curtis/Documents/ArcGIS/GIS_Data/Study_Area.shp', 'r')
for i in study_area: #for every record in 'study_area'
sa = shape(i['geometry']) #make a variable called 'sa' that is a polygon
grassland = fiona.open('C:/Users/Curtis/Documents/ArcGIS/GIS_Data/land_cover/polys_for_aa/class3_aa.shp', 'r')
pol = grassland.next()
gl = MultiPolygon([shape(pol['geometry']) for pol in grassland])
areaKM2 = 20
with traps as input:
r = (math.sqrt(areaKM2/math.pi))*1000
for point in input:
pt = shape(point['geometry'])
pt_buff = pt.buffer(r)
avail_area = pt_buff.intersection(sa).area
# works to here
while avail_area < areaKM2:
r += 10
pt_buff = pt.buffer(r)
avail_area = pt_buff.intersection(sa).area
perc_cov = pt_buff.intersection(gl).area//areaKM2
print perc_cov
残念ながら、それは信じられないほど遅いです。