পাইথন ব্যবহার করে কোনও ASCII গ্রিড ফাইল জিওটিআইএফএফ তে রূপান্তর করবেন?


11

আমার কাছে একটি ASCII গ্রিড রাস্টার ফর্ম্যাট ফাইল রয়েছে। উদাহরণ স্বরূপ:

ncols 480
nrows 450
xllcorner 378923
yllcorner 4072345
cellsize 30
nodata_value -32768
43 2 45 7 3 56 2 5 23 65 34 6 32 54 57 34 2 2 54 6 
35 45 65 34 2 6 78 4 2 6 89 3 2 7 45 23 5 8 4 1 62 ...

পাইথন ব্যবহার করে কীভাবে আমি এটি টিআইএফএফ বা অন্য কোনও রাস্টার রূপান্তর করতে পারি?


জিআইএস সফ্টওয়্যার asci কে জিওটিফ এ রূপান্তর করতে পারে। কোনও কোডিং দরকার নেই। আমি কিউজিআইএস ব্যবহার করি। এটা বিনামূল্যে.
শৌল শিয়ার্ড

উত্তর:


13

সিউডো কোড সংস্করণ:

import gdal
import numpy

create the gdal output file as geotiff
set the no data value
set the geotransform 

numpy.genfromtxt('your file', numpy.int8) #looks like int from you example
reshape your array to the shape you need

write out the array.

একটি নমুনা যা আপনাকে সহায়তা করবে - এখান থেকে :

if __name__ == '__main__':
    # Import libs
    import numpy, os
    from osgeo import osr, gdal

    # Set file vars
    output_file = "out.tif"

    # Create gtif
    driver = gdal.GetDriverByName("GTiff")
    dst_ds = driver.Create(output_file, 174, 115, 1, gdal.GDT_Byte )
    raster = numpy.zeros( (174, 115) )

    # top left x, w-e pixel resolution, rotation, top left y, rotation, n-s pixel resolution
    dst_ds.SetGeoTransform( [ 14.97, 0.11, 0, -34.54, 0, 0.11 ] )

    # set the reference info 
    srs = osr.SpatialReference()
    srs.SetWellKnownGeogCS("WGS84")
    dst_ds.SetProjection( srs.ExportToWkt() )

    # write the band
    dst_ds.GetRasterBand(1).WriteArray(raster)

এবং মানগুলি 14.97 এবং -34.54 ডাব্লুজিএস 84 কোরিড্যানেটে শীর্ষ-বাম কোণে স্থানাঙ্ক?
স্লভা


7

আপনার ফাইলটি একটি এএআইজিড হওয়ায় এবং জিটিফ ক্রিয়েটকপি সমর্থন করে ():

from osgeo import gdal, osr
drv = gdal.GetDriverByName('GTiff')
ds_in = gdal.Open('in.asc')
ds_out = drv.CreateCopy('out.tif', ds_in)
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
ds_out.SetProjection(srs.ExportToWkt())
ds_in = None
ds_out = None

যে কোনও ড্রাইভার যা ক্রিয়েটকপি সমর্থন করে তারা এটি ব্যবহার করতে পারে।


যদি অজগর ব্যবহার করার প্রয়োজন না হয় তবে কলাফিশ অবশ্যই সঠিক।

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

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