এসকিএল সার্ভার ২০১২-তে আমি কীভাবে 3 টি প্যারামিটারের জিওট্রান্সফর্মেশন এবং প্রজেকশন করব?


10

এটিতে অক্ষাংশ দ্রাঘিমাংশ (NAD27) কলাম সহ আমার একটি টেবিল রয়েছে। আমি এক্স এবং ওয়াই, আরও দুটি কলাম গণনা করি যা ওয়েব মার্কেটর (ডাব্লুজিএস 84) অবস্থানের প্রতিনিধিত্ব করে।

বর্তমানে আমি এটি করার জন্য একটি আর্কেম্যাপ ব্যবহার করছি, NAD27 থেকে ডাব্লুজিএস 84 এ যাওয়ার জন্য 3 টি প্যারামিটার (ভূ-কেন্দ্রিক) জিওট্রান্সফর্মেশন - অধ্যয়নের জন্য প্রস্তাবিত জিওট্রান্সফর্মেশন প্রয়োগ করে do

আমি এটি পুরোপুরি এসকিএল সার্ভার ২০১২-এর মধ্যে করতে চাই what আমি যা বলতে পারি তা থেকে, এসকিএল সার্ভার বাক্সের বাইরে ডেটাম ট্রান্সফর্মেশনগুলি সমর্থন করে না। এমন কোনও এসকিএল লাইব্রেরি সম্পর্কে কেউ কি জানেন যা এই জিওট্রান্সফর্মেশন সমর্থন করে? আমি কেবল এসকিএল-তে একই সহগগুলি ব্যবহার করতে চাই যা আমি বর্তমানে আর্কম্যাপে ব্যবহার করছি।

আমার ডাব্লুজিএস ৮৮ ল্যাট / লম্বা থেকে ওয়েব মেররেটারে প্রজেক্ট করা দরকার। আমি জাভাস্ক্রিপ্টে এই সূত্রটি বাস্তবায়িত দেখতে পাচ্ছি , তবে কারও কাছে যদি কোনও এসকিএল সঞ্চিত প্রক্রিয়া থাকে যা এটি করে তবে তা দুর্দান্ত।


আমার জানা মতে ডেটাম রূপান্তরের জন্য এই মুহুর্তে কোনও কার্যকারী ওও সমাধান নেই। এটি ডাটাবেসে তৈরি করার সবচেয়ে সহজ উপায় হ'ল শার্পম্যাপকডেপ্লেক্স.কম লাইব ব্যবহার করা হবে - বা বিদ্যমান কোডটি গ্রহণ করুন এবং এটি টি-এসকিউএলে রূপান্তর করুন যা আমি চেষ্টা করেছি ...
সিমপ্লেসিও

@ সিম্প্লেক্সিও ধন্যবাদ, টি-এসকিউএল রূপান্তরটির জন্য কোনও ভাগ্য?
কर्क কুইকেনডাল

আপনার রূপান্তরিত স্থানাঙ্ক কতটা সঠিক হতে চান? বা নির্ভুলতা এত কি গুরুত্বপূর্ণ?
মিন্টেক্স

@ মিন্টেক্স আমি একইভাবে পুনরায় উত্পাদন করতে চাই যা আমি বর্তমানে আর্কম্যাপ ব্যবহার করে যাচ্ছি।
কर्क কুইকেনডাল

1
অবশ্যই. আপনি যদি PostGIS এ ডিবি পরিবর্তন করতে পারেন তবে এর পুনঃ-ট্রান্সফর্মেশন সমর্থন রয়েছে। এমএস এসকিউএল সার্ভারটি ভাল ডিবি হতে পারে এবং এর ভাল সমর্থন থাকতে পারে, তবে আমরা প্রাক তৈরি সরঞ্জামগুলি যখন কথা বলি তখন
পোস্টগ্রেককে হারাতে পারি

উত্তর:


5

এসকিউএল-তে জাভাস্ক্রিপ্ট সম্পর্কিত, সম্ভবত আপনি কীভাবে এটি পরিচালনা করবেন:

SELECT  FromX, 
        FromY, 
        CASE WHEN FromX > 180 THEN NULL ELSE FromX * 0.017453292519943295 * 6378137.0 END AS mercatorX_lon2,
        CASE WHEN FromY > 90 THEN NULL ELSE 3189068.5 * LOG((1.0 + SIN(FromY * 0.017453292519943295)) / (1.0 - SIN(FromY * 0.017453292519943295))) END AS mercatorY_lat2
FROM TABLENAME

আমি মনে করি নিম্নলিখিতটি আপনার প্রথম প্রশ্নের উত্তর দেবে। এটির জন্য বেশ কিছুটা ত্রুটি পরীক্ষা করা প্রয়োজন। সহায়তা করতে, আপনি এখানে মূল সমীকরণটি খুঁজে পেতে পারেন: http://www.colorado.edu/geography/graft/notes/datum/gif/molodens.gif

--fromTheta :column --radians
--fromLamda :column --radians
--fromH     :column --meters

DECLARE @fromA float = 6378206.4        --radius of earth, meters
DECLARE @fromF float =1.0/294.9786982   --Flattening
DECLARE @toA float =6378137.0           --radius of earth, meters
DECLARE @toF float = 1.0/298.257223563  --Flattening
DECLARE @dA float = @toA - @fromA       --change in equatorial radius
DECLARE @dX float = -8.0                --change in X, meters
DECLARE @dY float = 160.0               --change in Y, meters
DECLARE @dZ float = 176.0               --change in Z, meters
DECLARE @dF float = @toF-@fromF         --change in flattening
DECLARE @fromES float = 2.0*@fromF - @fromF*@fromF --first eccentricity squared
DECLARE @bda float = 1.0-@fromF         --polar radius divided by equatorial radius

--RM = (@fromA*(1-@fromES)/POWER(1-@fromES*sin(fromTheta)*sin(fromTheta), 1.5))

--RN = (@fromA/SQRT(1.00-@fromES*sin(fromTheta)*sin(fromTheta)))

SELECT 

((((-@dX*sin(fromTheta)*cos(fromLamda)-@dY*sin(fromTheta)*sin(fromLamda))+@dZ*cos(fromTheta))+@dA*(@fromA/SQRT(1.00-@fromES*sin(fromTheta)*sin(fromTheta)))*@fromES*sin(fromTheta)*cos(fromTheta)/@fromA)+@df*((@fromA*(1-@fromES)/POWER(1-@fromES*sin(fromTheta)*sin(fromTheta), 1.5))/@bda+(@fromA/SQRT(1.00-@fromES*sin(fromTheta)*sin(fromTheta)))*@bda)*sin(fromTheta)*cos(fromTheta))/((@fromA*(1-@fromES)/POWER(1-@fromES*sin(fromTheta)*sin(fromTheta), 1.5)) + fromH) AS deltaTheta,
(-@dX*sin(fromLamda)+@dY*cos(fromLamda))/((((@fromA/SQRT(1.00-@fromES*sin(fromTheta)*sin(fromTheta))) +fromH) * cos(fromTheta)) AS deltaLamda,
@dX*cos(fromTheta)*cos(fromLamda)+@dY*cos(fromTheta)*sin(fromLamda)+@dZ*sin(fromTheta)-@da*@fromA/(@fromA/SQRT(1.00-@fromES*sin(fromTheta)*sin(fromTheta)))+@dF*@bda*(@fromA/SQRT(1.00-@fromES*sin(fromTheta)*sin(fromTheta)))*sin(fromTheta)*sin(fromTheta) AS deltaH

FROM TABLENAME

সম্পাদনা করুন: একটি দম্পতি ভেরিয়েবল যা কলামের নাম, এবং অনুপস্থিত কমা এবং প্রথম বন্ধনী হওয়া উচিত।

সম্পাদনা করুন: আরও একটি প্রথম বন্ধনী।

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


1
ধন্যবাদ, আমি মনে করি XYZ ডেল্টাসগুলি ল্যাট থেকে দীর্ঘ XYZ স্পেসে রূপান্তর করার পরে প্রয়োগ করা দরকার যেখানে XY এবং Z অক্ষের উত্স পৃথিবীর কেন্দ্রে রয়েছে।
কर्क কুইকেনডাল

আমি g জিআইএফ প্রিন্ট করতে যাচ্ছি, এবং আমার ডেস্কের সামনে দেয়ালে এটি ফ্রেম করব।
নিকভস

@ কির্ককুইএন্ডল এই পদ্ধতিটি হ'ল মোলডেনস্কি, যেখানে আপনি যে ডেল্টাস ফিরে পেয়েছেন তা আসলে আর্ক-সেকেন্ডের মধ্যে রয়েছে এবং আপনার টার্গেটের ডেটুমে অনুবাদ পেতে আপনার প্রাথমিক ল্যাট / ল্যাংগুলিতে প্রয়োগ করা যেতে পারে। আমি আপনার এওআই জানি না, তবে জিওসেন্ট্রিকটি সাধারণত ন্যাড 27-> ডাব্লু জি 84 থেকে আসা সবচেয়ে কম সঠিক (তবে সবচেয়ে সহজ!) উপায়।
মিন্টেক্স

আইকের মানগুলিও নোট @dX @dY @dZকরুন যা NAD_1927_To_WGS_1984আপনি কোন জিওসেন্ট্রিক পদ্ধতি বেছে নিয়েছেন তার উপর নির্ভর করে ভিন্ন হতে পারে ।
মিন্টেক্স

1

এটি একটি অনুরূপ প্রশ্নের লিঙ্ক:

http://sqlspatialtools.codeplex.com/discussions/286893

আমি মনে করি যে এসকিউএল সার্ভারে আপনি কী করতে পারেন এবং আপনি কী করতে পারবেন না তা বুঝতে এবং আপনার সমস্যা সমাধানের জন্য কিছু পদ্ধতি জানার জন্য প্রথম উত্তরটি কার্যকর হতে পারে।

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