PostGIS का उपयोग करके मौजूदा तालिका में देशांतर / अक्षांश निर्देशांक से बिंदु बनाना?


10

मैं मौजूदा तालिका के देशांतर और अक्षांश स्तंभों का उपयोग करके एक बिंदु बनाना चाहूंगा ।
यहाँ ST_MakePoint के प्रलेखन का लिंक दिया गया है ।

यहाँ मेरी तालिका है:

CREATE TABLE sysinst.bio (  
    oid INTEGER PRIMARY KEY,  
    longitude FLOAT,  
    latitude FLOAT,  
        geom GEOMETRY(POINT, 26913)
);

ज्यामिति कॉलम जोड़ना:

SELECT AddGeometryColumn ('sysinst', 'bio', 'geom', 26913, 'POINT', 2);

यहाँ मेरी क्वेरी है:

UPDATE sysinst.bio SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 26913);

कोई त्रुटि नहीं लौटी हालांकि QGIS में देखे जाने पर POINTS को गलत तरीके से प्लॉट किया गया है।

के लिए (-97.5959, 21.1922), मैं पुनः प्राप्त करता हूं(-109.4896, 0.0002)

कोई सुझाव?

अगर यह एक आसान तरीका है तो मैं इसे और अधिक कुशलता से करने के लिए तैयार हूं।


मैं प्रश्न के साथ समस्या नहीं देख रहा हूँ। शायद आप भागों में समस्या का निदान करने की कोशिश कर सकते हैं - शायद क्यूजीआईएस भाग को खत्म करने की कोशिश करें, और बस पोस्टगिस के लिए कमांड लाइन का उपयोग करें?
ब्रैडहार्ड्स

शायद मैं समझ नहीं पा रहा हूं, लेकिन आपको लगता है कि देशांतर अक्षांश (-97, 21) में एक CRS जो कि UTM आधारित है, और मीटर का उपयोग करता है। यदि आप इसे एसआरआईडी 26918 के रूप में घोषित कर रहे हैं, तो उस सीआरएस में लंबे / अव्यक्त मान होना चाहिए। यदि लॉन्ग / लैट वैल्यू डिग्रियों में हैं तो आपको ST_SetSRID (MakePoint (...), 4326) के रूप में ज्योमेट्री बनाने की आवश्यकता होगी, फिर लेयर को 26913 में बदल दें
Micha

@ मिचा, आपके जवाब के रूप में अपनी टिप्पणी जोड़नी चाहिए। मुझे उम्मीद है कि उचित SRID ओपी समस्या का समाधान करेगा। यह शामिल करने और ST_Transform जोड़ने के तरीके के उदाहरण के लिए भी सहायक हो सकता है ।
कटहिनद

जवाबों:


16

शायद मैं समझ नहीं पा रहा हूं, लेकिन आपको लगता है कि देशांतर अक्षांश (-97, 21) में एक CRS है, जो UTM आधारित है, और मीटर का उपयोग करता है। यदि आप इसे एसआरआईडी 26918 के रूप में घोषित कर रहे हैं, तो उस सीआरएस में लंबे / अव्यक्त मान होना चाहिए। यदि लॉन्ग / लैट वैल्यू डिग्रियों में हैं, तो आपको ज्यामिति को ST_SetSRID (MakePoint (...), 4326) के रूप में बनाना होगा, फिर लेयर को 26913 में बदलना होगा। इसलिए, इसे सभी को एक साथ रखें, यदि आपको लेयर की आवश्यकता है 26913 में, लेकिन आपके देशांतर / अक्षांश स्तंभ सीआरएस 4326 के साथ डिग्री में हैं, फिर

UPDATE sysinst.bio SET geom = ST_Transform(ST_SetSRID(ST_MakePoint(longitude, latitude), 4326),26913);

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