Django 2.1 - GIS QuerySet API Reference

जीआईएस क्वेरीसैट एपीआई संदर्भ




django

जीआईएस क्वेरीसैट एपीआई संदर्भ

स्थानिक लुकअप

इस खंड में स्थानिक रूप GeometryField और RasterField लिए उपलब्ध हैं।

एक परिचय के लिए, स्थानिक लुकअप परिचय देखें । किसी विशेष स्थानिक बैकएंड के साथ जो लुकअप संगत हैं, उसके अवलोकन के लिए, स्थानिक लुकअप संगतता तालिका देखें

लकीर के फकीर

नीचे दिए गए संदर्भ में सभी उदाहरण ज्यामिति फ़ील्ड और इनपुट के लिए दिए गए हैं, लेकिन लुकअप का उपयोग दोनों तरफ के चींटियों के साथ किया जा सकता है। जब भी कोई लुकअप रेखापुंज इनपुट का समर्थन नहीं करता है, इनपुट स्वचालित रूप से एक ज्यामिति में परिवर्तित हो जाता है जहां ST_Polygon फ़ंक्शन का उपयोग करना आवश्यक होता है। रेखांकन देखने के लिए परिचय भी देखें।

लुकअप द्वारा उपयोग किए जाने वाले डेटाबेस ऑपरेटरों को तीन श्रेणियों में विभाजित किया जा सकता है:

  • मूल रेखापुंज समर्थन N : ऑपरेटर मूल रूप से लुकअप के दोनों किनारों पर रेखापुंजों को स्वीकार करता है, और रेखापुंज इनपुट को ज्यामितीय इनपुट के साथ मिलाया जा सकता है।
  • द्विपक्षीय रेखापुंज समर्थन B : ऑपरेटर रेखापुंजों का समर्थन करता है केवल अगर लुकअप के दोनों किनारों को रेखापुंज इनपुट मिलते हैं। मिश्रित डेटा के लिए रेखापुंज डेटा स्वचालित रूप से ज्यामितीय में परिवर्तित हो जाता है।
  • ज्यामिति रूपांतरण समर्थन C । लुकअप में मूल रेखापुंज समर्थन नहीं है, सभी रेखापुंज डेटा स्वचालित रूप से ज्यामितीय रूपांतरित हो जाते हैं।

नीचे दिए गए उदाहरण विभिन्न प्रकार के रेखापुंज समर्थन में लुकअप के लिए एसक्यूएल के बराबर दिखाते हैं। एक ही पैटर्न सभी स्थानिक लुकअप पर लागू होता है।

मामला देखो एसक्यूएल समतुल्य
एन, बी rast__contains=rst ST_Contains(rast, rst)
एन, बी rast__1__contains=(rst, 2) ST_Contains(rast, 1, rst, 2)
बी, सी rast__contains=geom ST_Contains(ST_Polygon(rast), geom)
बी, सी rast__1__contains=geom ST_Contains(ST_Polygon(rast, 1), geom)
बी, सी poly__contains=rst ST_Contains(poly, ST_Polygon(rst))
बी, सी poly__contains=(rst, 1) ST_Contains(poly, ST_Polygon(rst, 1))
सी rast__crosses=rst ST_Crosses(ST_Polygon(rast), ST_Polygon(rst))
सी rast__1__crosses=(rst, 2) ST_Crosses(ST_Polygon(rast, 1), ST_Polygon(rst, 2))
सी rast__crosses=geom ST_Crosses(ST_Polygon(rast), geom)
सी poly__crosses=rst ST_Crosses(poly, ST_Polygon(rst))

रैस्टरों के साथ स्थानिक लुकअप केवल पोस्टगिस बैकेंड्स के लिए समर्थित हैं (इस खंड में PGRaster के रूप में दर्शाए गए)।

bbcontains

उपलब्धता : PostGIS , MySQL, SpatiaLite, PGRaster (नेटिव)

यदि ज्यामिति या रेखापुंज क्षेत्र के बाउंडिंग बॉक्स में पूरी तरह से लुकिंग ज्योमेट्री की बाउंडिंग बॉक्स है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__bbcontains=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS poly ~ geom
माई एसक्यूएल MBRContains(poly, geom)
SpatiaLite MbrContains(poly, geom)

bboverlaps

उपलब्धता : PostGIS , MySQL, SpatiaLite, PGRaster (नेटिव)

यदि ज्यामिति फ़ील्ड की बाउंडिंग बॉक्स लुकअप ज्यामिति के बाउंडिंग बॉक्स को ओवरलैप करती है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__bboverlaps=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS poly && geom
माई एसक्यूएल MBROverlaps(poly, geom)
SpatiaLite MbrOverlaps(poly, geom)

contained

उपलब्धता : PostGIS , MySQL, SpatiaLite, PGRaster (नेटिव)

यदि ज्यामिति फ़ील्ड की बाउंडिंग बॉक्स लुकिंग ज्यामिति के बाउंडिंग बॉक्स द्वारा पूरी तरह से निहित है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__contained=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS poly @ geom
माई एसक्यूएल MBRWithin(poly, geom)
SpatiaLite MbrWithin(poly, geom)

contains

उपलब्धता : PostGIS , Oracle, MySQL, SpatiaLite, PGRaster (द्विपक्षीय)

यदि ज्यामिति क्षेत्र में स्थानिक रूप से लुकिंग ज्यामिति है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__contains=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Contains(poly, geom)
आकाशवाणी SDO_CONTAINS(poly, geom)
माई एसक्यूएल MBRContains(poly, geom)
SpatiaLite Contains(poly, geom)

contains_properly

उपलब्धता : PostGIS , PGRaster (द्विपक्षीय)

यदि रिटर्न ज्योमेट्री ज्योमेट्री फील्ड के इंटीरियर को इंटरसेप्ट करता है, लेकिन सीमा (या बाहरी) नहीं तो सही है।

उदाहरण:

Zipcode.objects.filter(poly__contains_properly=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_ContainsProperly(poly, geom)

coveredby

उपलब्धता : PostGIS , Oracle, PGRaster (द्विपक्षीय)

यदि ज्यामिति क्षेत्र में कोई बिंदु लुकिंग ज्यामिति के बाहर है तो टेस्ट। [3]

उदाहरण:

Zipcode.objects.filter(poly__coveredby=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_CoveredBy(poly, geom)
आकाशवाणी SDO_COVEREDBY(poly, geom)

covers

उपलब्धता : PostGIS , Oracle, PGRaster (द्विपक्षीय)

यदि लुकआउट ज्यामिति में कोई बिंदु नहीं है तो परीक्षण ज्यामिति क्षेत्र के बाहर है। [3]

उदाहरण:

Zipcode.objects.filter(poly__covers=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Covers(poly, geom)
आकाशवाणी SDO_COVERS(poly, geom)

crosses

उपलब्धता : PostGIS , स्पैटियालाइट, PGRaster (रूपांतरण)

यदि ज्यामिति फ़ील्ड स्थानिक रूप से लुकअप ज्यामिति को पार कर जाती है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__crosses=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Crosses(poly, geom)
SpatiaLite Crosses(poly, geom)

disjoint

उपलब्धता : PostGIS , Oracle, MySQL, SpatiaLite, PGRaster (द्विपक्षीय)

यदि ज्यामिति फ़ील्ड को स्थानिक रूप से लुकआउट ज्यामिति से अलग किया जाता है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__disjoint=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Disjoint(poly, geom)
आकाशवाणी SDO_GEOM.RELATE(poly, 'DISJOINT', geom, 0.05)
माई एसक्यूएल MBRDisjoint(poly, geom)
SpatiaLite Disjoint(poly, geom)

equals

उपलब्धता : PostGIS , Oracle, MySQL, SpatiaLite, PGRaster (रूपांतरण)

यदि ज्यामिति फ़ील्ड स्थानिक रूप से लुकअप ज्यामिति के बराबर है तो परीक्षण।

उदाहरण:

Zipcode.objects.filter(poly__equals=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Equals(poly, geom)
आकाशवाणी SDO_EQUAL(poly, geom)
माई एसक्यूएल MBREquals(poly, geom)
SpatiaLite Equals(poly, geom)

exact , same_as

उपलब्धता : PostGIS , Oracle, MySQL, SpatiaLite, PGRaster (द्विपक्षीय)

अगर ज्यामिति फ़ील्ड लुकिंग ज्यामिति के "बराबर" है तो टेस्ट करें। ओरेकल और स्पैटियालाइट पर यह स्थानिक समानता का परीक्षण करता है, जबकि MySQL और PostGIS पर यह बाउंडिंग बॉक्स की समानता का परीक्षण करता है।

उदाहरण:

Zipcode.objects.filter(poly=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS poly ~= geom
आकाशवाणी SDO_EQUAL(poly, geom)
माई एसक्यूएल MBREquals(poly, geom)
SpatiaLite Equals(poly, geom)

intersects

उपलब्धता : PostGIS , Oracle, MySQL, SpatiaLite, PGRaster (द्विपक्षीय)

यदि ज्यामिति फ़ील्ड स्थानिक रूप से लुकअप ज्यामिति को काटती है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__intersects=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Intersects(poly, geom)
आकाशवाणी SDO_OVERLAPBDYINTERSECT(poly, geom)
माई एसक्यूएल MBRIntersects(poly, geom)
SpatiaLite Intersects(poly, geom)

isvalid

उपलब्धता : MySQL (SQL 5.7.5), PostGIS , Oracle, SpatiaLite

अगर ज्यामिति वैध है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__isvalid=True)
बैकएंड एसक्यूएल समतुल्य
MySQL, PostGIS, SpatiaLite ST_IsValid(poly)
आकाशवाणी SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(poly, 0.05) = 'TRUE'
Django 2.0 में बदला:

MySQL का समर्थन जोड़ा गया था।

overlaps

उपलब्धता : PostGIS , Oracle, MySQL, SpatiaLite, PGRaster (द्विपक्षीय)

relate

उपलब्धता : PostGIS , Oracle, SpatiaLite, PGRaster (रूपांतरण)

परीक्षण यदि ज्यामिति क्षेत्र स्थानिक रूप से दिए गए पैटर्न में दिए गए मानों द्वारा लुकिंग ज्यामिति से संबंधित है। इस लुकअप के लिए ट्यूपल पैरामीटर, (geom, pattern) आवश्यकता होती है; pattern का रूप स्थानिक बैकएंड पर निर्भर करेगा:

PostGIS और स्पैटियालाइट

इन स्थानिक बैकेंड्स पर प्रतिच्छेदन पैटर्न नौ अक्षरों से युक्त एक स्ट्रिंग है, जो कि ज्यामिति क्षेत्र और लुकिंग ज्यामिति के आंतरिक, सीमा और बाहरी के बीच के चौराहों को परिभाषित करता है। प्रतिच्छेदन पैटर्न मैट्रिक्स केवल निम्न वर्णों का उपयोग कर सकता है: 1 , 2 , T , F , या * । यह लुकअप प्रकार उपयोगकर्ताओं को DE-9IM मॉडल के अनुरूप एक विशिष्ट ज्यामितीय संबंध "फाइन ट्यून" करने की अनुमति देता है। [1]

ज्यामिति उदाहरण:

# A tuple lookup parameter is used to specify the geometry and
# the intersection pattern (the pattern here is for 'contains').
Zipcode.objects.filter(poly__relate=(geom, 'T*T***FF*'))

PostGIS SQL समकक्ष:

SELECT ... WHERE ST_Relate(poly, geom, 'T*T***FF*')

स्पैटियालाइट SQL समकक्ष:

SELECT ... WHERE Relate(poly, geom, 'T*T***FF*')

रेखापुंज उदाहरण:

Zipcode.objects.filter(poly__relate=(rast, 1, 'T*T***FF*'))
Zipcode.objects.filter(rast__2__relate=(rast, 1, 'T*T***FF*'))

PostGIS SQL समकक्ष:

SELECT ... WHERE ST_Relate(poly, ST_Polygon(rast, 1), 'T*T***FF*')
SELECT ... WHERE ST_Relate(ST_Polygon(rast, 2), ST_Polygon(rast, 1), 'T*T***FF*')

आकाशवाणी

यहां रिलेशन पैटर्न कम से कम नौ रिलेशन स्ट्रिंग्स में से एक से OVERLAPBDYDISJOINT : TOUCH , OVERLAPBDYDISJOINT , OVERLAPBDYINTERSECT , EQUAL , INSIDE , COVEREDBY , CONTAINS , COVERS , ON , और ANYINTERACT । एकाधिक स्ट्रिंग्स को तार्किक बूलियन ऑपरेटर के साथ जोड़ा जा सकता है या, उदाहरण के लिए, 'inside+touch'[2] संबंध स्ट्रिंग केस-असंवेदनशील हैं।

उदाहरण:

Zipcode.objects.filter(poly__relate=(geom, 'anyinteract'))

Oracle SQL समकक्ष:

SELECT ... WHERE SDO_RELATE(poly, geom, 'anyinteract')

touches

उपलब्धता : PostGIS , Oracle, MySQL, SpatiaLite

यदि ज्यामिति फ़ील्ड स्थानिक रूप से लुकअप ज्यामिति को स्पर्श करती है तो परीक्षण।

उदाहरण:

Zipcode.objects.filter(poly__touches=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Touches(poly, geom)
माई एसक्यूएल MBRTouches(poly, geom)
आकाशवाणी SDO_TOUCH(poly, geom)
SpatiaLite Touches(poly, geom)

within

उपलब्धता : PostGIS , Oracle, MySQL, SpatiaLite, PGRaster (द्विपक्षीय)

यदि ज्यामिति फ़ील्ड को स्थानिक रूप से लुकिंग ज्यामिति के भीतर किया जाता है तो परीक्षण।

उदाहरण:

Zipcode.objects.filter(poly__within=geom)
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Within(poly, geom)
माई एसक्यूएल MBRWithin(poly, geom)
आकाशवाणी SDO_INSIDE(poly, geom)
SpatiaLite Within(poly, geom)

left

उपलब्धता : PostGIS , PGRaster (रूपांतरण)

यदि ज्यामिति फ़ील्ड की बाउंडिंग बॉक्स लुकिंग ज्यामिति के बाउंडिंग बॉक्स के बाईं ओर है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__left=geom)

पोस्टजीआईएस समकक्ष:

SELECT ... WHERE poly << geom

right

उपलब्धता : PostGIS , PGRaster (रूपांतरण)

यदि ज्यामिति फ़ील्ड की बाउंडिंग बॉक्स लुकिंग ज्यामिति के बाउंडिंग बॉक्स के दाईं ओर है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__right=geom)

पोस्टजीआईएस समकक्ष:

SELECT ... WHERE poly >> geom

overlaps_left

उपलब्धता : PostGIS , PGRaster (द्विपक्षीय)

यदि ज्यामिति फ़ील्ड का बाउंडिंग बॉक्स ओवरलैप हो जाता है या लुकअप ज्यामिति के बाउंडिंग बॉक्स के बाईं ओर होता है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__overlaps_left=geom)

पोस्टजीआईएस समकक्ष:

SELECT ... WHERE poly &< geom

overlaps_right

उपलब्धता : PostGIS , PGRaster (द्विपक्षीय)

यदि ज्यामिति फ़ील्ड का बाउंडिंग बॉक्स ओवरलैप हो जाता है या लुकिंग ज्यामिति के बाउंडिंग बॉक्स के दाईं ओर होता है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__overlaps_right=geom)

पोस्टजीआईएस समकक्ष:

SELECT ... WHERE poly &> geom

overlaps_above

उपलब्धता : PostGIS , PGRaster (रूपांतरण)

यदि ज्यामिति फ़ील्ड का बाउंडिंग बॉक्स ओवरलैप होता है या लुकिंग ज्यामिति के बाउंडिंग बॉक्स के ऊपर होता है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__overlaps_above=geom)

पोस्टजीआईएस समकक्ष:

SELECT ... WHERE poly |&> geom

overlaps_below

उपलब्धता : PostGIS , PGRaster (रूपांतरण)

यदि ज्यामिति फ़ील्ड की बाउंडिंग बॉक्स ओवरलैप होती है या लुकिंग ज्यामिति के बाउंडिंग बॉक्स के नीचे होती है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__overlaps_below=geom)

पोस्टजीआईएस समकक्ष:

SELECT ... WHERE poly &<| geom

strictly_above

उपलब्धता : PostGIS , PGRaster (रूपांतरण)

यदि ज्यामिति फ़ील्ड की बाउंडिंग बॉक्स लुकिंग ज्यामिति के बाउंडिंग बॉक्स के ऊपर है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__strictly_above=geom)

पोस्टजीआईएस समकक्ष:

SELECT ... WHERE poly |>> geom

strictly_below

उपलब्धता : PostGIS , PGRaster (रूपांतरण)

यदि ज्यामिति फ़ील्ड की बाउंडिंग बॉक्स लुकिंग ज्यामिति के बाउंडिंग बॉक्स से नीचे है तो टेस्ट।

उदाहरण:

Zipcode.objects.filter(poly__strictly_below=geom)

पोस्टजीआईएस समकक्ष:

SELECT ... WHERE poly <<| geom

डिस्टेंस लुकअप

उपलब्धता : PostGIS, Oracle, MySQL, SpatiaLite, PGRaster (नेटिव)

दूरी प्रश्नों के प्रदर्शन पर अवलोकन के लिए, कृपया दूरस्थ प्रश्नों के परिचय को देखें।

डिस्टेंस लुकअप निम्न रूप लेते हैं:

<field>__<distance lookup>=(<geometry/raster>, <distance value>[, 'spheroid'])
<field>__<distance lookup>=(<raster>, <band_index>, <distance value>[, 'spheroid'])
<field>__<band_index>__<distance lookup>=(<raster>, <band_index>, <distance value>[, 'spheroid'])

एक दूरी की खोज में पारित मूल्य एक टुपल है; पहले दो मान अनिवार्य हैं, और दूरी की गणना करने के लिए ज्यामिति हैं, और एक दूरी मान (या तो क्षेत्र की इकाइयों में एक संख्या, एक Distance वस्तु, या एक query expression <ref/models/expressions> )। लुकअप के लिए एक बैंड इंडेक्स पास करने के लिए, 3-ट्यूपल का उपयोग करें जहां दूसरी प्रविष्टि बैंड इंडेक्स है।

dwithin को छोड़कर हर दूरी की खोज पर, एक वैकल्पिक तत्व, 'spheroid' dwithin , को dwithin समन्वय प्रणाली वाले क्षेत्रों पर अधिक सटीक गोलाकार दूरी गणना कार्यों का उपयोग करने के लिए शामिल किया जा सकता है।

PostgreSQL पर, 'spheroid' विकल्प ST_DistanceSpheroid बजाय ST_DistanceSpheroid का उपयोग करता है। सरल ST_Distance फ़ंक्शन का उपयोग अनुमानित समन्वय प्रणालियों के साथ किया जाता है। रेखापुंज आधारित लुकअप के लिए रेखागणित को ज्यामितीय में परिवर्तित किया जाता है।

Django 2.0 में नया:

MySQL का समर्थन जोड़ा गया था।

distance_gt

ऐसे मॉडल लौटाता है जहाँ लुकिंग ज्यामिति से ज्यामिति क्षेत्र की दूरी दी गई दूरी के मान से अधिक होती है।

उदाहरण:

Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Distance/ST_Distance_Sphere(poly, geom) > 5
आकाशवाणी SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) > 5
SpatiaLite Distance(poly, geom) > 5

distance_gte

उन मॉडलों को लौटाता है जहां लुकिंग ज्यामिति से ज्यामिति क्षेत्र की दूरी दी गई दूरी के मान से अधिक या बराबर है।

उदाहरण:

Zipcode.objects.filter(poly__distance_gte=(geom, D(m=5)))
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Distance/ST_Distance_Sphere(poly, geom) >= 5
आकाशवाणी SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) >= 5
SpatiaLite Distance(poly, geom) >= 5

distance_lt

ऐसे मॉडल लौटाता है जहाँ लुकिंग ज्यामिति से ज्यामिति क्षेत्र की दूरी दी गई दूरी के मान से कम होती है।

उदाहरण:

Zipcode.objects.filter(poly__distance_lt=(geom, D(m=5)))
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Distance/ST_Distance_Sphere(poly, geom) < 5
आकाशवाणी SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) < 5
SpatiaLite Distance(poly, geom) < 5

distance_lte

ऐसे मॉडल लौटाता है जहाँ लुकिंग ज्यामिति से ज्यामिति क्षेत्र की दूरी दी गई दूरी के मान से कम या बराबर होती है।

उदाहरण:

Zipcode.objects.filter(poly__distance_lte=(geom, D(m=5)))
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_Distance/ST_Distance_Sphere(poly, geom) <= 5
आकाशवाणी SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) <= 5
SpatiaLite Distance(poly, geom) <= 5

dwithin

मॉडल लौटाता है जहाँ लुकिंग ज्यामिति से ज्यामिति क्षेत्र की दूरी एक दूसरे से दी गई दूरी के भीतर होती है। ध्यान दें कि आप केवल लक्षित ऑब्जेक्ट को अनुमानित प्रणाली में होने पर Distance वस्तुएँ प्रदान कर सकते हैं। भौगोलिक ज्यामिति के लिए, आपको ज्यामिति क्षेत्र की इकाइयों (जैसे WGS84 लिए डिग्री) का उपयोग करना चाहिए।

उदाहरण:

Zipcode.objects.filter(poly__dwithin=(geom, D(m=5)))
बैकएंड एसक्यूएल समतुल्य
PostGIS ST_DWithin(poly, geom, 5)
आकाशवाणी SDO_WITHIN_DISTANCE(poly, geom, 5)
SpatiaLite PtDistWithin(poly, geom, 5)

अलग कार्य

Django कुछ जीआईएस-विशिष्ट समग्र कार्य प्रदान करता है। इन समग्र कार्यों का उपयोग करने के तरीके के विवरण के लिए, एकत्रीकरण पर विषय मार्गदर्शिका देखें।

कीवर्ड तर्क विवरण
tolerance यह कीवर्ड ओरेकल के लिए ही है। यह SDOAGGRTYPE प्रक्रिया द्वारा उपयोग किए जाने वाले सहिष्णुता मूल्य के लिए है; ओरेकल दस्तावेज में अधिक विवरण हैं।

उदाहरण:

>>> from django.contrib.gis.db.models import Extent, Union
>>> WorldBorder.objects.aggregate(Extent('mpoly'), Union('mpoly'))

Collect

class Collect(geo_field)

उपलब्धता : PostGIS , स्पैटियालाइट

ज्यामिति स्तंभ से एक GEOMETRYCOLLECTION या MULTI ज्यामिति ऑब्जेक्ट लौटाता है। यह Union एग्रीगेट के एक सरलीकृत संस्करण के अनुरूप है, सिवाय इसके कि यूनियन के प्रदर्शन की तुलना में तेजी से परिमाण के कई आदेश हो सकते हैं क्योंकि यह बस ज्यामिति को एक संग्रह या मल्टी ऑब्जेक्ट में रोल करता है, भंग सीमाओं के बारे में परवाह नहीं करता है।

Extent

class Extent(geo_field)

उपलब्धता : PostGIS , Oracle, SpatiaLite

geo_field में सभी geo_field की सीमा को चार- QuerySet रूप में QuerySet , जिसमें निचले बाएँ समन्वय और ऊपरी दाएँ समन्वय शामिल हैं।

उदाहरण:

>>> qs = City.objects.filter(name__in=('Houston', 'Dallas')).aggregate(Extent('poly'))
>>> print(qs['poly__extent'])
(-96.8016128540039, 29.7633724212646, -95.3631439208984, 32.782058715820)

Extent3D

class Extent3D(geo_field)

उपलब्धता : PostGIS

geo_field में सभी geo_field की 3 डी सीमा को छह-ट्यूपल के रूप में QuerySet , जिसमें निचले बाएँ समन्वय और ऊपरी दाएँ समन्वय (प्रत्येक में x, y और z निर्देशांक) होते हैं।

उदाहरण:

>>> qs = City.objects.filter(name__in=('Houston', 'Dallas')).aggregate(Extent3D('poly'))
>>> print(qs['poly__extent3d'])
(-96.8016128540039, 29.7633724212646, 0, -95.3631439208984, 32.782058715820, 0)

MakeLine

class MakeLine(geo_field)

उपलब्धता : PostGIS , स्पैटियालाइट

LineString में बिंदु फ़ील्ड geometries से निर्मित एक LineString देता है। वर्तमान में, क्वेरी को आदेश देने का कोई प्रभाव नहीं है।

उदाहरण:

>>> qs = City.objects.filter(name__in=('Houston', 'Dallas')).aggregate(MakeLine('poly'))
>>> print(qs['poly__makeline'])
LINESTRING (-95.3631510000000020 29.7633739999999989, -96.8016109999999941 32.7820570000000018)

Union

class Union(geo_field)

उपलब्धता : PostGIS , Oracle, SpatiaLite

यह विधि एक GEOSGeometry ऑब्जेक्ट को GEOSGeometry में हर ज्यामिति के संघ को शामिल करती है। कृपया ध्यान दें कि Union का उपयोग प्रोसेसर गहन है और बड़ी क्वेरी पर महत्वपूर्ण मात्रा में समय ले सकता है।

ध्यान दें

यदि इस विधि का उपयोग करने के लिए गणना समय बहुत महंगा है, तो इसके बजाय Collect का उपयोग करने पर विचार करें।

उदाहरण:

>>> u = Zipcode.objects.aggregate(Union(poly))  # This may take a long time.
>>> u = Zipcode.objects.filter(poly__within=bbox).aggregate(Union(poly))  # A more sensible approach.

फुटनोट

[1] एसक्यूएल के लिए ओपन जीआईएस सिंपल फीचर स्पेसिफिकेशन देखें , च पर। २.१.१३.२, पृ। 2-13 (द डिमेंसली एक्सटेंडेड नाइन-इंटरसेक्शन मॉडल)।
[2] Oracle स्थानिक और ग्राफ़ डेवलपर गाइड से SDO_RELATE दस्तावेज़ देखें
[3] ( 1 , 2 ) इस दिनचर्या की व्याख्या के लिए, मार्टिन डेविस (एक पोस्टगैस डेवलपर) द्वारा " कंटेंस " स्पैटियल प्रेडिकेट के उद्धरणों को पढ़ें।