बहुभुज चौराहे QGIS आभासी परतों का उपयोग कर


10

मैं एक आभासी परत का उपयोग करके QGIS में बहुभुज ज्यामितीय अंतर करने की कोशिश कर रहा हूँ:

SELECT
    sbqry.rowid AS gid,
    sbqry.geom
FROM
    (SELECT
        ST_Intersection(land_parcels.geometry, flood_zone.geometry) AS geom
    FROM land_parcels, flood_zone
    WHERE ST_Intersects(land_parcels.geometry, flood_zone.geometry) AND NOT ST_Touches(land_parcels.geometry, flood_zone.geometry))
    AS sbqry;

दुर्भाग्य से, sbqry.rowid AS gidऑटो-इंक्रीमेंटिंग मानों के बजाय NULL लौटाता है।

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

क्या कोई जानता है कि 'gid' नाम का एक विशिष्ट पहचानकर्ता स्तंभ कैसे बनाया जाए? जहां तक ​​मुझे पता है कि वर्चुअल लेयर्स SQLite / स्पैटिलाइट पर आधारित हैं।


वर्चुअल लेयर के लिए आप किस डेटा प्रकार का उपयोग कर रहे हैं?
DPSSpatial

इनपुट परतें .shp फाइलें होती हैं, आउटपुट ज्यामिति प्रकार 'बहुभुज' होता है।
ग्रहण

मुझे नहीं पता था कि आप आकृति के आधार पर स्थानिक कार्य (ST_ *) चला सकते हैं! एक दम बढ़िया!!!
DPSSpatial

क्या आपने '' सेक्स्ड राईड इन गिद 'के रूप में sbqry को हटाने की कोशिश की है ... मुझे इस तरह के उदाहरण के साथ एक और पोस्ट मिली।
kttii

'rowid AS gid ’सरल चयन बयानों के साथ काम करता है जैसे बफर बनाना लेकिन उपश्रेणी के साथ नहीं।
eclipsed_by_the_moon

जवाबों:


3

PostGIS में, यदि आप केवल पंक्ति संख्या चाहते हैं तो आप यह कर सकते हैं:

SELECT
    row_number() over () as gid,
    sbqry.geom
FROM
    (SELECT
        ST_Intersection(land_parcels.geometry, flood_zone.geometry) AS geom
    FROM land_parcels, flood_zone
    WHERE ST_Intersects(land_parcels.geometry, flood_zone.geometry) AND NOT ST_Touches(land_parcels.geometry, flood_zone.geometry))
    AS sbqry;

'row_number () over ()' PostGIS में काम करने लगता है, लेकिन SpatiaLite (QGIS वर्चुअल सर्वर) में नहीं।
ग्रहण

2
SELECT  f.rowid AS gid, f.geom
FROM
(SELECT sbqry.geom
FROM (SELECT ST_Intersection(land_parcels.geometry, flood_zone.geometry) AS geom FROM land_parcels, flood_zone 
WHERE ST_Intersects(land_parcels.geometry, flood_zone.geometry) AND NOT ST_Touches(land_parcels.geometry, flood_zone.geometry)) AS sbqry) as f

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