2010-07-20 16 views
11

में जीओएमयूएनियन जैसे एसक्यूएल सर्वर टेबल में यूनियन सभी ज्यामिति बस ऊपर की तरफ स्पष्ट करने के लिए: मैं ज्यामिति को संघबद्ध करने के बारे में बात कर रहा हूं, एसक्यूएल कीवर्ड UNION नहीं।पोस्टग्रेज़

मैं एसक्यूएल सर्वर 2008 तक मैं इस तरह एक बयान देखा यह ठीक था PostGIS साथ Postgres से कुछ स्थानिक डेटा स्थानांतरित करने के लिए कोशिश कर रहा हूँ:

SELECT GeomUnion(the_geom) FROM some_table 

यह उस कॉलम में और इसे वापस यूनियनों सभी ज्यामिति एक परिणाम के रूप में (COUNT कैसे काम करता है)। जहां तक ​​मुझे पता है, SQL सर्वर में केवल STUnion फ़ंक्शन है, जो एक दूसरे के साथ एक ज्यामिति को यूनियन करता है। क्या पोस्टग्रेस के समान कुछ करने का कोई तरीका है?

यदि यह मदद करता है, STUnion समारोह इस तरह काम करता है:

SELECT first_geometry_column.STUnion(second_geometry_column) FROM some_table 
+1

अस्वीकरण: मैंने स्थानिक डेटा के साथ काम नहीं किया है :)। क्या आप इच्छित GeomUnion कार्यक्षमता प्राप्त करने के लिए संयोजन में सामान्य तालिका अभिव्यक्ति और STUnion का उपयोग नहीं कर सकते? –

उत्तर

9

तरह से मैं यह कर समाप्त हो गया चर के साथ है:

DECLARE @Shape GEOMETRY 
SET @Shape = GEOMETRY::STGeomFromText('GEOMETRYCOLLECTION EMPTY', @MySrid) 

SELECT @Shape = @Shape.STUnion(Shape) 
    FROM MyShapeTable 

यह रूप में अच्छा नहीं है, लेकिन यह काम करता है।

+3

और यह कुछ हद तक ज्यामिति से अधिक * वास्तव में महंगा हो जाता है। –

5

आपका सबसे अच्छा विकल्प कुल समर्थन के लिए सीएलआर फ़ंक्शन बनाना है।

+0

आप सही हैं - यह SQL 2008 के लिए सबसे अच्छा विकल्प है लेकिन यह बहुत धीमा है और छोटी ज्यामिति त्रुटियों का कारण बनता है। शुक्र है, SQL2012 बिजली तेज है और इसमें ज्यामिति समस्याएं नहीं हैं। एमएस ने कहा है कि वे SQL2008 में ज्यामिति मुद्दों को ठीक करने वाले नहीं हैं। – Damien

9

केवल UnionAggregate समारोह SQL2012 है: वहाँ मौजूदा समाधान के एक जोड़े कर रहे हैं?

SELECT geography::UnionAggregate(geometry) FROM some_table 

हम्म ऐसा लगता है। http://technet.microsoft.com/en-us/library/ff929095.aspx

+0

जानकारी के लिए धन्यवाद। बहुत समय बचाया! एफवाईआई: ज्यामिति डेटा के लिए यह ज्यामिति :: यूनियनएग्रेगेट (ज्यामिति) है। –

+0

SQL 2012 और उसके बाद के संस्करण के लिए यह मूल प्रश्न का बिल्कुल जवाब है। – mdisibio

संबंधित मुद्दे