এক্স এবং ওয়াই ক্ষেত্রগুলি থেকে একটি ভূগোল / জ্যামিতি কলাম তৈরি করুন - এসকিউএল সার্ভার ২০০৮


26

আমি এসকিউএল সার্ভার ২০০৮ এ নতুন এবং আমি আশা করি আপনি আমার প্রশ্ন / প্রয়োজন বুঝতে পারবেন।

সুতরাং, আমার কাছে একটি টেবিল রয়েছে যা আমার ডেটা বেসে (স্থানিক) 3 টি ক্ষেত্র (নাম, ল্যাট এবং লং) ধারণ করে। আমি সেই ক্ষেত্রগুলির (ল্যাট এবং লং) ভিত্তিতে জ্যামিতি / ভূগোল কলাম তৈরি করতে চাই তবে দুর্ভাগ্যক্রমে কোনও সাফল্য ছাড়াই।

আমার প্রশ্ন: আমি কীভাবে এটি পরিচালনা করতে পারি?


উত্তর:


36

আপনি এটির মতো একটি গণিত কলাম যুক্ত করতে পারেন

alter table yourTable add geographyColumn as geography::STGeomFromText('POINT('+convert(varchar(20),Long)+' '+convert(varchar(20),Lat)+')',4326)

আমি এলএনজি বা ল্যাট থেকে রূপান্তরটি যুক্ত করেছি কারণ আমি লং এবং ল্যাটসকে সংখ্যা হিসাবে সঞ্চয় করি।


3
আপনার জবাবের জন্য আপনাকে ধন্যবাদ, আমি এই লাইনটি ব্যবহার করে আমার সমস্যার সমাধান করতে পেরেছি: আপলোড করুন আপনার ডেটাবেসস জ্যামিতি_কলিউম = জ্যামিতি :: পয়েন্ট ([কলএক্স], [কোলওয়াই], এসআরআইডি)
টিউডর

3
এটির জন্য একটি ট্রিগার তৈরি করা সম্ভব? আপনি যখন উপরে উল্লিখিত স্ক্রিপ্টটি চালিত তথ্যের সাথে আপনার ক্ষেত্রগুলি (X এবং Y কলাম) পপুলেট করবেন Like
টিউডর

10

দেখে মনে হচ্ছে আপনি STGeomFromText()বা STPointFromText()এসকিউএল পদ্ধতিটি চান:

DECLARE @g geography;
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.ToString();

অথবা

DECLARE @g geography;
SET @g = geography::STPointFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.ToString();

আপনার Geometryবা Geographyক্ষেত্রটি তৈরি করুন , তারপরে আপনার ল্যাট / লম্বা মানগুলি ব্যবহার করে সেই ক্ষেত্রটি জনপ্রিয় করতে এসকিউএল ব্যবহার করুন।


পরিবর্তে নিম্নলিখিত পদ্ধতিটি ব্যবহার করে কী কী পার্থক্য হবে ...DECLARE @g geometry; SET @g = geometry::STPointFromText('POINT (100 100)', 0);
অ্যাডেসোমার

@ ওয়েসোমো - হ্যাঁ, আপনি যদি এটি চান তবে আপনি এটি ব্যবহার করতে পারেন
চাদ কুপার

7

এসকিউএল সার্ভার 2012

আপনি এটি এইভাবে করতে পারেন,

SELECT geography::Point(lat, long, 4326)

আরও তথ্যের জন্য ডেটাবেস প্রশাসকদের আমার পোস্টটি দেখুন, "এসকিউএল সার্ভার পয়েন্ট কনস্ট্রাক্টর বা এস এসপয়েন্ট (সংস্করণ, এক্স) এর সংস্করণ?"


1

যদি CONVERT(VARCHAR,বিবৃতিটি ব্যবহার করার সময় মূল লং / ল্যাট মানগুলির বৃত্তাকার উপস্থিত হয় ।

ব্যবহার করার চেষ্টা করুন:

GeoData = geometry:: STGeomFromText('POINT(' + CAST(CAST(X AS decimal(13, 2)) AS varchar) + ' '  + CAST(CAST(Y AS decimal(13, 2)) AS varchar) + ')', 4326)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.