PostGIS टोपोलॉजी के साथ संबंधित तत्वों के साथ परतों में शामिल होना


24

मैं वर्तमान में PostGIS टोपोलॉजी एक्सटेंशन का उपयोग कर रहा हूं, लेकिन मुझे यह समझने में कुछ कठिनाइयां हैं कि संरचना कैसे काम करती है:

मुख्य बिंदुओं में से एक "लेयर" s का उपयोग है: जैसा कि मैं समझता हूं, विशेषताओं को टोपोलॉजी के स्कीमा (एक नामित topo_actualname) से बाहर तालिका में संग्रहीत किया जाना चाहिए और उस टोपोलॉजी की परत के रूप में पंजीकृत होना चाहिए AddTopoGeometryColumn

हालांकि, संबंधित विशेषताओं (तत्वों में , या node, ) के साथ विशेषताओं (परत तालिका में संग्रहीत) में शामिल होने का एक सरल तरीका है ?faceedge_data

अब, मैं क्या करता हूं:

SELECT whatever
FROM layer_tb l
     JOIN topo_topologyname.edge_data e ON (l.topo).id=edge_id;

लेकिन मुझे लगता है कि पूरी layerअवधारणा बेकार है, अगर मुझे जानकारी प्राप्त करने के लिए टोपोलॉजी स्कीमा नाम और परत नाम दोनों को जानना होगा।

वास्तव में, मुझे लगता है कि मैं समझ गया था कि topoपरत पर कॉलम में यह जानने के लिए पर्याप्त जानकारी है कि संबंधित टोपोलॉजी कहां है, और इसके अलावा topologyस्कीमा प्रत्येक टोपोलॉजी के लिए प्रत्येक परत तालिका के लिए एक संदर्भ संग्रहीत करता है।

क्या जानकारी को एक साथ मिलाने का कोई छोटा / सरल / उचित तरीका है? मैं टोपोलॉजी विस्तार कार्यों में कुछ ढूंढ रहा था , लेकिन कुछ उपयोगी नहीं पा रहा था ।


3
मैं इस बात पर थोड़ा खो गया हूं कि आप टोपोलॉजी का लाभ कैसे उठा सकते हैं, लेकिन यह मदद कर सकता है। आप TopoGeometryएक ज्यामिति पर सीधे कास्ट कर सकते हैं SELECT whatever, ST_AsText(topogeom::geometry) FROM layer_tb:। बात यह है कि अगर किनारों को बाद में विभाजित किया जाता है, तो ऐसा लगता है कि परिणामस्वरूप ज्यामिति बदल सकती है।
jpmc26

1
आप जो चाहते हैं, वे उपकरण या डेटा ऑपरेशन हैं जैसे कि इंटरसेक्ट, यूनियन या मर्ज। QGIS पोस्ट GIS के साथ काम करता है और यह मुफ़्त है और इस तरह के उपकरण हैं। सुविधाएँ परत में हैं और शामिल हो जाती हैं जब आप उन प्रकार के संचालन के आधार पर परतों का विलय करते हैं।
लुईस

जवाबों:


1

टोपोलॉजी के लिए विशेषताओं का मानचित्रण प्रत्यक्ष नहीं है । संबंध एक नोड के लिए कुछ इस तरह है:

your_topogeom -> (topogeom_id) relation table (element_id)-> (node_id) node

तो आपका चयन विवरण इस तरह होगा:

SELECT whatever
FROM layer_tb l
INNER JOIN relation AS r ON (((l.mytopogeom).id , (l.mytopogeom).layer_id)) = (r.topogeo_id, r.layer_id  )
INNER JOIN edge_data AS e ON (r.element_id = e.edge_id)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.