2013-02-05 6 views
8

के लिए एसआरआईडी कैसे बदलूं, मेरे पास स्थानिक डेटा है कि ओरेकल ने का एक एसआरआईडी असाइन किया है। मैं इसे में बदलना चाहता हूं - वे दोनों एक ही समन्वय प्रणाली हैं, इसकी सिर्फ ओरेकल अपने स्वयं के एसआरआईडी का उपयोग करता है; इसलिए कोई पुन: प्रक्षेपण आवश्यक नहीं है (जैसे SDO_CS.TRANSFORM काम नहीं करता है क्योंकि यह वास्तव में निर्देशांक भी बदलता है, जो मैं नहीं चाहता))।मैं ओरेकल एसडीओ_GEOMETRY

मैंने USER_SDO_GEOM_METADATA को आसानी से अपडेट किया है, लेकिन SDO_GEOMETRY डेटा युक्त डेटा में भी एसआरआईडी है और मुझे नहीं पता कि इसे कैसे बदला जाए।

इसलिए उदाहरण के लिए मेरे वर्तमान डेटा की तरह दिखता है:

MDSYS.SDO_GEOMETRY(2001,81989,MDSYS.SDO_POINT_TYPE(420531.663898,268911.956161,NULL),NULL,NULL) 

और मैं के लिए इसे बदल जाने की जरूरत है:

MDSYS.SDO_GEOMETRY(2001,27700,MDSYS.SDO_POINT_TYPE(420531.663898,268911.956161,NULL),NULL,NULL) 

एक तालिका में सभी पंक्तियों के लिए। लेकिन मुझे नहीं पता कि सरणी के अन्य पहलुओं को अपरिवर्तित छोड़ते समय एसडीओ_GEOMETRY में स्वचालित रूप से एक तत्व को कैसे बदला जाए।

क्या कोई मुझे दिशा में इंगित कर सकता है? धन्यवाद।

उत्तर

16

SRID अपडेट करने के लिए कुछ इस तरह इस्तेमाल कर सकते हैं:

UPDATE YOUR_TABLE T 
SET T.YOUR_SDO_GEOMETRY_COLUMN.SDO_SRID = 27700 
WHERE T.YOUR_SDO_GEOMETRY_COLUMN IS NOT NULL 

नोट (इस उदाहरण में टी) की तरह एक मेज उर्फ ​​के उपयोग आवश्यक है।

+0

बहुत बढ़िया। एक इलाज किया, धन्यवाद। –

+9

दूसरों के लिए यह ध्यान रखना महत्वपूर्ण हो सकता है कि वास्तव में ऐसा करने के लिए, किसी को पहले स्थानिक इंडेक्स ड्रॉप करना होगा, मेटाडेटा तालिका अपडेट करना होगा, फिर सरड अपडेट करें, और फिर स्थानिक इंडेक्स को दोबारा जोड़ दें – chrismarx