Django 2.1 - GIS QuerySet API Reference
जीआईएस क्वेरीसैट एपीआई संदर्भ

जीआईएस क्वेरीसैट एपीआई संदर्भ
स्थानिक लुकअप
इस खंड में स्थानिक रूप
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'
|
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
फ़ंक्शन का उपयोग अनुमानित समन्वय प्रणालियों के साथ किया जाता है।
रेखापुंज आधारित लुकअप के लिए रेखागणित को ज्यामितीय में परिवर्तित किया जाता है।
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 ) इस दिनचर्या की व्याख्या के लिए, मार्टिन डेविस (एक पोस्टगैस डेवलपर) द्वारा " कंटेंस " स्पैटियल प्रेडिकेट के उद्धरणों को पढ़ें। |