আমি কীভাবে পয়েন্ট দ্বারা একটি রাস্টার থেকে মানগুলি বের করতে পারি?
আমি আর্কগিসে পছন্দ করি না।
আমি কিউগিস বা ম্যাপউইন্ডো বা অন্যান্য ওপেন সোর্স গিসে পছন্দ করি।
আমি কীভাবে পয়েন্ট দ্বারা একটি রাস্টার থেকে মানগুলি বের করতে পারি?
আমি আর্কগিসে পছন্দ করি না।
আমি কিউগিস বা ম্যাপউইন্ডো বা অন্যান্য ওপেন সোর্স গিসে পছন্দ করি।
উত্তর:
কিউজিআইএস "পয়েন্ট স্যাম্পলিং সরঞ্জাম" আপনার যে প্লাগইনটি সন্ধান করছেন তা হওয়া উচিত।
এটি কীভাবে ব্যবহার করবেন সে সম্পর্কে এখানে বিশদ বিবরণ দেওয়া আছে: http://pvanb.wordpress.com/2010/02/15/sampling-raster-values-at-Point-locations-in-qgis/
পাওলোর মন্তব্যের ভিত্তিতে আপডেট করুন:
প্লাগইনটি একমাত্র সমাধান নয় এবং সর্বদা সহজ সমাধান নয়। বিকল্প সমাধান হ'ল প্রসেসিং সরঞ্জামবাক্সে সাগা ফাংশন 'পয়েন্ট টু রাস্টার ভ্যালু যুক্ত করুন'। বিশদের জন্য দেখুন http://pvanb.wordpress.com/2014/07/01/sampling-raster-values-at-Point-locations-in-qgis-an-update/
PostGIS 2.0 এ আপনি করতে পারেন:
SELECT ST_Value(rast, geom) val
FROM yourrastertabe, yourpointtable
WHERE ST_Intersects(rast, geom)
আপনি এটি লোড করার সময় আপনার রাস্টারটি খুব ছোট টাইলযুক্ত রয়েছে তা নিশ্চিত করুন (লোডার সহ -t 10x10)।
এই থ্রেডে উল্লিখিত কিউজিআইএস এবং সাগা জিইউআই সরঞ্জামগুলির সাথে আমার সমস্যা Raster values to points
ছিল ( কোনও কারণে ব্যর্থ হয়ে এবং অসহযোগী ত্রুটি ছুঁড়ে মারছিল এবং গ্রাস v.sample
একটি সম্পূর্ণ নতুন স্তর তৈরি করেছিল যা সহায়ক ছিল না)। কিছু সময়ের জন্য জিইউআই সরঞ্জামগুলির সাথে ব্যর্থ হওয়ার পরে, আমি ফিল্ড ক্যালকুলেটরে এটি করার চেষ্টা করেছি। এটি বেশ ভালভাবে কাজ করেছে এবং জিইউআইগুলির অনুমতি দেওয়ার চেয়ে আমি প্রক্রিয়াটি কিছুটা ভালভাবে নিয়ন্ত্রণ করতে সক্ষম হয়েছি এবং সেই সাথে কিছু অন্যান্য গণনাও করতে পেরেছি।
বলুন যে আপনার একই স্তরের নামযুক্ত একটি স্তর রয়েছে pts
এবং অন্য নামকরণ rast
করেছেন একই রকম সমন্বয় ব্যবস্থাতে। আপনি rast
প্রতিটি এক্সে নমুনা দিতে চান , ওয়াই জোড়া প্রতিনিধিত্ব করেছেন pts
।
আপনি যদি আগে ফিল্ড ক্যালকুলেটর ব্যবহার না করে থাকেন তবে এটি বেশ সহজ। আপনি "এক্সপ্রেশন" বাক্সে আপনার গণনা প্রবেশ করবেন এবং Q আপনাকে ডান কলামে সহায়তার পাঠ্য সহ মাঝারি কলামে প্রচুর ভেরিয়েবল এবং ক্রিয়াকলাপ দেয়। আমি এই প্রক্রিয়াটি চারটি ধাপে বিভক্ত করব:
pts
আপনি যে স্তরটির সাথে নমুনা করতে চান তার বৈশিষ্ট্যের টেবিলটি খুলুন ।
আপনি একবার ফিল্ড ক্যালকুলেটর ডায়লগ এ গেলে, আপনি কোনও নতুন ক্ষেত্র তৈরি করতে চান বা আপনার স্তরটিতে বিদ্যমান ক্ষেত্রটি সংশোধন করতে চান তা চয়ন করুনpts
।
এর পরে, নতুন বা বিদ্যমান pts
বৈশিষ্ট্য কলামটি পূরণ করতে একটি অভিব্যক্তি তৈরি করুন । আপনি আমার জন্য কাজ করা এক্সপ্রেশন কোডটি সংশোধন করে শুরু করতে পারেন:
raster_value('rast', 1, make_point($x, $y))
raster_value()
একটি রাস্টার স্তর নাম 'rast'
, একটি ব্যান্ড নম্বর 1
এবং পয়েন্ট জ্যামিতি সরবরাহ করতে হবে make_point()
। $x
এবং $y
বৈশিষ্ট্য সারণীর প্রতিটি সারিতে বিন্দুর অবস্থানের উপর নির্ভর করে জ্যামিতি ভেরিয়েবলগুলি।এই পদ্ধতি অন্য রাস্টার স্তর নামক মান বিয়োগ মত গাণিতিক অপারেশন পারবেন other_rast
থেকে rast
, যা আমার গুই সরঞ্জাম সময়ের সাথে একটি গুচ্ছ সংরক্ষণ করা হয়েছে। নীচে উদাহরণ:
raster_value('rast', 1, make_point($x, $y)) - raster_value('other_rast', 1, make_point($x, $y))
আবার নোট করুন যে তিনটি স্তর pts
, rast
এবং other_rast
এই পদ্ধতিটি কাজ করার জন্য অবশ্যই একই সমন্বিত সিস্টেমে থাকতে হবে।
কিউজিআইএস ৩.২.২ এবং সাগা (কিউজিআইএস-এ ডিফল্টরূপে ইনস্টল করা) ব্যবহার করার চেষ্টা করুন: "রাস্টার ভ্যালুতে পয়েন্টস" ফাংশনটি আপনার জন্য সবকিছু করবে: এটি একটি চিত্র ফাইল নেয় এবং রাস্টার চিত্র থেকে তথ্য গ্রহণ করে একে পয়েন্ট-ভেক্টর আকারে রূপান্তর করে।
হাথর্ন বিয়ারের জিএমই সরঞ্জামগুলি কমান্ড লাইনের মাধ্যমে খুব সুন্দরভাবে এটি করে এবং 'ফর' লুপের সাথে সহজে ব্যাচিংয়ের অনুমতি দেয়।
isectpntrst(in="path/to/shapefile", raster="path/to/raster", field="fieldname")
গ্রাস জিআইএস-এ আপনি জিইআইআই-তে মানচিত্রটি জিজ্ঞাসা করতে পারেন বা http://grass.osgeo.org/gdp/html_grass64/r.hat.html ব্যবহার করতে পারেন
http://gis-techniques.blogspot.com/2012/10/extract-raster-values-from-points.html বিন্দু থেকে আর রাস্টার প্যাকেজ এক্সট্র্যাক্ট রাস্টার মান ব্যবহার করতে ধাপে ধাপে গাইড রয়েছে।
আপনি এটি ব্যবহার করতে পারেন: http://www.saga-gis.org/saga_module_doc/2.1.3/ shapes_grid_3.html
এটি কিগিসের সাগা টুলবক্সে রয়েছে! এটি এক পদক্ষেপে সবকিছু করে :)
পাইথন এবং জিডাল ব্যবহার করে আমি এখানে একটি ফাংশন লিখেছি। ফাংশনটি রাস্টারগুলির একটি তালিকা এবং পয়েন্টের স্থানাঙ্কগুলি সহ একটি পান্ডাস ডেটাফ্রেম নিয়ে থাকে এবং পয়েন্ট কোঅর্ডিনেটস, সম্পর্কিত রাস্টার কোষগুলির জন্য সেন্ট্রয়েড এবং সম্পর্কিত সেল মানগুলির সাথে একটি পান্ডাস ডেটাফ্রেম প্রদান করে। ফাংশনটি আন্ডার ডেভলপমেন্ট প্যাকেজ কোরোসপি প্যাকেজের অংশ ( এখানে পাওয়া যায় )।
import pandas
import numpy
from osgeo import gdal
def getValuesAtPoint(indir, rasterfileList, pos, lon, lat):
#gt(2) and gt(4) coefficients are zero, and the gt(1) is pixel width, and gt(5) is pixel height.
#The (gt(0),gt(3)) position is the top left corner of the top left pixel of the raster.
for i, rs in enumerate(rasterfileList):
presValues = []
gdata = gdal.Open('{}/{}.tif'.format(indir,rs))
gt = gdata.GetGeoTransform()
band = gdata.GetRasterBand(1)
nodata = band.GetNoDataValue()
x0, y0 , w , h = gt[0], gt[3], gt[1], gt[5]
data = band.ReadAsArray().astype(numpy.float)
#free memory
del gdata
if i == 0:
#iterate through the points
for p in pos.iterrows():
x = int((p[1][lon] - x0)/w)
Xc = x0 + x*w + w/2 #the cell center x
y = int((p[1][lat] - y0)/h)
Yc = y0 + y*h + h/2 #the cell center y
try:
if data[y,x] != nodata:
presVAL = [p[1][lon],p[1][lat], '{:.6f}'.format(Xc), '{:.6f}'.format(Yc), data[y,x]]
presValues.append(presVAL)
except:
pass
df = pandas.DataFrame(presValues, columns=['x', 'y', 'Xc', 'Yc', rs])
else:
#iterate through the points
for p in pos.iterrows():
x = int((p[1][lon] - x0)/w)
y = int((p[1][lat] - y0)/h)
try:
if data[y,x] != nodata:
presValues.append(data[y,x])
except:
pass
df[rs] = pandas.Series(presValues)
del data, band
return df
এটি কীভাবে চালানো যায় তার উদাহরণ দেওয়া হয়েছে যে রাস্টাররা আপনার বর্তমান কার্যনির্বাহী ডিরেক্টরিতে রয়েছে:
rasDf = getValuesAtPoint('.', ['raster1', 'raster2'], inPoints, 'x', 'y')
আপনার যদি এফএমই অ্যাক্সেস থাকে তবে আপনি এফএমই ওয়ার্কবেঞ্চে দুটি ট্রান্সফর্মার ব্যবহার করতে পারেন।
RasterCellCoercer ( "পৃথক পয়েন্ট বা বহুভুজ মধ্যে সমস্ত ইনপুট সাংখ্যিক রাস্টার বৈশিষ্ট্য বিশ্লিষ্ট হয়েছে। এক ভেক্টর হিসেবে ফিচার রাস্টার প্রতিটি কক্ষের জন্য আউটপুট।")
PointOnRasterValueExtractor ( "বিন্দু বৈশিষ্ট্য এবং একটি একক রেফারেন্স রাস্টার লাগে। আউটপুট প্রতিটি বিন্দু অবস্থানে ব্যান্ড এবং প্যালেট মান (গুলি) নিয়ে গঠিত।")
দ্রুত চিন্তা: