X और y फ़ील्ड से एक भूगोल / ज्यामिति स्तंभ बनाएँ - SQL सर्वर 2008


26

मैं SQL Server 2008 में नया हूँ और मुझे आशा है कि आप मेरे प्रश्न / आवश्यकता को समझेंगे।

इस प्रकार, मेरे पास एक तालिका है जिसमें मेरे डेटा बेस (स्थानिक) में 3 फ़ील्ड (नाम, लैट और लॉन्ग) हैं। मैं उन क्षेत्रों (लाट और लांग) के आधार पर एक ज्यामिति / भूगोल कॉलम बनाना चाहता हूं लेकिन दुर्भाग्य से बिना किसी सफलता के।

मेरा सवाल है: मैं ऐसा कैसे कर सकता हूं?


जवाबों:


36

आप इस तरह एक संगणित कॉलम जोड़ सकते हैं

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

मैंने lng या lat से रूपांतरण जोड़ा है क्योंकि मैं संख्याओं के रूप में Long और Lats को संग्रहीत करता हूं।


3
आपके उत्तर के लिए धन्यवाद, मैं इस लाइन का उपयोग करके अपनी समस्या को हल करने में कामयाब रहा: UPDATE yourdatabase SET geometry_column = geometry :: Point ([ColX], [ColY], SRID)
Tudor

3
इसके लिए ट्रिगर बनाना संभव है? जैसे जब आप अपने फ़ील्ड्स (कॉलम X और Y) को जानकारी देते हैं, तो ऊपर बताई गई स्क्रिप्ट चलेगी।
ट्यूडर

10

लगता है कि आप STGeomFromText()या STPointFromText()SQL विधि चाहते हैं :

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फ़ील्ड बनाएँ , फिर अपने लेट / लोन मानों का उपयोग करके उस फ़ील्ड को पॉप्युलेट करने के लिए SQL का उपयोग करें।


इसके बजाय निम्नलिखित विधि का उपयोग करने में क्या अंतर होगा ...DECLARE @g geometry; SET @g = geometry::STPointFromText('POINT (100 100)', 0);
awesomo

@awesomo - हां, आप चाहते हैं कि एक का उपयोग कर सकते हैं, वास्तव में।
चाड कूपर


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)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.