PostGIS में मौजूदा डेटा का SRID बदलना?


50

PostGIS में अपने शेपफाइल डेटा को आयात करते समय, मैंने उचित प्रोजेक्शन का चयन नहीं किया।

निर्देशांक को बदले बिना अब मैं डेटा का SRID कैसे बदलूं?

जवाबों:


83

एक एकल पंक्ति फ़ंक्शन है जो आपके लिए ऐसा करता है। बस निम्नलिखित SQL क्वेरी का उपयोग करें:

select UpdateGeometrySRID('Schema Name', 'mytable', 'the_geom', newSRID) ;

लेकिन, अगर आप मेरे जैसे हैं, तो आपको निम्न स्तर, लघु चरणों में दिलचस्पी होगी। तार्किक रूप से बोलना, उपरोक्त फ़ंक्शन निम्न चार चरण प्रक्रिया के बराबर है:

  1. ज्यामिति_ कॉलम की तालिका में, SRID को आवश्यक मान पर अद्यतन करें।

  2. निम्न एसक्यूएल स्टेटमेंट का उपयोग करके, टेबल पर दिए गए कन्ट्रोल को छोड़ दें

    ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;

  3. निम्न SQL कथन का उपयोग करके ज्यामिति के SRID'd को अद्यतन करें

    UPDATE mytable SET the_geom = ST_SetSRID(the_geom, newSRID);

  4. निम्नलिखित एसक्यूएल स्टेटमेंट का उपयोग करके कन्ट्रोल को वापस जोड़ें

    ALTER TABLE mytable

    ADD CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = (newSRID));


1
अधिक जानकारी और लिंक के लिए Postgis.org/docs/ST_SetSRID.html देखें
ब्रैडहार्ड्स

13

PostGIS 2.x के साथ, ज्यामिति कॉलम आमतौर पर टाइपमॉड्स का उपयोग करते हैं geometry(Point, 1234)। इनके लिए आप ALTER TABLE का उपयोग करके एक कदम में सीधे ज्योमेट्री कॉलम टाइप को संशोधित कर सकते हैं ।

उदाहरण के लिए, WGS84 geomमें SRID सेट करने के लिए, ST_SetSRID काmytable उपयोग करें :

ALTER TABLE mytable
  ALTER COLUMN geom
    TYPE geometry(Point, 4326)
    USING ST_SetSRID(geom, 4326);

ध्यान दें कि यह केवल SRID को बदल देगा, लेकिन समन्वय डेटा को रूपांतरित नहीं करेगा।


1
एक तुच्छ परिवर्तन के साथ, यह भूगोल कॉलम के साथ भी काम करेगा , जो UpdateGeometrySRIDसमर्थन नहीं करता है।
dsz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.