কোন প্রজেকশন ইঞ্জিন আরকজিস ব্যবহার করে তা আমি জানি না, তবে প্রজেক্টের জন্যও একটি খুব আকর্ষণীয় প্রশ্ন। সুতরাং আমি এটি GNU-R পরিবেশের মধ্যে প্রজেক্ট 4 প্রজেকশন ইঞ্জিনটি পরীক্ষা করার চেষ্টা করি। আমি এনএডি 83 - ইউটিএম 17 কোণ এবং ইপিএসজি 26917 ব্যবহার করি এবং এটি 10000 এবং 1000000 বার পুনরাবৃত্তি করে এবং শুরুর মানগুলির মধ্যে পার্থক্য গণনা করি।
ফলাফল এখানে:
দেখে মনে হচ্ছে যে "প্রত্যাশা" ত্রুটিটি 10000 লুপের জন্য সেন্টিমিটারের সীমার মধ্যে রয়েছে।
"LON/LAT differences after 10000 loops"
DLON DLAT
1 -2.441464e-07 -1.341807e-07
2 2.441129e-07 -1.341807e-07
3 1.852679e-07 -1.691737e-08
4 -1.853157e-07 -1.691819e-08
"X/Y differences after 10000 loops"
DX DY
1 -0.025169783 -0.014338141
2 0.025166375 -0.014338208
3 0.002419045 -0.002016762
4 -0.002419690 -0.002016889
আপনি যদি 1000000 বার লুপটি চালান তবে মিটারের পরিসীমাতে ত্রুটির দিকে বাড়ুন।
"LON/LAT differences after 1000000 loops"
DLON DLAT
1 -2.441464e-05 -1.341845e-05
2 2.441128e-05 -1.341846e-05
3 1.852621e-05 -1.691837e-06
4 -1.853105e-05 -1.691828e-06
"X/Y differences after 1000000 loops"
DX DY
1 -2.5172288 -1.4339977
2 2.5168869 -1.4340064
3 0.2419201 -0.2017070
4 -0.2419859 -0.2017094
এখানে স্ক্রিপ্ট।
# load the package
require('proj4')
# the LON/LAT frame of NAD83 UTM 17
lon = c(-84.00, -78.00, -84.00, -78.00 )
lat = c( 24.00, 24.00, 83.00, 83.00)
# build the projection conform object
ll0 = matrix(c(lon,lat),nrow=4,ncol=2)
xy0 = project(ll0,"+init=epsg:26917",ellps.default='GRS80')
# make a copy
ll1 = ll0
xy1 = xy0
# number of iterations
num = 1000000
# reproject the stuff num times
for(i in 1:num) {
# project forward
xy1 = project(ll1,"+init=epsg:26917", ellps.default='GRS80')
# project backward
ll1 = project(xy1,"+init=epsg:26917", inverse=T, ellps.default='GRS80')
}
# build difference table ll
dll = as.data.frame(ll1-ll0)
names(dll) = c('DLON','DLAT')
# print results LON/LAT
print(paste("LON/LAT differences after ", num," loops"))
print(dll)
# build difference table xy
dxy = as.data.frame(xy1-xy0)
names(dxy) = c('DX','DY')
# print results X/Y
print(paste("X/Y differences after ", num," loops"))
print(dxy)
একটি পরিসংখ্যান পরিবেশে আরও পরীক্ষা সহজ হওয়া উচিত। একটি লিনাক্স পরিবেশের জন্য স্ক্রিপ্ট এবং কোড ব্যাখ্যা github.com/bigopensky এ উপলব্ধ ।