मैंने आपके लिए लिखे कोड का उपयोग किया है (शेपफाइल से 'प्वाइंट' कॉलम को स्टोर करना ) अंक तालिका प्राप्त करने के लिए एक प्रारंभिक बिंदु के रूप में। वहां से:
select geography::STPolyFromText(
'POLYGON((' +
stuff((
select ',' + cast(g.STPointN(t.i).Long as varchar(10)) + ' ' + cast(g.STPointN(t.i).Lat as varchar(10))
from [a]
cross join tally as [t]
where t.i <= g.STNumPoints()
order by i
for xml path('')
), 1, 1, '') + '))'
, 4326)
यह कोड कुछ चीजों को मानता है। पहला:जैसे ही आप क्षेत्र की सीमा के चारों ओर जाएंगे, आपके अंक क्रमित हो जाएंगे। यह मायने रखता है। कनेक्ट-द-डॉट्स पहेली के बारे में सोचें। सही चित्र प्राप्त करने के लिए, आपको उन्हें सही क्रम में करना होगा। दूसरे, पहले से संबंधित, उन्हें सही अभिविन्यास में होना चाहिए। बहुभुज बाएं हाथ के नियम का पालन करते हैं। अर्थात्, यदि आप बिंदुओं पर क्रम से चल रहे थे, तो आप उस क्षेत्र को परिभाषित कर रहे हैं जो आपके बाईं ओर है। इसलिए, यदि आप बिंदुओं को उल्टे क्रम में निर्दिष्ट करते हैं, तो आपको अपने क्षेत्र के अलावा सब कुछ मिलता है! आपको यह तुरंत पता चल जाएगा क्योंकि SQL 2012 से पहले, आप उन क्षेत्रों तक सीमित हैं जो पूरी तरह से एक गोलार्ध में समाहित हैं।
लेकिन अब मुझे यह पूछना है:जो प्रश्न आपने पहले पूछा था (जो कि मैं ऊपर से जुड़ा हुआ हूं), क्या आप उनमें पॉलीगॉन के साथ शेपफाइल्स प्राप्त कर रहे हैं? अगर ऐसा है, तो उसे स्टोर करें और इसे फिर से बनाने के सिरदर्द से खुद को बचाएं।