STIntersects का उपयोग करके बहुभुज में बिंदुओं की गिनती देने के लिए अद्यतन क्षेत्र?


11

मेरे पास एक बिंदु परत है (dbo.ptLayer)

  • लगभग 1M अंक
  • स्थानिक ज्यामिति प्रकार (dbo.ptLayer.geom)
  • अभी तक कोई स्थानिक सूचकांक नहीं है, लेकिन एक बार डेटा एकत्रित पूरा होने पर एक बना देगा।

मेरे पास एक बहुभुज परत है (dbo.polygonLayer)

  • लगभग 500 बहुभुज।
  • स्थानिक ज्यामिति प्रकार (dbo.polygonLayer.geom)

दोनों के पास आईडी नामक फ़ील्ड हैं।

मैं बहुभुज परत में एक खाली पूर्णांक फ़ील्ड को कैसे पॉपुलेट करता हूं, प्रत्येक बहुभुज के भीतर कुल अंकों की संख्या की गणना के साथ?

यद्यपि मेरे पास अन्य सॉफ़्टवेयर उत्पादों तक पहुंच है, लेकिन मुझे यह जानने में दिलचस्पी है कि SQL और SQL सर्वर के भीतर विशुद्ध रूप से क्या किया जा सकता है।

मेरा मानना ​​है कि मुझे STIntersects का उपयोग करना चाहिए लेकिन यह जानना चाहूंगा कि इस क्षेत्र को आबाद करने के लिए अपडेट करने का सबसे अच्छा तरीका क्या है।

जवाबों:


17

यह वही करना चाहिए जो आपको चाहिए:

एक प्रश्न का चयन करें:

SELECT polygons.id, Count(*) 
FROM points
JOIN polygons
ON polygons.ogr_geometry.STContains(points.ogr_geometry) = 1
GROUP BY polygons.id

एक अद्यतन के साथ:

UPDATE polygons
SET [countcolumn] = counts.pointcount
FROM polygons
JOIN
(
 SELECT polygons.id, Count(*) 
 FROM points
 JOIN polygons
 ON polygons.ogr_geometry.STContains(points.ogr_geometry) = 1
 GROUP BY polygons.id
) counts ON polygons.id = counts.id

यह मेरे द्वारा मेरे एक डेटासेट पर उस क्वेरी को चलाने का परिणाम है

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

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