Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

Sql Server 2008 भूगोल लाइनस्ट्रिंग आकार सीमाएँ

मैंने LINESTRING पर किसी आकार की सीमा के बारे में नहीं सुना (निश्चित रूप से 567 अंक जितना छोटा नहीं)।

मैंने अभी एक उदाहरण की कोशिश की है

DECLARE @geom GEOGRAPHY
SET @geom = GEOGRAPHY::STGeomFromText(
  'LINESTRING (142.98873903132778 -11.006193013241768
   , 142.9891970000001 -11.005916999999954
   -- SNIP 1,119 points
   , 142.04362479801711 -11.629451936538608 )', 4326)
SELECT @geom, @geom.STNumPoints()

जिसने ठीक काम किया (LINESTRING बनाता है और 1,122 अंक गिनता है)।

क्या आपका उदाहरण किन्हीं 567 अंकों के साथ विफल होता है - या केवल कुछ विशिष्ट बिंदुओं के साथ (क्या आप उन्हें हमारे साथ साझा कर सकते हैं?) मुझे लगता है कि मैं सोच रहा हूं कि क्या आपका 568 वां बिंदु आपके GEOGRAPHY उदाहरण को गोलार्ध से बड़ा बनाता है? उदाहरण के लिए, यदि मैं एक और बिंदु (0,0) जोड़कर अपना उदाहरण बदलता हूं जो भूगोल को बहुत बड़ा होने के लिए मजबूर करता है:

DECLARE @geom GEOGRAPHY
SET @geom = GEOGRAPHY::STGeomFromText(
  'LINESTRING (142.98873903132778 -11.006193013241768
   , 142.9891970000001 -11.005916999999954
   -- SNIP 1,119 points
   , 142.04362479801711 -11.629451936538608
   , 0 0 )', 4326)         -- ADDED ANOTHER POINT !
SELECT @geom, @geom.STNumPoints()

मुझे ArgumentException 24205 मिलता है:निर्दिष्ट इनपुट एक वैध भूगोल उदाहरण का प्रतिनिधित्व नहीं करता है क्योंकि यह एक गोलार्द्ध से अधिक है। प्रत्येक भूगोल उदाहरण एक गोलार्द्ध के अंदर फिट होना चाहिए। इस त्रुटि का एक सामान्य कारण यह है कि बहुभुज का रिंग ओरिएंटेशन गलत है। जो स्पष्ट रूप से बिल्कुल वही त्रुटि नहीं है आप के रूप में - लेकिन मैंने सोचा कि मैं इसे वैसे भी बढ़ाऊंगा [बेहतर विचार के लिए अंत में अद्यतन पर जाएं]

मेरा आपसे दूसरा प्रश्न है:क्या यह GEOMETRY डेटाटाइप के साथ काम करता है? उदा. अगर मैं GEOMETRY का उपयोग करने के लिए ऊपर अपना "ब्रेकिंग" उदाहरण बदलता हूं तो यह ठीक काम करता है:

DECLARE @geom GEOMETRY    -- using GEOMETRY type instead
SET @geom = GEOMETRY::STGeomFromText(
  'LINESTRING (142.98873903132778 -11.006193013241768
   , 142.9891970000001 -11.005916999999954
   -- SNIP 1,119 points
   , 142.04362479801711 -11.629451936538608
   , 0 0 )', 4326)         -- THIS POINT BREAKS GEOGRAPHY but works now!
SELECT @geom, @geom.STNumPoints()

यदि आप अपनी विशिष्ट समस्या पर कुछ और विवरण पोस्ट कर सकते हैं तो यह अंतर्निहित समस्या का सुझाव दे सकता है। क्या आप यह भी जोड़ सकते हैं कि क्या आप SQL प्रबंधन स्टूडियो में या कोड के माध्यम से अंक दर्ज कर रहे हैं (क्या यह C# और SQL डेटा प्रकार असेंबली है)? आपको प्राप्त होने वाले त्रुटि संदेश का पूरा पाठ क्या है (यदि आपने ऊपर उद्धृत किए गए से अधिक है - मेरी त्रुटि देखें)।

लेकिन संक्षिप्त उत्तर है "मुझे नहीं लगता कि 567-बिंदुओं की कोई सीमा है"।

अपडेट करें: एड की पोस्ट आपको प्राप्त होने वाली सटीक त्रुटि है (System.ArgumentException:24200) - इसलिए यदि आप इसके बजाय GEOMETRY में काम कर रहे डेटा प्राप्त कर सकते हैं, तो यह एक कोशिश के काबिल हो सकता है:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में डेटाबेस की सूची प्राप्त करने के 3 तरीके

  2. जब हम क्रॉस अप्लाई के लिए जाते हैं और जब हम SQL सर्वर 2012 में इनर जॉइन के लिए जाते हैं

  3. किसी फ़ंक्शन (एसक्यूएल सर्वर) के भीतर गतिशील एसक्यूएल निष्पादित करते समय त्रुटि प्राप्त करना?

  4. मैं एक ही चयन कथन में एकाधिक सामान्य तालिका अभिव्यक्ति कैसे प्राप्त कर सकता हूं?

  5. टी-एसक्यूएल में सभी उपयोगकर्ता तालिकाओं में एक कॉलम जोड़ना