[LINE | MULTILINE] STRING से POINT कैसे निकाले


10

मैं उन QGISसभी बिंदुओं को प्रदर्शित करने के लिए एक वेक्टर बनाने के लिए चाहूंगा जो एक LINESTRINGया MULTILINESTRINGएक PostGISडीबी में संग्रहीत है ।

मुझे लगता है कि मुझे LINESTRING(या MULTILINESTRING) के सभी बिंदुओं को बदलने की आवश्यकता है POINT

पहला प्रश्न :

क्या PostGISऐसा करने के लिए कोई कार्य है?

दूसरा प्रश्न :

यदि मैं परिणाम POINTतालिका से डुप्लिकेट बिंदुओं को बाहर करना चाहता हूं, तो मैं यह कैसे कर सकता हूं?


सभी को धन्यवाद। आपके सभी जवाबों ने मुझे बहुत मदद की है। मुझे यह तय करने के लिए थोड़ा सोचना होगा कि
किसको

जवाबों:


7

आदेश में बिंदु पाने के लिए और मूल ज्यामिति उपयोग के लिए लिंक

SELECT (ST_DumpPoints(the_geom)).path as path, id, (ST_DumpPoints(the_geom)).geom FROM linestrings)

और http://wiki.postgresql.org/wiki/Deleting_duplicates से गणतंत्र हटाएं

याद रखें कि आपको डाइजेशन हटाने के लिए एक यूनिक आईडी की जरूरत है, अगर आपके पास ऐसा नहीं है तो आपको इसे बनाने की जरूरत है


हाय एक टाइपो है, आपको अंतिम ब्रैकेट को निकालना चाहिए। सही वाक्यविन्यास होना चाहिएSELECT (ST_DumpPoints(the_geom)).path as path, id, (ST_DumpPoints(the_geom)).geom FROM linestrings
aborruso

5

जहां तक ​​पहले सवाल का सवाल है, उसके लिए एक पोस्टजीआईएस फ़ंक्शन है, ST_DumpPoints

डॉक्स पृष्ठ में पहला उदाहरण वही है जो आपको चाहिए। यह एक सेट-रिटर्निंग फ़ंक्शन है, इसलिए यह केवल बिंदुओं को डंप नहीं करता है, बल्कि कुछ जानकारी (पथ सरणी) भी है जो उन्हें मूल ज्यामिति से संबंधित करता है। चूंकि आप केवल बिंदुओं की परवाह करते हैं, आप कुछ इस तरह की कोशिश कर सकते हैं:

SELECT (dp).geom FROM (
  SELECT ST_DumpPoints(geom) AS dp
    FROM linestrings
)

2

विज्ञापन १।

CREATE TABLE points AS
SELECT ST_PointFromWKB(ST_AsEWKB(linestring_geom)) AS point_geom FROM linestring_table;

विज्ञापन 2. डुप्लीकेट पॉइंट्स पोस्टगिस का चयन करें

CREATE TEMPORARY TABLE temp AS 
SELECT *
FROM points AS a, points AS b
WHERE ST_Equals(a.geom, b.geom) AND a.id <> b.id;

DROP FROM points USING temp WHERE points.id=temp.id;

यह काम नहीं करता है, यह खाली ज्यामितीयता पैदा करता है और पोस्टग्रेएसक्यूएल प्रत्येक पंक्ति के लिए चेतावनी जारी करता है OGC WKB expected, EWKB provided - use GeometryFromEWKB() for this:। आप बस ST_AsEWKB()पूरी तरह से छोड़ सकते हैं, लेकिन यह अभी भी कोई मतलब नहीं होगा, ST_PointFromWKB
kprist

यदि इनपुट बाइट एक बिंदु ज्यामिति का प्रतिनिधित्व नहीं करता है तो NULL लौटाया जाता है।
व्लादिमीर

2

केवल विशिष्ट बिंदुओं को डंप करने के लिए, आप SELECT DISTINCT ONअभिव्यक्ति के साथ कुछ उपश्रेणियों का उपयोग कर सकते हैं :

SELECT geom, gid, path
FROM (
  SELECT DISTINCT ON (geom) geom, path, gid
  FROM (
    SELECT (ST_DumpPoints(the_geom)).geom, (ST_DumpPoints(the_geom)).path, gid
    FROM my_linestrings_table
  ) f
  ORDER BY geom, path, gid
) f
ORDER BY gid, path;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.