আমি মূলত আমার নিজের প্রশ্নের উত্তর দিতে যাচ্ছিলাম না তবে আমার এক সহকর্মী (যিনি এই সাইটটি ব্যবহার করেন না), আমি পরে যা করছি তা করতে আমাকে একগুচ্ছ পাইথন কোড লিখেছিলেন; কেবলমাত্র স্থল কোষগুলির জন্য উপকূলের দূরত্বের জন্য কোষগুলিকে সীমাবদ্ধ করা এবং সমুদ্র ভিত্তিক কোষগুলিকে এনএ হিসাবে ছেড়ে দেওয়া সহ। নিম্নলিখিত কোডটি যে কোনও পাইথন কনসোল থেকে চালাতে সক্ষম হওয়া উচিত, কেবলমাত্র পরিবর্তনের জন্য প্রয়োজনীয় জিনিসগুলি:
1) স্ক্রিপ্ট ফাইলটি আগ্রহের আকারের ফাইলের মতো একই ফোল্ডারে রাখুন;
২) পাইথন স্ক্রিপ্টে শেপফিলের নাম পরিবর্তন করুন আপনার শেপফিলের নাম যাই হোক না কেন;
3) পছন্দসই রেজোলিউশন সেট করুন, এবং;
4) অন্যান্য রেস্টারদের সাথে মেলে সীমা পরিবর্তন করুন।
আমি যা ব্যবহার করছি তার থেকে বড় আকারের ফাইলগুলি বড় পরিমাণে র্যামের প্রয়োজন হবে তবে অন্যথায় স্ক্রিপ্টটি দ্রুত চালানো হয় (50 মিটার রেজোলিউশন রাস্টার উত্পাদন করতে প্রায় তিন মিনিট এবং 25 মিটার রেজোলিউশন রাস্টারটির জন্য দশ মিনিট)।
#------------------------------------------------------------------------------
from osgeo import gdal, ogr
import numpy as np
from scipy import ndimage
import matplotlib.pyplot as plt
import time
startTime = time.perf_counter()
#------------------------------------------------------------------------------
# Define spatial footprint for new raster
cellSize = 50 # ANDRE CHANGE THIS!!
noData = -9999
xMin, xMax, yMin, yMax = [1089000, 2092000, 4747000, 6224000]
nCol = int((xMax - xMin) / cellSize)
nRow = int((yMax - yMin) / cellSize)
gdal.AllRegister()
rasterDriver = gdal.GetDriverByName('GTiff')
NZTM = 'PROJCS["NZGD2000 / New Zealand Transverse Mercator 2000",GEOGCS["NZGD2000",DATUM["New_Zealand_Geodetic_Datum_2000",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6167"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4167"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",173],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",1600000],PARAMETER["false_northing",10000000],AUTHORITY["EPSG","2193"],AXIS["Easting",EAST],AXIS["Northing",NORTH]]'
#------------------------------------------------------------------------------
inFile = "new_zealand.shp" # CHANGE THIS!!
# Import vector file and extract information
vectorData = ogr.Open(inFile)
vectorLayer = vectorData.GetLayer()
vectorSRS = vectorLayer.GetSpatialRef()
x_min, x_max, y_min, y_max = vectorLayer.GetExtent()
# Create raster file and write information
rasterFile = 'nz.tif'
rasterData = rasterDriver.Create(rasterFile, nCol, nRow, 1, gdal.GDT_Int32, options=['COMPRESS=LZW'])
rasterData.SetGeoTransform((xMin, cellSize, 0, yMax, 0, -cellSize))
rasterData.SetProjection(vectorSRS.ExportToWkt())
band = rasterData.GetRasterBand(1)
band.WriteArray(np.zeros((nRow, nCol)))
band.SetNoDataValue(noData)
gdal.RasterizeLayer(rasterData, [1], vectorLayer, burn_values=[1])
array = band.ReadAsArray()
del(rasterData)
#------------------------------------------------------------------------------
distance = ndimage.distance_transform_edt(array)
distance = distance * cellSize
np.place(distance, array==0, noData)
# Create raster file and write information
rasterFile = 'nz-coast-distance.tif'
rasterData = rasterDriver.Create(rasterFile, nCol, nRow, 1, gdal.GDT_Float32, options=['COMPRESS=LZW'])
rasterData.SetGeoTransform((xMin, cellSize, 0, yMax, 0, -cellSize))
rasterData.SetProjection(vectorSRS.ExportToWkt())
band = rasterData.GetRasterBand(1)
band.WriteArray(distance)
band.SetNoDataValue(noData)
del(rasterData)
#------------------------------------------------------------------------------
endTime = time.perf_counter()
processTime = endTime - startTime
print(processTime)