স্ক্র্যাচ থেকে একটি বহু-স্পেক্টরাল চিত্র তৈরি করা


10

এটিতে কিছু পরীক্ষা করার জন্য আমি সেরো থেকে একটি মাল্টিস্পেকট্রাল চিত্র তৈরি করতে চাই। কিছু সরল সাধারণ 5 টি সম্পূর্ণ ইউনিফর্ম ব্যান্ডের মতো লবণ এবং মরিচ শোরগোল সহ বা কেন্দ্রে বিভিন্ন মানের একটি বর্গক্ষেত্র। স্পষ্টতই এটি কেবল ম্যাট্রিক্সের একটি স্ট্যাক, একটি বহুমাত্রিক অ্যারে, যা উত্পন্ন করার জন্য বেশ সোজা এগিয়ে। আমি পাইথন এবং জিডিএল ব্যবহার করে এটি অর্জন করতে চাই তবে জিডালটি বেশ হারমেটিক হচ্ছে, এটির হ্যাং আমি মোটেই পাই না। আমি আদর্শভাবে একটি জিওটিফ ফাইল তৈরি করতে চাই। কেউ কি এই আমাকে সাহায্য করতে পারে? কিছু পয়েন্টার বা কিছু জিডিএল টিউটোরিয়াল যা খুব মৃদু? সবাইকে ধন্যবাদ.

উত্তর:


15

আপনি gdal.band.WriteArray পদ্ধতিটি চান। জিডিএল এপিআই টিউটোরিয়ালটিতে একটি উদাহরণ রয়েছে (নীচে পুনরায় উত্পাদিত):

format = "GTiff"
driver = gdal.GetDriverByName( format )
dst_ds = driver.Create( dst_filename, 512, 512, 1, gdal.GDT_Byte )
dst_ds.SetGeoTransform( [ 444720, 30, 0, 3751320, 0, -30 ] )

srs = osr.SpatialReference()
srs.SetUTM( 11, 1 )
srs.SetWellKnownGeogCS( 'NAD27' )
dst_ds.SetProjection( srs.ExportToWkt() )

raster = numpy.zeros( (512, 512), dtype=numpy.uint8 )    
dst_ds.GetRasterBand(1).WriteArray( raster )

# Once we're done, close properly the dataset
dst_ds = None

এলোমেলো ডেটা তৈরির জন্য, numpy.random মডিউলটি দেখুন।

এখানে আরও কাজ করার সম্পূর্ণ উদাহরণ:

from osgeo import gdal, osr
import numpy

dst_filename = '/tmp/test.tif'
#output to special GDAL "in memory" (/vsimem) path just for testing
#dst_filename = '/vsimem/test.tif'

#Raster size
nrows=1024
ncols=512
nbands=7

#min & max random values of the output raster
zmin=0
zmax=12345

## See http://gdal.org/python/osgeo.gdal_array-module.html#codes
## for mapping between gdal and numpy data types
gdal_datatype = gdal.GDT_UInt16
np_datatype = numpy.uint16

driver = gdal.GetDriverByName( "GTiff" )
dst_ds = driver.Create( dst_filename, ncols, nrows, nbands, gdal_datatype )

## These are only required if you wish to georeference (http://en.wikipedia.org/wiki/Georeference)
## your output geotiff, you need to know what values to input, don't just use the ones below
#Coordinates of the upper left corner of the image
#in same units as spatial reference
#xmin=147.2  
#ymax=-34.54

#Cellsize in same units as spatial reference
#cellsize=0.01

#dst_ds.SetGeoTransform( [ xmin, cellsize, 0, ymax, 0, -cellsize ] )
#srs = osr.SpatialReference()
#srs.SetWellKnownGeogCS("WGS84")
#dst_ds.SetProjection( srs.ExportToWkt() )

raster = numpy.random.randint(zmin,zmax, (nbands, nrows, ncols)).astype(np_datatype )  
for band in range(nbands):
    dst_ds.GetRasterBand(band+1).WriteArray( raster[band, :, :] )

# Once we're done, close properly the dataset
dst_ds = None

অনেক অনেক ধন্যবাদ, এই জিনিসগুলি কী করে পড়তে পারে? সেটআউটএম (ঠিক আছে আমি কী তা জানি) সেটওয়েলকান্টিড জিওগসিএস, সে প্রজেকশন, জিও ট্রান্সফর্ম ইত্যাদি সেট করুন ... তবে আমার ঠিক যেমনটি লাগে ঠিক তেমন দেখাচ্ছে। অনেক ধন্যবাদ!
জেকুইয়া


2

আমি জানি আপনি এটি যা চেয়েছিলেন তা নয়, তবে আপনি যদি চান কেবল মাল্টিস্পেক্টেক্টাল বা হাইপারস্পেকট্রাল নমুনা ডেটা - অপটিক্স প্রকল্পের এই পরীক্ষার ডেটা কাজ করতে পারে। পর্যায়ক্রমে, আপনি আর্থ এক্সপ্লোরার থেকে সরাসরি ল্যান্ডস্যাট ডেটা পেতে পারেন

এই সাইটটিতে 2D নিম্পি অ্যারেটিকে একটি একক-ব্যান্ড জিওটিআইএফএফ এবং একটি মাল্টি-ব্যান্ড জিওটিআইএফএফকে একটি 3 ডি নাম্পির অ্যারে রূপান্তর করতে উদাহরণ কোড রয়েছে।

সম্পাদনা করুন:

আরও গবেষণায় 'অনুপস্থিত উদাহরণ', 3 ডি নম্পি অ্যারে -> মাল্টি-ব্যান্ড জিওটিআইএফএফ সহ উদাহরণ কোডের একটি পৃষ্ঠা পাওয়া যায়।


না, আমার নিজের ইমেজটি তৈরি করা দরকার। পৃষ্ঠাটি আকর্ষণীয়, আপনাকে ধন্যবাদ, আমার আসলে যা দরকার তা হ'ল অনুপস্থিত উদাহরণ, কীভাবে একটি 3 ডি নাম্পার অ্যারেটি মাল্টি-ব্যান্ড জিওটিআইএফএফ হিসাবে সংরক্ষণ করতে হয়। তবে অনেক ধন্যবাদ!
জেকুইয়া

আরও তথ্যের সাথে সম্পাদিত
ম্যাপিংটম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.