ম্যানুয়ালি ঘোরানো ল্যাট / ল্যান্টকে নিয়মিত ল্যাট / লম্বে রূপান্তর করা হচ্ছে?


24

প্রথমে আমার স্পষ্ট করা উচিত ক্ষেত্রটির সাথে আমার পূর্বের অভিজ্ঞতা নেই, তাই প্রযুক্তিগত পরিভাষা আমি জানি না। আমার প্রশ্নটি নিম্নরূপ:

আমার দুটি আবহাওয়ার ডেটাসেট রয়েছে:

  • প্রথমটির নিয়মিত সমন্বয় ব্যবস্থা রয়েছে (এটির নির্দিষ্ট নাম আছে কিনা তা আমি জানি না), -90 থেকে 90 এবং -180 থেকে 180 পর্যন্ত এবং মেরুগুলি অক্ষাংশ -90 এবং 90 এ রয়েছে।

  • দ্বিতীয়টিতে, যদিও এটি একই অঞ্চলের সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত, আমি অন্যরকম কিছু লক্ষ্য করলাম: অক্ষাংশ এবং দ্রাঘিমাংশ একই ছিল না, কারণ তাদের আরও একটি রেফারেন্স পয়েন্ট রয়েছে (বর্ণনায় একটি ঘোরানো গ্রিড বলা হয় )। ল্যাট / লম্বা জোড়ার সাথে একত্রে নিম্নলিখিত তথ্য আসে: দক্ষিণ মেরু ল্যাট: -35.00, দক্ষিণ মেরু দীর্ঘ: -15.00, কোণ: 0.0।

আমার প্রথম জোড় / ল্যাটের দ্বিতীয় জোড়াটি রূপান্তর করতে হবে। এটি অক্ষাংশে 35 এবং দ্রাঘিমাংশে 15 যোগ করার মতো সহজ হতে পারে, যেহেতু কোণ 0 এবং এটি একটি সরল স্থানান্তর বলে মনে হচ্ছে, তবে আমি নিশ্চিত নই।

সম্পাদনা: স্থানাঙ্ক সম্পর্কে আমার যে তথ্য রয়েছে সেগুলি নিম্নরূপ

http://rda.ucar.edu/docs/formats/grib/gribdoc/llgrid.html

স্পষ্টতই, দ্বিতীয় স্থানাঙ্ক ব্যবস্থাটি গোলকের একটি সাধারণ ঘূর্ণন দ্বারা সংজ্ঞায়িত করা হয়

"এই পরামিতিগুলির জন্য একটি পছন্দ হ'ল:

  • সমন্বিত সিস্টেমের দক্ষিণ মেরুর ডিগ্রিগুলিতে ভৌগলিক অক্ষাংশ, উদাহরণস্বরূপ thetap;

  • সমন্বিত সিস্টেমের দক্ষিণ মেরুর ডিগ্রিগুলিতে ভৌগলিক দ্রাঘিমাংশ উদাহরণস্বরূপ ল্যাম্বডাপ;

  • স্থানাঙ্ক ব্যবস্থার নতুন মেরু অক্ষ (দক্ষিণ থেকে উত্তর মেরুতে ঘড়ির কাঁটার দিকে মাপা) সম্পর্কে ডিগ্রিগুলিতে আবর্তনের কোণটি ভৌগলিক মেরু অক্ষ সম্পর্কে ল্যাম্বডাপ ডিগ্রিগুলির মাধ্যমে প্রথমে গোলকের ঘোরার মাধ্যমে নতুন অক্ষটি প্রাপ্ত বলে ধরে নিল , এবং তারপরে (90 + thetap) ডিগ্রি দিয়ে ঘোরানো যাতে দক্ষিণ মেরুটি (পূর্বে ঘোরানো) গ্রিনিচ মেরিডিয়ান বরাবর সরানো হয়েছিল। "

তবে এখনও আমি জানি না কীভাবে এটি প্রথমটিকে রূপান্তর করতে হয়।


2
তাহলে কি এই জিআরআইবি ডেটা? যদি তা হয় তবে সম্ভবত আমাদের গ্রাইব ট্যাগ লাগবে।
কर्क কুইকেনডাল

@ এসএসডি এসসিএমডাব্লুএফ লিঙ্কগুলি বৈধ বলে মনে হচ্ছে না। আপনি সম্পাদনা করতে পারেন?
গানসুব

@gansub আমি লিঙ্কগুলি সম্পাদনা করেছি। আমি জানি না যে তথ্যটি একই রকম ছিল যেহেতু এটি দীর্ঘ সময় হয়েছে, তবে আমি বিশ্বাস করি যে নতুন লিঙ্কটি ভবিষ্যতের রেফারেন্সের জন্য কিছু প্রসঙ্গ সরবরাহ করতে পারে।
skd

@skd যখন আপনি বলে angle=0.0, আপনি কি বোঝাতে চেয়েছেন জন্মদান ? আমার কাছে ঘোরানো মেরু স্থানাঙ্কের সাথে একটি নেটসিডিএফ ফাইল রয়েছে, তবে কোনও কোণের উল্লেখ নেই।
ফ্যাকফি

@ CF84 আমি আসলে নিশ্চিত নই আমি অনুমান করি যদি কোণটির কোনও উল্লেখ না থাকে তবে এটি কোণ = 0 এর সমান হয়
স্কেড

উত্তর:


24

রোটেশনটি ম্যানুয়ালি বিপরীত করার কৌশলটি করা উচিত; গোলক স্থানাঙ্ক ব্যবস্থাগুলি কোথাও ঘোরার জন্য একটি সূত্র থাকতে হবে, তবে যেহেতু আমি এটি খুঁজে পাই না, এটি এখানে ডেরাইভেশন ( ' ঘোরানো স্থানাঙ্ক ব্যবস্থাকে চিহ্নিত করে; সাধারণ ভৌগলিক স্থানাঙ্কগুলি সরল প্রতীক ব্যবহার করে):

প্রথমে দ্বিতীয় ডেটাসেটের ডেটা গোলকের (লোন ', ল্যাট') থেকে (x ', y', z ') এ রূপান্তর করুন:

x' = cos(lon')*cos(lat')
y' = sin(lon')*cos(lat')
z' = sin(lat')

তারপরে দ্বিতীয় সমন্বয় ব্যবস্থাটি ঘোরানোর জন্য দুটি ঘূর্ণন ম্যাট্রিক ব্যবহার করুন যাতে এটি প্রথম 'স্বাভাবিক' একের সাথে মিলে যায়। আমরা স্থানাঙ্কটি অক্ষগুলি ঘোরানো করব, যাতে আমরা অক্ষ ঘূর্ণন ম্যাট্রিকগুলি ব্যবহার করতে পারি । ইসিএমডাব্লুএফ সংজ্ঞাতে ব্যবহৃত ঘূর্ণন বোধের সাথে মেলে আমাদের ϑ ম্যাট্রিক্সে সাইনটি উল্টাতে হবে, এটি স্ট্যান্ডার্ড ইতিবাচক দিক থেকে পৃথক বলে মনে হচ্ছে।

যেহেতু আমরা স্থানাঙ্ক ব্যবস্থার সংজ্ঞায় বর্ণিত আবর্তনটি পূর্বাবস্থায় ফেরাচ্ছি, আমরা প্রথমে '= - (90 + lat0) =-55 ডিগ্রি দ্বারা y' অক্ষের (ঘোরানো গ্রিনউইচ মেরিডিয়ান বরাবর) এবং তারপর φ = - দিয়ে ঘোরান z অক্ষের চারপাশে দীর্ঘ 0 = +15 ডিগ্রি):

x   ( cos(φ), sin(φ), 0) (  cos(ϑ), 0, sin(ϑ)) (x')
y = (-sin(φ), cos(φ), 0).(  0     , 1, 0     ).(y')
z   ( 0     , 0     , 1) ( -sin(ϑ), 0, cos(ϑ)) (z')

প্রসারিত, এটি হয়ে যায়:

x = cos(ϑ) cos(φ) x' + sin(φ) y' + sin(ϑ) cos(φ) z'
y = -cos(ϑ) sin(φ) x' + cos(φ) y' - sin(ϑ) sin(φ) z'
z = -sin(ϑ) x' + cos(ϑ) z'

তারপরে আবার 'স্বাভাবিক' (ল্যাট, লোন) ব্যবহার করে রূপান্তর করুন

lat = arcsin(z)
lon = atan2(y, x)

আপনার যদি অ্যাটান 2 না থাকে তবে আপনি এটি আতান (y / x) ব্যবহার করে এবং এক্স এবং y এর চিহ্নগুলি পরীক্ষা করে এটি প্রয়োগ করতে পারেন

ত্রিকোণমিত্রিক ফাংশনগুলি ব্যবহার করার আগে আপনি সমস্ত কোণকে রেডিয়ানে রূপান্তরিত করেছেন তা নিশ্চিত করুন বা আপনি অদ্ভুত ফলাফল পাবেন; আপনি যদি পছন্দ করেন তবে শেষ পর্যন্ত ডিগ্রীতে ফিরে রূপান্তর করুন ...

উদাহরণ (ঘূর্ণিত গোলক স্থানাঙ্ক ==> মান ভৌগলিক স্থানাঙ্ক):

  • ঘোরানো সিএসের দক্ষিণ মেরুটি (ল্যাট0, লোন0)

    (-90 °, *) ==> (-35 °, -15 °)

  • ঘোরানো সিএসের প্রধান মেরিডিয়ান হ'ল ভৌগলিক -15 id মেরিডিয়ান (উত্তরের দিকে 55 ° ঘোরানো)

    (0 °, 0 °) ==> (55 °, -15 °)

  • প্রতিসামগ্রী উভয় নিরক্ষর নতুন সিএসে 90 ° / -90 °, বা ভৌগলিক স্থানাঙ্কে 75 ° / -105 at ছেদ করতে হবে

    (0 °, 90 °) ==> (0 °, 75 °)
    (0 °, -90 °) ==> (0 °, -105 °)

সম্পাদনা: হুবুহু দ্বারা খুব গঠনমূলক মন্তব্যের জন্য উত্তরটি পুনরায় লিখিত: ম্যাট্রিক এবং প্রসারণ এখন সিঙ্কে রয়েছে, ঘূর্ণন পরামিতিগুলির জন্য সঠিক লক্ষণ ব্যবহার করে; ম্যাট্রিকের সংজ্ঞা সংযোজন; উত্তর থেকে আতান (y / x) সরানো; রূপান্তর উদাহরণ যুক্ত।

সম্পাদনা 2: কার্টেসিয়ান স্পেসে সুস্পষ্ট ট্রান্সফর্মেশন ছাড়াই একই ফলাফলের জন্য অভিব্যক্তি অর্জন করা সম্ভব। x, y, zফলাফলে তাদের সংশ্লিষ্ট এক্সপ্রেশন দ্বারা প্রতিস্থাপিত হতে পারে, এবং একই জন্য পুনরাবৃত্তি করা যাবে x', y'এবং z'। কিছু ত্রিকোণমিতিক পরিচয় প্রয়োগ করার পরে, নিম্নলিখিত একক-পদক্ষেপের এক্সপ্রেশনগুলি উপস্থিত হয়:

lat = arcsin(cos(ϑ) sin(lat') - cos(lon') sin(ϑ) cos(lat'))
lon = atan2(sin(lon'), tan(lat') sin(ϑ) + cos(lon') cos(ϑ)) - φ

1
ধারণাটি ভাল, তবে কিছু বিশদের ফিক্সিংয়ের প্রয়োজন। দীর্ঘ 0 = -15, +15 নয়। ম্যাট্রিক্স পণ্যটির সম্প্রসারণের তিনটি লাইনই ভুল। X = y = 0 হলে যেকোন যুক্তিযুক্ত দ্রাঘিমাংশ ফিরে আসতে ATan2 (বা তার সমতুল্য) অবশ্যই ব্যবহার করা উচিত , পরিবর্তন করতে হবে। দ্রষ্টব্য যে কারণ x ^ 2 + y ^ 2 + z ^ 2 = 1, শেষে আপনি কেবল ল্যাট = আরকসিন (জেড) পাবেন।
হোবার

1
ধন্যবাদ। আমি অন্তত গণিতটি সঠিক করার জন্য উত্তরটি ঠিক করেছি। আবর্তনগুলি এখন সিএস সংজ্ঞায় বর্ণনার সাথে মিলিত হওয়া উচিত, তবে উদাহরণ ছাড়াই (দক্ষিণ মেরুর অবস্থান ব্যতীত) তাদের চিহ্ন সম্পর্কে নিশ্চিত হওয়া শক্ত।
mkadunc

সাবাশ! আমি অবাক হয়েছি এই উত্তরটি বেশি ভোট পাচ্ছে না, কারণ এটি দরকারী এবং সন্ধানের জন্য কার্যকর সামগ্রী সরবরাহ করে।
whuber

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

1
@alfe আমি ব্লচ গোলকের কোনও বিশেষজ্ঞ নই, তবে নীতিটি আমি যা করেছি তার সাথে অনেকটা অনুরূপ দেখাচ্ছে, তবে 3 প্রকৃত স্থানাঙ্কের সাহায্যে কার্তেসিয়ান স্পেসে রূপান্তরিত করার পরিবর্তে ইঙ্গিতটি 2 টি কাল্পনিক স্থানাঙ্কের সাথে একটি স্পেসে রূপান্তর করার পরামর্শ দেয় (যার অর্থ 4 প্রকৃত উপাদান) এবং সেখানে ঘূর্ণন চালানো। আপনার মন্তব্য দ্বারা চালিত, আমি সমস্ত অভিব্যক্তি একসাথে রেখেছি এবং একটি ফল যুক্ত করেছি যাতে মধ্যবর্তী কার্তেসিয়ান পদক্ষেপটি আর স্পষ্ট হয় না not
mkadunc

6

যদি কেউ আগ্রহী হন আমি ফাইল এক্সচেঞ্জের উপর একটি ম্যাটল্যাব স্ক্রিপ্ট ভাগ করেছি নিয়মিত ল্যাট / লম্বা থেকে ঘোরানো ল্যাট / লম্ব এবং তার বিপরীতে: ঘোরানো গ্রিড রূপান্তর

function [grid_out] = rotated_grid_transform(grid_in, option, SP_coor)

lon = grid_in(:,1);
lat = grid_in(:,2);

lon = (lon*pi)/180; % Convert degrees to radians
lat = (lat*pi)/180;

SP_lon = SP_coor(1);
SP_lat = SP_coor(2);

theta = 90+SP_lat; % Rotation around y-axis
phi = SP_lon; % Rotation around z-axis

phi = (phi*pi)/180; % Convert degrees to radians
theta = (theta*pi)/180;

x = cos(lon).*cos(lat); % Convert from spherical to cartesian coordinates
y = sin(lon).*cos(lat);
z = sin(lat);

if option == 1 % Regular -> Rotated

    x_new = cos(theta).*cos(phi).*x + cos(theta).*sin(phi).*y + sin(theta).*z;
    y_new = -sin(phi).*x + cos(phi).*y;
    z_new = -sin(theta).*cos(phi).*x - sin(theta).*sin(phi).*y + cos(theta).*z;

elseif option == 2 % Rotated -> Regular

    phi = -phi;
    theta = -theta;

    x_new = cos(theta).*cos(phi).*x + sin(phi).*y + sin(theta).*cos(phi).*z;
    y_new = -cos(theta).*sin(phi).*x + cos(phi).*y - sin(theta).*sin(phi).*z;
    z_new = -sin(theta).*x + cos(theta).*z;

end

lon_new = atan2(y_new,x_new); % Convert cartesian back to spherical coordinates
lat_new = asin(z_new);

lon_new = (lon_new*180)/pi; % Convert radians back to degrees
lat_new = (lat_new*180)/pi;

grid_out = [lon_new lat_new];

যদি লিঙ্কটি মারা যায় তবে আপনি দয়া করে ভবিষ্যতের পাঠকদের জন্য কোডটি .োকাতে পারবেন। ধন্যবাদ।
মাইকেল সিসটেমসন

1
অবশ্যই - কোড .োকানো হয়েছে।
সিমন্ডক

2

এই রূপান্তরটি প্রজ সফ্টওয়্যার (কমান্ড-লাইন বা প্রোগ্রামগতভাবে ব্যবহার করে) এর সাথেও গণনা করা যেতে পারে যা প্রজ ob_tranএকটি ল্যাটলন রূপান্তরকে প্রয়োগ করে একটি তির্যক অনুবাদ ( ) প্রয়োগ করে by প্রজেকশন প্যারামিটারগুলি সেট করতে হবে:

  • o_lat_p = উদাহরণে উত্তর মেরু অক্ষাংশ => 35 °
  • lon_0 = উদাহরণে দক্ষিণ মেরু দ্রাঘিমাংশ => -15
  • o_lon_p = 0

অতিরিক্তভাবে, -m 57.2957795130823(180 / pi) ডিগ্রিতে অনুমানিত মানগুলি বিবেচনা করার জন্য প্রয়োজনীয়।

এমকাডাঙ্ক প্রস্তাবিত উদাহরণগুলির অনুলিপি করা একই ফলাফল দেয় (লক্ষ্য করুন যে এখানে অর্ডারটি lon latনয় (lat,lon), কোডিনেটগুলি স্ট্যান্ডার্ড ইনপুট টাইপ করা হয়, আউটপুট দ্বারা চিহ্নিত করা হয় =>):

invproj -f "=> %.6f" -m 57.2957795130823 +proj=ob_tran +o_proj=latlon +o_lon_p=0 +o_lat_p=35 +lon_0=-15
0 -90
=> -15.000000   => -35.000000
40 -90
=> -15.000000   => -35.000000
0 0
=> -15.000000   => 55.000000
90 0
=> 75.000000    => -0.000000
-90 0
=> -105.000000  => -0.000000

invprojকমান্ডটি "প্রজেক্টেড" (অর্থাত্ ঘোরানো) স্থানাঙ্ক থেকে ভৌগলিক রূপান্তর করতে ব্যবহৃত হয়, projবিপরীতে করার জন্য।


1

আমি কর্ডেক্স ডোমেনের উপর ভিত্তি করে ঘোরানো থেকে অ-ঘোরানোতে স্থানাঙ্ক রূপান্তর করার জন্য একটি এসপ নেট পৃষ্ঠা তৈরি করেছি।

এটি উপরোক্ত পদ্ধতির উপর ভিত্তি করে। আপনি এই লিঙ্কে নিখরচায় ব্যবহার করতে পারেন:

ম্যানুয়ালি ঘোরানো ল্যাট / লম্বকে নিয়মিত ল্যাট / লম্বে রূপান্তর করা


কর্ডেক্স ডেটা এক্সট্রাক্টর কর্ডেক্স নেটসিডিএফ ফাইল থেকে ডেটা আহরণের জন্য একটি উইন্ডোজ ডেস্কটপ সফ্টওয়্যার। কর্ডেক্স ডেটা এক্সট্রাক্টরের সাহায্যের ফাইলের দরকার নেই কারণ কোডগুলির পিছনে সমস্ত প্রক্রিয়া করা হয়েছে এবং ব্যবহারকারী কেবল তারিখ, সমন্বয় এবং ভেরিয়েবল নাম প্রবেশ করে। দয়া করে এই ভিডিওটি দেখুন: youtu.be/RmpZblZPXjI agrimetsoft.com/cordexDataExtractor.aspx
সোহরাব কলসোমী আইস্ক

1

https://www.mathworks.com/matlabcentral/fileexchange/43435-rotated-grid-transform

পাইথন:

from math import *

def rotated_grid_transform(grid_in, option, SP_coor):
    lon = grid_in[0]
    lat = grid_in[1];

    lon = (lon*pi)/180; # Convert degrees to radians
    lat = (lat*pi)/180;

    SP_lon = SP_coor[0];
    SP_lat = SP_coor[1];

    theta = 90+SP_lat; # Rotation around y-axis
    phi = SP_lon; # Rotation around z-axis

    theta = (theta*pi)/180;
    phi = (phi*pi)/180; # Convert degrees to radians

    x = cos(lon)*cos(lat); # Convert from spherical to cartesian coordinates
    y = sin(lon)*cos(lat);
    z = sin(lat);

    if option == 1: # Regular -> Rotated

        x_new = cos(theta)*cos(phi)*x + cos(theta)*sin(phi)*y + sin(theta)*z;
        y_new = -sin(phi)*x + cos(phi)*y;
        z_new = -sin(theta)*cos(phi)*x - sin(theta)*sin(phi)*y + cos(theta)*z;

    else:  # Rotated -> Regular

        phi = -phi;
        theta = -theta;

        x_new = cos(theta)*cos(phi)*x + sin(phi)*y + sin(theta)*cos(phi)*z;
        y_new = -cos(theta)*sin(phi)*x + cos(phi)*y - sin(theta)*sin(phi)*z;
        z_new = -sin(theta)*x + cos(theta)*z;



    lon_new = atan2(y_new,x_new); # Convert cartesian back to spherical coordinates
    lat_new = asin(z_new);

    lon_new = (lon_new*180)/pi; # Convert radians back to degrees
    lat_new = (lat_new*180)/pi;

    print lon_new,lat_new;

rotated_grid_transform((0,0), 1, (0,30))

0

আপনি কোন সফটওয়্যার ব্যবহার করছেন? প্রতিটি জিআইএস সফ্টওয়্যারটিতে আপনাকে বর্তমান কর্ডিনেট সিস্টেম / প্রজেকশন তথ্য দেখানোর সুবিধা থাকবে। , যা আপনাকে আপনার বর্তমান সমন্বিত সিস্টেমের নাম পেতে সহায়তা করতে পারে।

অতিরিক্তভাবে, আপনি যদি আর্কজিআইএস ব্যবহার করে থাকেন তবে আপনি দ্বিতীয় সরঞ্জামটি পুনরায় প্রজেক্ট করতে প্রথমটি থেকে সেটিংস আমদানি করতে প্রকল্প সরঞ্জামটি ব্যবহার করতে পারেন ।


2
দুর্ভাগ্যজনকভাবে আমি কোনও সফ্টওয়্যার ব্যবহার করছি না। এগুলি কেবল গ্রিডের ডেটাসেট এবং এগুলি নিম্নলিখিত তথ্যগুলির সাথে আসে: - প্রথমটির জন্য : ecmwf.int/publications/manال / d / gribapi / fm92 / grib1 / detail/… - দ্বিতীয়টির জন্য: ecmwf.int/publications/ ম্যানুয়াল / ডি / গ্রিবাপি / এফএম92 / গ্রীব 1 / বিস্তারিত /…
স্কেড

যেহেতু ঘোরার কোণ 0, তাই আমি মনে করি যে একটি সাধারণ অনুবাদ প্রথম ডেটাসেটটিকে
প্রথমটির সাথে একত্রিত করা

0

পাইথনের কার্টপি মডিউলটিতে একটি ঘোরানো খুঁটির সুবিধা রয়েছে। এটি রূপান্তরগুলি দেখে মনে হচ্ছে এটি বোঝে।

https://scitools.org.uk/cartopy/docs/latest/gallery/rotated_pole.html#sphx-glr-gallery-rotated-pole-py

আমার অনুমান হতে পারে সহায়ক হতে পারে।

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