আমি একটি নির্দিষ্ট মাপদণ্ডের আশেপাশে একটি রাস্টার প্রতিটি কক্ষের কেন্দ্রিয় পরিসংখ্যান গণনা করতে দেখছি।
পটভূমি - আমার কাছে তিনটি বাইনারি রাস্টার রয়েছে, প্রত্যেকে একক উদ্ভিদের আগ্রহের প্রতিনিধিত্ব করে। আমি আমার অধ্যয়নের ক্ষেত্রের যে কোনও ঘরের 20 কিলোমিটার ^ 2 এর মধ্যে প্রতিটি গাছের প্রকারের শতাংশের কভারেজ গণনা করতে চাই (আশেপাশে মোট কোষ) সমস্যাটি হ'ল আমি প্রতিটি কক্ষের চারপাশে একটি সাধারণ বৃত্ত বা বর্গাকার পাড়া ব্যবহার করতে পারি না কারণ, যদি আমি এটি করি, যোগফলটি গণনা করতে ব্যবহৃত অনুসন্ধান অঞ্চলটি আমার অধ্যয়নের ক্ষেত্রের বাইরের অঞ্চলগুলিকে অন্তর্ভুক্ত করবে। এই ব্যতিক্রমটি গুরুত্বপূর্ণ কারণ পরিসংখ্যানগুলি একটি আবাসনের মডেলের ইনপুট হিসাবে ব্যবহৃত হবে এবং আমার অধ্যয়নের ক্ষেত্রের বাইরের অঞ্চলগুলিকে সম্ভাব্য আবাস হিসাবে বিবেচনা করা যায় না - সেগুলি নগরায়িত। এগুলি সহ আমাকে ভ্রান্ত পরিসংখ্যান দিত। তো, আমি কি ' এনআমার মানদণ্ডগুলি পূরণ করে) আমার কাঙ্ক্ষিত পাড়ার আকারের সমান একটি অঞ্চল কভার করতে প্রয়োজনীয় কক্ষের সংখ্যা দ্বারা নির্ধারিত)। মানদণ্ডগুলি হ'ল এগুলি একটি নগরায়িত অঞ্চলে পড়ে না। আমি ভাবছি যে সেলুলার অটোমেটার কিছু ফর্ম ব্যবহার করা উচিত। যদিও আমি সিএর সাথে কখনই কাজ করিনি।
আমার ধারণা আমি যা পছন্দ করি তা হ'ল স্টার্টার কোডের মতো, বা সঠিক দিকের একটি পয়েন্ট।
নীচে কমেন্টের জন্য উত্তর দিন:
ধরা যাক আমি আমার স্টাডি সাইটের সীমানায় একটি ঘরের জন্য এই পরিসংখ্যান গণনা করছি। যদি আমি আমার অধ্যয়নের ক্ষেত্রের বাইরের সমস্ত অঞ্চলকে শূন্য (অথবা নোডাটা উপেক্ষা) এর জন্য নির্ধারণ করি, তবে আমি এমন একটি পরিসংখ্যান পেয়ে যা আমি আগ্রহী এমন অঞ্চলের প্রায় অর্ধেক অংশকে উপস্থাপন করি So সুতরাং, 10 কিলোমিটার ^ 2 অঞ্চলে শতাংশ কভারেজ পরিবর্তে 20 কিমি ^ 2 অঞ্চল। যেহেতু আমি হোম রেঞ্জের আকারগুলি অধ্যয়ন করছি তা গুরুত্বপূর্ণ। আশেপাশের অঞ্চলে আকৃতি পরিবর্তন করতে হবে, যেহেতু প্রাণীরা প্রাকৃতিক দৃশ্যকে দেখায় / ব্যবহার করে। যদি তাদের 20 কিলোমিটার ^ 2 প্রয়োজন হয়, তারা আকৃতি বা তাদের বাড়ির অঞ্চল পরিবর্তন করবে। আমি যদি নোডাটা উপেক্ষা করে চেক না করি তবে সেল আউটপুট নোডাটা হবে - এবং নোডাটা কোনও সহায়তা নয়।
10/24/2014 হিসাবে "অগ্রগতি"
শ্যাপলি এবং ফিয়োনাকে ব্যবহার করে আমি এ পর্যন্ত কোডটি নিয়ে এসেছি:
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
দুর্ভাগ্যক্রমে, এটি খুব ধীরে ধীরে।