উত্তর:
টিএফডাব্লু জেনারেট করার সহজতম উপায় হ'ল জিডিএল ব্যবহার করে পাইথন বা জাভাতে একটি স্ক্রিপ্ট লেখা যা কোডের কয়েকটি মুঠোয় লাইন হবে।
পুরানো শৈলীর তৈরি (প্রাক অর্কগিস 9) .প্রিজ ফাইলগুলি জিডিএল সমর্থিত নয় , কেবল পঠনযোগ্য ( এখানে দেখুন )। নতুন-স্টাইলের (ডাব্লুকেটি ভিত্তিক) ফাইলগুলি তৈরির জন্য সমর্থিত তবে এটি গ্যারান্টিযুক্ত নয় যে এগুলি সমস্ত ক্ষেত্রে আবরণ করে। তবে যেভাবেই হোক, স্থানচ্যুতি কার্যকলাপের সর্বাধিক ক্ষেত্রে, আমি একটি পাইথন স্ক্রিপ্ট লিখেছি যা আপনার প্রয়োজন অনুযায়ী করে। চেক করার বা কোনও ত্রুটি নেই, তবে এটি যে টিফস আমাকে দিতে হয়েছিল তা পরিচালনার জন্য কাজ করে, ওয়াইএমএমভি।
# Written by MerseyViking (mersey dot viking at gmail dot com), 2011.
# Released into the public domain - May 8, 2011
# I accept no responsibility for any errors or loss of data, revenue, or life this script may cause. Use at your own risk.
import osgeo.gdal as gdal
import osgeo.osr as osr
import os
import glob
import sys
def generate_tfw(path, gen_prj):
for infile in glob.glob(os.path.join(path, '*.tif')):
src = gdal.Open(infile)
xform = src.GetGeoTransform()
if gen_prj == 'prj':
src_srs = osr.SpatialReference()
src_srs.ImportFromWkt(src.GetProjection())
src_srs.MorphToESRI()
src_wkt = src_srs.ExportToWkt()
prj = open(os.path.splitext(infile)[0] + '.prj', 'wt')
prj.write(src_wkt)
prj.close()
src = None
edit1=xform[0]+xform[1]/2
edit2=xform[3]+xform[5]/2
tfw = open(os.path.splitext(infile)[0] + '.tfw', 'wt')
tfw.write("%0.8f\n" % xform[1])
tfw.write("%0.8f\n" % xform[2])
tfw.write("%0.8f\n" % xform[4])
tfw.write("%0.8f\n" % xform[5])
tfw.write("%0.8f\n" % edit1)
tfw.write("%0.8f\n" % edit2)
tfw.close()
if __name__ == '__main__':
generate_tfw(sys.argv[1], sys.argv[2])
কমান্ড লাইন থেকে এটি কল করুন:
python gen_tfw.py <path_to_tiff_directory> [prj]
দ্বিতীয় প্যারামিটারটি ডাব্লুকেটি-স্টাইলের প্রজ ফাইলগুলি তৈরি করতে বা কেবল .TFWs তৈরি করতে অন্য কিছু হতে পারে।
যদি আপনি যে কোনও কারণে পাইথন স্ক্রিপ্ট ব্যবহার করতে না পারেন তবে আপনি ব্যবহার করতে পারেন:
gdal_translate -co "TFW=YES" in.tif out.tif
তবে এটি চিত্রের ডেটাও অনুলিপি করবে, সুতরাং আপনাকে মূলটি মুছতে হবে। এবং অবশ্যই, এটি উভয় গন্ধের .prj ফাইল উত্পন্ন করবে না। তবে অনুমান করে আপনার সমস্ত টিফ একই প্রজেক্টে রয়েছে, আপনি কেবল একটি .prj ফাইলটি হস্তশিল্প করতে পারেন এবং এটি সমস্ত উত্স চিত্রের জন্য নকল করতে পারেন।
generate_tfw
ঘোরানো রাস্টারগুলিতে সঠিকভাবে কাজ করে না, যা ভাগ্যক্রমে কম সাধারণ। এটি কিছুটা ম্যাট্রিক্সের গুণণের সাথে ঠিক করা যেতে পারে।
Listgeo উপযোগ যে libgeotiff দিয়ে আসে একটা চমৎকার কম্যান্ড-লাইন ইউটিলিটি যে GeoTIFF ফাইল থেকে TWF ফাইল নিষ্কাশন করতে পারেন হয়।
উদাহরণস্বরূপ, আমার জিওটিআইএফএফগুলির একটি ডিরেক্টরি রয়েছে এবং আমি ওএসজিও 4 ডাব্লু এর অংশ হিসাবে লিবিজিওটিফ ইনস্টল করেছি have আপনি OSGeo4w শেলটি চালাতে পারেন এবং এটি করুন:
$ listgeo -tfw BN24_GeoTif_1-01.tif
World file written to 'BN24_GeoTif_1-01.tfw'.
যদি একই ইউটিলিটিটিও পিআরজে ফাইলটি বের করতে পারে তবে এটি দুর্দান্ত হবে।
আসলেই নয় - আপনি যদি ফাইলগুলির প্রজেকশনটি জানেন তবে আপনি http://spatialreferences.org এ prj ফাইলের বিষয়বস্তুটি সন্ধান করতে পারেন এবং তারপরে প্রতিটি চিত্রের জন্য একটি .prj ফাইলে টেমপ্লেট অনুলিপি করতে একটি শেল স্ক্রিপ্ট ব্যবহার করতে পারেন।
সেগুলিকে জিওরফারেন্সিং প্রতি ইমেজ ভিত্তিতে করা দরকার কারণ .tfw ফাইলটি প্রতিটি চিত্রের জন্য আলাদা হবে (যদি না সেগুলি একই স্থানের হয় তবে)। এটি করার জন্য আপনার যদি কোনও ডেস্কটপ জিআইএস-এ অ্যাক্সেস না থাকে তবে http://warper.geothings.net/ যাওয়ার উপায় হতে পারে।
জাভাতে জিওটুলগুলি ব্যবহার করে আপনি এই কোডটি ব্যবহার করতে পারেন:
// read geotiff file (using org.geotools.gce.geotiff.GeoTiffReader)
GeoTiffReader reader = new GeoTiffReader(geotiff);
// get transformation
AffineTransform transformation = reader.getMetadata().getModelTransformation();
// create org.geotools.data.WorldFileWriter (world file is created automatically!)
WorldFileWriter worldFileWriter = new WorldFileWriter(myWorldFile, transformation);
আপনি যদি প্রক্ষেপণ পেতে চান তবে আপনি এই কোডটি ব্যবহার করতে পারেন:
// get the projection string from CRS
CoordinateReferenceSystem crs = reader.getCoordinateReferenceSystem();
String projectionString = crs.toWKT();
projectionString
আপনার অভিক্ষেপ ফাইলটিতে কেবল লিখিত সামগ্রী লিখুন ।