জিওটিআইএফএফ ফাইলগুলির ফোল্ডারের জন্য টিএফডাব্লু এবং পিআরজে ফাইল তৈরি করছেন? [বন্ধ]


16

আমার একটি ফোল্ডার রয়েছে যা জিওটিআইএফএফ ফরম্যাটে প্রচুর পরিমাণে ফাইল রয়েছে।

এই চিত্রগুলির প্রত্যেকটির জন্য আমার পিআরজে এবং টিএফডাব্লু উভয়ই ফাইল তৈরি করতে হবে।

এই কাজ করতে কিছু উপায় আছে কি?


কোন সফটওয়্যার ব্যবহার করছি? আপনার কাছে কী পাওয়া যায়?
জেবিচর্চিল

উত্তর:


16

টিএফডাব্লু জেনারেট করার সহজতম উপায় হ'ল জিডিএল ব্যবহার করে পাইথন বা জাভাতে একটি স্ক্রিপ্ট লেখা যা কোডের কয়েকটি মুঠোয় লাইন হবে।

পুরানো শৈলীর তৈরি (প্রাক অর্কগিস 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 ফাইলটি হস্তশিল্প করতে পারেন এবং এটি সমস্ত উত্স চিত্রের জন্য নকল করতে পারেন।


2
দ্রষ্টব্য যে generate_tfwঘোরানো রাস্টারগুলিতে সঠিকভাবে কাজ করে না, যা ভাগ্যক্রমে কম সাধারণ। এটি কিছুটা ম্যাট্রিক্সের গুণণের সাথে ঠিক করা যেতে পারে।
মাইক টি

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

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

19

Listgeo উপযোগ যে libgeotiff দিয়ে আসে একটা চমৎকার কম্যান্ড-লাইন ইউটিলিটি যে GeoTIFF ফাইল থেকে TWF ফাইল নিষ্কাশন করতে পারেন হয়।

উদাহরণস্বরূপ, আমার জিওটিআইএফএফগুলির একটি ডিরেক্টরি রয়েছে এবং আমি ওএসজিও 4 ডাব্লু এর অংশ হিসাবে লিবিজিওটিফ ইনস্টল করেছি have আপনি OSGeo4w শেলটি চালাতে পারেন এবং এটি করুন:

$ listgeo -tfw BN24_GeoTif_1-01.tif
World file written to 'BN24_GeoTif_1-01.tfw'.

যদি একই ইউটিলিটিটিও পিআরজে ফাইলটি বের করতে পারে তবে এটি দুর্দান্ত হবে।


"যদি একই ইউটিলিটিটি পিআরজে ফাইলও বের করতে পারে তবে এটি দুর্দান্ত হবে।" -> তবে তা হয় না।
অ্যাস্ট্রোজুয়ানলু

0

আসলেই নয় - আপনি যদি ফাইলগুলির প্রজেকশনটি জানেন তবে আপনি http://spatialreferences.org এ prj ফাইলের বিষয়বস্তুটি সন্ধান করতে পারেন এবং তারপরে প্রতিটি চিত্রের জন্য একটি .prj ফাইলে টেমপ্লেট অনুলিপি করতে একটি শেল স্ক্রিপ্ট ব্যবহার করতে পারেন।

সেগুলিকে জিওরফারেন্সিং প্রতি ইমেজ ভিত্তিতে করা দরকার কারণ .tfw ফাইলটি প্রতিটি চিত্রের জন্য আলাদা হবে (যদি না সেগুলি একই স্থানের হয় তবে)। এটি করার জন্য আপনার যদি কোনও ডেস্কটপ জিআইএস-এ অ্যাক্সেস না থাকে তবে http://warper.geothings.net/ যাওয়ার উপায় হতে পারে।


2
জিওটিআইএফএফ ফাইলগুলি ছাড়া প্রায়শই মেটাডেটাতে প্রোজেকশন এবং ওয়ার্ল্ড ফাইল এম্বেড থাকে .. সুতরাং এই সমস্ত তথ্য জানা যায়।
মাইক টি

1
কোন ক্ষেত্রে আপনি আলাদা ফাইল হিসাবে এটি লিখবেন কেন?
ইয়ান Turton

1
সম্ভবত জো যে সফ্টওয়্যারটি ব্যবহার করছে সেটি এমবেডড মেটাডেটা সহ জিওটিআইএফএফগুলি বুঝতে পারে না।
মার্সিভিকিং

হ্যাঁ একই সমস্যাটির মেটাডেটাটি প্রতিটি টাইলের অবস্থানগুলি 'জানতে' গিস ওয়েব অ্যাপ্লিকেশনটির জন্য .tfw হওয়ার জন্য প্রয়োজন ছিল - এটি বের করার জন্য নিজস্ব স্ক্রিপ্ট ব্যবহার করুন (সেই সময়ে এক্সেল - ম্যাক্রো।)
ম্যাপারজ

0

জাভাতে জিওটুলগুলি ব্যবহার করে আপনি এই কোডটি ব্যবহার করতে পারেন:

// 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আপনার অভিক্ষেপ ফাইলটিতে কেবল লিখিত সামগ্রী লিখুন ।


0

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

এখানে চিত্র বর্ণনা লিখুন

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