Django 2.1 - Geographic Database Functions
भौगोलिक डेटाबेस कार्य

भौगोलिक डेटाबेस कार्य
इस पृष्ठ पर प्रलेखित फ़ंक्शंस उपयोगकर्ताओं को भौगोलिक डेटाबेस फ़ंक्शंस का उपयोग करने की अनुमति देते हैं, जिसका उपयोग एनोटेशन, एकत्रीकरण या फ़िल्टर में Django में किया जाता है।
उदाहरण:
>>> from django.contrib.gis.db.models.functions import Length >>> Track.objects.annotate(length=Length('line')).filter(length__gt=100)
सभी बैकएंड सभी कार्यों का समर्थन नहीं करते हैं, इसलिए प्रत्येक फ़ंक्शन के प्रलेखन को देखें कि क्या आपका डेटाबेस बैकेंड उस फ़ंक्शन का समर्थन करता है जिसे आप उपयोग करना चाहते हैं।
यदि आप एक बैकएंड पर भौगोलिक फ़ंक्शन कहते हैं जो इसका समर्थन नहीं करता है, तो आपको एक
NotImplementedError
अपवाद मिलेगा।
समारोह का सारांश:
माप | रिश्तों | संचालन | संपादकों | आउटपुट स्वरूप | कई तरह का |
---|---|---|---|---|---|
Area
|
Azimuth
|
Difference
|
ForcePolygonCW
|
AsGeoJSON
|
IsValid
|
Distance
|
BoundingCircle
|
Intersection
|
ForceRHR
|
AsGML
|
MemSize
|
Length
|
Centroid
|
SymDifference
|
MakeValid
|
AsKML
|
NumGeometries
|
Perimeter
|
Envelope
|
Union
|
Reverse
|
AsSVG
|
NumPoints
|
LineLocatePoint
|
Scale
|
GeoHash
|
|||
PointOnSurface
|
SnapToGrid
|
||||
Transform
|
|||||
Translate
|
Area
-
class Area(expression, **extra)
उपलब्धता : MySQL , Oracle, PostGIS , SpatiaLite
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और क्षेत्र के क्षेत्र को
Area
माप के रूप में लौटाता है।
LWGEOM के बिना MySQL और SpatiaLite भौगोलिक SRSes पर क्षेत्र की गणना का समर्थन नहीं करते हैं।
AsGeoJSON
-
class AsGeoJSON(expression, bbox=False, crs=False, precision=8, **extra)
उपलब्धता : MySQL ( MySQL 5.7.5), PostGIS , स्पैटियालाइट
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और जियोमेट्रोन को ज्यामिति का प्रतिनिधित्व देता है।
ध्यान दें कि परिणाम एक पूर्ण GeoJSON संरचना नहीं है, बल्कि एक GeoJSON संरचना की केवल
geometry
कुंजी सामग्री है।
जियोजेन्स सीरियल
भी देखें।
उदाहरण:
>>> City.objects.annotate(json=AsGeoJSON('point')).get(name='Chicago').json {"type":"Point","coordinates":[-87.65018,41.85039]}
कीवर्ड तर्क | विवरण |
---|---|
bbox
|
इसे
True
सेट करें यदि आप चाहते हैं कि बाउंडिंग बॉक्स लौटाया गया जेजसन में शामिल हो।
|
crs
|
इसे
True
सेट करें यदि आप चाहते हैं कि समन्वयित संदर्भ प्रणाली को वापस लौटे जियोसन में शामिल किया जाए।
MySQL पर ध्यान नहीं दिया।
|
precision
|
इसका उपयोग GeoJSON प्रतिनिधित्व में निर्देशांक के लिए महत्वपूर्ण अंकों की संख्या निर्दिष्ट करने के लिए किया जा सकता है - डिफ़ॉल्ट मान 8 है। |
MySQL का समर्थन जोड़ा गया था।
AsGML
-
class AsGML(expression, version=2, precision=8, **extra)
उपलब्धता : Oracle, PostGIS , SpatiaLite
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और ज्यामिति का भौगोलिक भौगोलिक भाषा (GML) प्रतिनिधित्व करता है।
उदाहरण:
>>> qs = Zipcode.objects.annotate(gml=AsGML('poly')) >>> print(qs[0].gml) <gml:Polygon srsName="EPSG:4326"><gml:OuterBoundaryIs>-147.78711,70.245363 ... -147.78711,70.245363</gml:OuterBoundaryIs></gml:Polygon>
कीवर्ड तर्क | विवरण |
---|---|
precision
|
GML प्रतिनिधित्व में निर्देशांक के लिए महत्वपूर्ण अंकों की संख्या निर्दिष्ट करता है - डिफ़ॉल्ट मान है 8. Oracle पर ध्यान नहीं दिया गया। |
version
|
GML संस्करण का उपयोग करने के लिए निर्दिष्ट करता है: 2 (डिफ़ॉल्ट) या 3। |
AsKML
-
class AsKML(expression, precision=8, **extra)
उपलब्धता : PostGIS , स्पैटियालाइट
एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और ज्यामिति के एक कीहोल मार्कअप लैंग्वेज (KML) का प्रतिनिधित्व करता है।
उदाहरण:
>>> qs = Zipcode.objects.annotate(kml=AsKML('poly')) >>> print(qs[0].kml) <Polygon><outerBoundaryIs><LinearRing><coordinates>-103.04135,36.217596,0 ... -103.04135,36.217596,0</coordinates></LinearRing></outerBoundaryIs></Polygon>
कीवर्ड तर्क | विवरण |
---|---|
precision
|
इस कीवर्ड का उपयोग KML प्रतिनिधित्व में निर्देशांक के लिए महत्वपूर्ण अंकों की संख्या निर्दिष्ट करने के लिए किया जा सकता है - डिफ़ॉल्ट मान 8 है। |
AsSVG
-
class AsSVG(expression, relative=False, precision=8, **extra)
उपलब्धता : PostGIS , स्पैटियालाइट
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और ज्यामिति के एक स्केलेबल वेक्टर ग्राफिक्स (SVG) का प्रतिनिधित्व करता है।
कीवर्ड तर्क | विवरण |
---|---|
relative
|
यदि इसे
True
सेट किया जाता है, तो पथ डेटा को सापेक्ष चाल के संदर्भ में लागू किया जाएगा।
False
करने के लिए चूक, जिसका अर्थ है कि निरपेक्ष चाल का उपयोग किया जाता है।
|
precision
|
इस कीवर्ड का उपयोग SVG प्रतिनिधित्व में निर्देशांक के लिए महत्वपूर्ण अंकों की संख्या निर्दिष्ट करने के लिए किया जा सकता है - डिफ़ॉल्ट मान 8 है। |
Azimuth
-
class Azimuth(point_a, point_b, **extra)
उपलब्धता : PostGIS , स्पैटियालाइट (LWGEOM)
दिए गए बिंदु ज्यामितीयों द्वारा परिभाषित खंड के रेडियन में द अज़िमुथ लौटाता है, या
None
अगर दो बिंदु संयोग हैं।
द एज़िमुथ कोण को उत्तर से संदर्भित किया जाता है और सकारात्मक दक्षिणावर्त होता है: उत्तर =
0
;
पूर्व =
π/2
;
दक्षिण =
π
;
पश्चिम = 3
3π/2
।
BoundingCircle
-
class BoundingCircle(expression, num_seg=48, **extra)
एक एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और सबसे छोटा वृत्त बहुभुज देता है जिसमें पूरी तरह से ज्यामिति हो सकती है।
num_seg
पैरामीटर का उपयोग केवल PostGIS पर किया जाता है।
Centroid
-
class Centroid(expression, **extra)
उपलब्धता : MySQL , PostGIS , Oracle, SpatiaLite
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और ज्यामिति के
centroid
मूल्य को वापस करता है।
Difference
-
class Difference(expr1, expr2, **extra)
उपलब्धता : MySQL , PostGIS , Oracle, SpatiaLite
दो भौगोलिक क्षेत्रों या अभिव्यक्तियों को स्वीकार करता है और ज्यामितीय अंतर को लौटाता है, यह ज्यामिति ए का हिस्सा है जो ज्यामितीय बी के साथ प्रतिच्छेद नहीं करता है।
Distance
-
class Distance(expr1, expr2, spheroid=None, **extra)
उपलब्धता : MySQL , PostGIS , Oracle, SpatiaLite
दो भौगोलिक क्षेत्रों या अभिव्यक्तियों को स्वीकार करता है और एक
Distance
वस्तु के रूप में, उनके बीच की दूरी को वापस करता है।
MySQL पर, निर्देशांक जियोडेटिक होने पर एक कच्चा फ्लोट मान लौटाया जाता है।
जियोनेटिक निर्देशांक पर दूरी की गणना का समर्थन करने वाले बैकेंड पर, उचित बैकएंड फ़ंक्शन को स्वचालित रूप से ज्यामिति के ST_DistanceSphere मूल्य (जैसे ST_DistanceSphere पर ST_DistanceSphere) के आधार पर चुना जाता है।
जब दूरी की गणना जियोडेटिक (कोणीय) निर्देशांक के साथ की जाती है, जैसा कि डिफ़ॉल्ट WGS84 (4326) SRID के साथ होता है, तो आप यह निर्धारित करने के लिए
spheroid
खोजशब्द तर्क निर्धारित कर सकते हैं कि क्या गणना एक साधारण क्षेत्र (कम सटीक, कम संसाधन) पर आधारित होनी चाहिए गहन) या एक गोलाकार पर (अधिक सटीक, अधिक संसाधन-गहन)।
निम्नलिखित उदाहरण में, होबार्ट शहर से
AustraliaCity
PointField
में हर दूसरे
PointField
की दूरी की गणना की जाती है:
>>> from django.contrib.gis.db.models.functions import Distance >>> pnt = AustraliaCity.objects.get(name='Hobart').point >>> for city in AustraliaCity.objects.annotate(distance=Distance('point', pnt)): ... print(city.name, city.distance) Wollongong 990071.220408 m Shellharbour 972804.613941 m Thirroul 1002334.36351 m ...
ध्यान दें
क्योंकि
distance
विशेषता एक
Distance
वस्तु है, आप आसानी से अपनी पसंद की इकाइयों में मूल्य व्यक्त कर सकते हैं।
उदाहरण के लिए,
city.distance.mi
मील में दूरी का मान है और
city.distance.km
किलोमीटर में दूरी का मान है।
उपयोग विवरण और
समर्थित इकाइयों
की सूची के लिए
मापन ऑब्जेक्ट
देखें।
Envelope
-
class Envelope(expression, **extra)
उपलब्धता : MySQL , PostGIS , SpatiaLite
किसी एक भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और ज्यामिति को ज्यामिति के बाउंडिंग बॉक्स का प्रतिनिधित्व करता है।
ForcePolygonCW
-
class ForcePolygonCW(expression, **extra)
उपलब्धता : PostGIS , स्पैटियालाइट
एक एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और बहुभुज / बहुभुज का एक संशोधित संस्करण देता है जिसमें सभी बाहरी रिंग्स दक्षिणावर्त उन्मुख होते हैं और सभी आंतरिक रिंग उन्मुख वामावर्त होते हैं। गैर-बहुभुज ज्यामितीय अपरिवर्तित लौटाए जाते हैं।
ForceRHR
-
class ForceRHR(expression, **extra)
संस्करण 2.1 के बाद से पदावनत:
इसके बजाय
ForcePolygonCW
उपयोग करें।
उपलब्धता : PostGIS
एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और बहुभुज / बहुभुज का एक संशोधित संस्करण लौटाता है जिसमें सभी लंबवत दाएं हाथ के नियम का पालन करते हैं।
GeoHash
-
class GeoHash(expression, precision=None, **extra)
उपलब्धता : MySQL (.5 5.7.5), PostGIS , स्पैटियालाइट (LWGEOM)
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और GeoHash प्रतिनिधित्व को लौटाता है।
precision
कीवर्ड तर्क परिणाम में वर्णों की संख्या को नियंत्रित करता है।
MySQL का समर्थन जोड़ा गया था।
Intersection
-
class Intersection(expr1, expr2, **extra)
उपलब्धता : MySQL , PostGIS , Oracle, SpatiaLite
दो भौगोलिक क्षेत्रों या अभिव्यक्तियों को स्वीकार करता है और उनके बीच ज्यामितीय चौराहे को लौटाता है।
IsValid
-
class IsValid(expr)
उपलब्धता : MySQL (.5 5.7.5), PostGIS , Oracle, SpatiaLite (LWGEOM)
एक भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और अगर मूल्य अच्छी तरह से बनता है तो परीक्षण करता है।
यदि इसका मान एक मान्य ज्यामिति और
False
है, तो सही है।
MySQL का समर्थन जोड़ा गया था।
Length
-
class Length(expression, spheroid=True, **extra)
उपलब्धता : MySQL , Oracle, PostGIS , SpatiaLite
एकल भौगोलिक लिनेस्ट्रिंग या मल्टीलाइनरिंग क्षेत्र या अभिव्यक्ति को स्वीकार करता है और एक
Distance
उपाय के रूप में अपनी लंबाई देता है।
PostGIS और स्पैटियालाइट पर, जब निर्देशांक भू-स्थिर (कोणीय) होते हैं, तो आप यह निर्दिष्ट कर सकते हैं कि क्या गणना एक साधारण क्षेत्र (कम सटीक, कम संसाधन-गहन) या एक गोलाकार (अधिक सटीक, अधिक संसाधन-गहन) पर आधारित होनी चाहिए
spheroid
खोजशब्द तर्क।
MySQL भौगोलिक SRS पर लंबाई की गणना का समर्थन नहीं करता है।
LineLocatePoint
-
class LineLocatePoint(linestring, point, **extra)
उपलब्धता : PostGIS , स्पैटियालाइट
0 और 1 के बीच एक फ्लोट देता है, जो कि दिए गए
point
के लिए निकटतम बिंदु के स्थान का प्रतिनिधित्व करता है, 2 डी लंबाई लंबाई के एक अंश के रूप में।
MakeValid
-
class MakeValid(expr)
उपलब्धता : PostGIS , स्पैटियालाइट (LWGEOM)
किसी भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और किसी इनपुट इनपुट को खोए बिना मान को एक मान्य ज्यामिति में बदलने का प्रयास करता है। ज्यामिति जो पहले से ही मान्य हैं, बिना परिवर्तनों के वापस आ जाती हैं। साधारण बहुभुज एक बहुभुज बन सकते हैं और परिणाम इनपुट की तुलना में कम आयाम का हो सकता है।
MemSize
-
class MemSize(expression, **extra)
उपलब्धता : PostGIS
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और मेमोरी आकार (बाइट्स की संख्या) को वापस करता है जो ज्यामिति क्षेत्र लेता है।
NumGeometries
-
class NumGeometries(expression, **extra)
उपलब्धता : MySQL , PostGIS , Oracle, SpatiaLite
एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और अगर ज्यामिति फ़ील्ड एक संग्रह (उदाहरण के लिए,
GEOMETRYCOLLECTION
या
MULTI*
फ़ील्ड) है, तो ज्यामितीय की संख्या लौटाता है।
एकल ज्यामितीयों के लिए 1 लौटाता है।
MySQL पर, एकल ज्यामितीयों के लिए
None
लौटाता है।
NumPoints
-
class NumPoints(expression, **extra)
उपलब्धता : MySQL , PostGIS , Oracle, SpatiaLite
एक एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और एक ज्यामिति में अंकों की संख्या लौटाता है।
MySQL पर, किसी भी गैर-
LINESTRING
ज्यामिति के लिए कोई
None
लौटाता है।
Perimeter
-
class Perimeter(expression, **extra)
उपलब्धता : PostGIS , Oracle, SpatiaLite
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और ज्यामिति क्षेत्र की परिधि को
Distance
वस्तु के रूप में लौटाता है।
PointOnSurface
-
class PointOnSurface(expression, **extra)
उपलब्धता : PostGIS , Oracle, SpatiaLite
एक एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और क्षेत्र की सतह पर झूठ बोलने के लिए एक
Point
ज्यामिति देता है;
अन्यथा
None
नहीं लौटाता।
Reverse
-
class Reverse(expression, **extra)
उपलब्धता : PostGIS , Oracle, SpatiaLite
एक एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और एक ज्यामिति को उलट निर्देशांक के साथ लौटाता है।
Scale
-
class Scale(expression, x, y, z=0.0, **extra)
उपलब्धता : PostGIS , स्पैटियालाइट
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और एक ज्यामिति को स्केल किए गए निर्देशांक के साथ
x
,
y
और वैकल्पिक रूप से
z
मापदंडों के साथ गुणा करके लौटाता है।
SnapToGrid
-
class SnapToGrid(expression, *args, **extra)
उपलब्धता : PostGIS , स्पैटियालाइट
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और दिए गए ग्रिड के लिए सभी बिंदुओं के साथ एक ज्यामिति लौटाता है। ग्रिड में कैसे ज्यामिति को तड़काना है यह इस बात पर निर्भर करता है कि कितने संख्यात्मक (या तो फ्लोट, पूर्णांक, या लंबे) तर्क दिए गए हैं।
तर्क की संख्या | विवरण |
---|---|
1 | एक्स और वाई दोनों ग्रिड को स्नैप करने के लिए एक एकल आकार। |
2 | ग्रिड को स्नैप करने के लिए X और Y आकार। |
4 | X, Y आकार और संबंधित X, Y मूल है। |
SymDifference
-
class SymDifference(expr1, expr2, **extra)
उपलब्धता : MySQL , PostGIS , Oracle, SpatiaLite
दो भौगोलिक क्षेत्रों या अभिव्यक्तियों को स्वीकार करता है और दिए गए मापदंडों के बीच ज्यामितीय सममित अंतर (प्रतिच्छेदन के बिना संघ) देता है।
Transform
-
class Transform(expression, srid, **extra)
उपलब्धता : PostGIS , Oracle, SpatiaLite
एक भौगोलिक क्षेत्र या अभिव्यक्ति और एक SRID पूर्णांक कोड को स्वीकार करता है, और
srid
पैरामीटर को स्थानिक संदर्भ प्रणाली द्वारा निर्दिष्ट करता है जो कि
srid
पैरामीटर द्वारा निर्दिष्ट है।
ध्यान दें
स्थानिक संदर्भ प्रणाली क्या पूर्णांक SRID मेल खाती है इसका उपयोग स्थानिक डेटाबेस पर निर्भर हो सकता है। दूसरे शब्दों में, ओरेकल के लिए उपयोग किए जाने वाले SRID नंबर जरूरी नहीं हैं कि PostGIS द्वारा उपयोग किए गए हैं।
Translate
-
class Translate(expression, x, y, z=0.0, **extra)
उपलब्धता : PostGIS , स्पैटियालाइट
किसी एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और
x
,
y
और वैकल्पिक रूप से
z
संख्यात्मक मापदंडों द्वारा ऑफसेट अपने निर्देशांक के साथ एक ज्यामिति देता है।
Union
-
class Union(expr1, expr2, **extra)
उपलब्धता : MySQL , PostGIS , Oracle, SpatiaLite
दो भौगोलिक क्षेत्रों या अभिव्यक्तियों को स्वीकार करता है और दोनों ज्यामितीयों के मिलन को लौटाता है।