2009-07-09 19 views
7

मेरे पास एक तालिका में 8 वास्तविक मान हैं जिन्हें मैं बहुभुज में जोड़ना चाहता हूं। मैं इन मानों का उपयोग करके बहुभुज बनाने के तरीके को समझने में सक्षम नहीं हूं। मैंमैं PostgreSQL में फ़ील्ड का उपयोग करके बहुभुज कैसे बना सकता हूं?

SELECT polygon(lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4) FROM table; 

की कोशिश कर विविधताओं रखते हैं लेकिन मौजूदा नहीं बहुभुज समारोह या प्रकार बहुभुज के लिए एक अमान्य इनपुट सिंटैक्स के बारे में त्रुटियों मिलती रहती है। क्या किसी ने इसे पहले किया है?

उत्तर

12

एक नियमित बहुभुज postgres के लिए वाक्यविन्यास अधिक की तरह है:

insert into geo_table values (1, '((2,2),(3,4),(3,6),(1,1))');

कुछ आईडी कहाँ 1 है और उद्धृत प्रविष्टि बहुभुज है। मैं उम्मीद करता हूं कि क्वेरी समान हो, आपको निर्देशांक के लिए शायद ब्रांड्स इत्यादि की आवश्यकता हो। आमतौर पर भू-स्थानिक डेटा के लिए आप चाहते हैं (लोन लेट) निर्देशांक। GeomFromText तरीके से कार्य करेंगे - bvmou ने उल्लेख किया

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')

+0

वह डब्लूकेटी कथन मुझे जो दिखता है, वैसा ही दिखता है, लेकिन डेटाबेस ड्रूपल (एक सीएमएस) द्वारा बनाया गया था ताकि पोस्टगिस टेम्पलेट का उपयोग इसे बनाने के दौरान नहीं किया गया था। क्या मैं पाठ को पॉलीगॉन में किसी अन्य तरीके से परिवर्तित कर सकता हूं? –

+0

मुझे डेटाबेस में पोस्टजीआईएस जोड़ने पर निर्देश मिले और इसे काम करने के लिए मिला। –

1

: PostGIS भी WKT बयान की तरह लगता है। मैं सिर्फ एक छोटे से वाक्य रचना अद्यतन जोड़ देंगे:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))') 
+0

+1 हमेशा माता-पिता को पेंच करें! – unmounted

0

यह उदाहरण देशांतर लेता है और अक्षांश एक मेज से समन्वय करता है और उन्हें एक ज्यामिति में बदल देता है। प्रत्येक बॉक्स के आयामों को long_high, long_low, lat_high, और lat_low के रूप में दिया जाता है। यहां, 500 मीटर तक लगभग 500 मीटर का एक बॉक्स।

  1. उन मूल्यों के साथ नए क्षेत्र तालिका के लिए एक नया ज्यामिति स्तंभ 'बॉक्स' जोड़े

    SELECT AddGeometryColumn('public', 'predpol_raw', 'box', 2240, 'POLYGON', 2);
  2. अद्यतन।

     
    UPDATE predpol_raw 
    SET box = 
         ST_Transform(
          ST_GeomFromText(
           format('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))', 
            long_high,lat_high, long_low,lat_high, 
            long_low,lat_low, long_high,lat_low, 
            long_high,lat_high 
           ), 
           4326 
          ), 
          2240 
         ); 
    

नोट एक अलग स्थानिक संदर्भ के लिए परिवर्तन। पॉलीगॉन कीवर्ड को डबल ब्रांड्स की आवश्यकता होती है (()) '।

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

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