Django 2.1 - Geographic Database Functions

भौगोलिक डेटाबेस कार्य




django

भौगोलिक डेटाबेस कार्य

इस पृष्ठ पर प्रलेखित फ़ंक्शंस उपयोगकर्ताओं को भौगोलिक डेटाबेस फ़ंक्शंस का उपयोग करने की अनुमति देते हैं, जिसका उपयोग एनोटेशन, एकत्रीकरण या फ़िल्टर में 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 है।
Django 2.0 में बदला:

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)
Django 2.0 में नया:

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

दिए गए बिंदु ज्यामितीयों द्वारा परिभाषित खंड के रेडियन में द अज़िमुथ लौटाता है, या None अगर दो बिंदु संयोग हैं। द एज़िमुथ कोण को उत्तर से संदर्भित किया जाता है और सकारात्मक दक्षिणावर्त होता है: उत्तर = 0 ; पूर्व = π/2 ; दक्षिण = π ; पश्चिम = 3 3π/2

BoundingCircle

class BoundingCircle(expression, num_seg=48, **extra)

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

एक एकल भौगोलिक क्षेत्र या अभिव्यक्ति को स्वीकार करता है और सबसे छोटा वृत्त बहुभुज देता है जिसमें पूरी तरह से ज्यामिति हो सकती है।

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)
Django 2.1 में नया:

उपलब्धता : 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 कीवर्ड तर्क परिणाम में वर्णों की संख्या को नियंत्रित करता है।

Django 2.0 में बदला:

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 है, तो सही है।

Django 2.0 में बदला:

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

Length

class Length(expression, spheroid=True, **extra)

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

एकल भौगोलिक लिनेस्ट्रिंग या मल्टीलाइनरिंग क्षेत्र या अभिव्यक्ति को स्वीकार करता है और एक Distance उपाय के रूप में अपनी लंबाई देता है।

PostGIS और स्पैटियालाइट पर, जब निर्देशांक भू-स्थिर (कोणीय) होते हैं, तो आप यह निर्दिष्ट कर सकते हैं कि क्या गणना एक साधारण क्षेत्र (कम सटीक, कम संसाधन-गहन) या एक गोलाकार (अधिक सटीक, अधिक संसाधन-गहन) पर आधारित होनी चाहिए spheroid खोजशब्द तर्क।

MySQL भौगोलिक SRS पर लंबाई की गणना का समर्थन नहीं करता है।

LineLocatePoint

class LineLocatePoint(linestring, point, **extra)
Django 2.0 में नया:

उपलब्धता : 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

दो भौगोलिक क्षेत्रों या अभिव्यक्तियों को स्वीकार करता है और दोनों ज्यामितीयों के मिलन को लौटाता है।