Django 2.1
GEOS API

GEOS API
पृष्ठभूमि
GEOS क्या है?
GEOS ज्यामिति इंजन के लिए खड़ा है - ओपन सोर्स , और जावा टोपोलॉजी सूट से पोर्ट की गई C ++ लाइब्रेरी है। GEOS एसक्यूएल स्थानिक विधेय कार्यों और स्थानिक ऑपरेटरों के लिए OpenGIS सरल सुविधाएँ लागू करता है। GEOS, अब एक OSGeo प्रोजेक्ट है, जिसे शुरू में विक्टोरिया, कनाडा के Refractions Research द्वारा विकसित और रखरखाव किया गया था।
विशेषताएं
जियोडजैंगो जियोस लाइब्रेरी के लिए एक उच्च-स्तरीय पायथन रैपर लागू करता है, इसकी विशेषताओं में शामिल हैं:
-
GEOS ज्यामिति दिनचर्या के लिए BSD- लाइसेंस प्राप्त इंटरफ़ेस, शुद्ध रूप से
ctypes
का उपयोग करके पायथन में लागू किया गया। -
ढीले-ढाले के साथ जियोडजैंगो।
उदाहरण के लिए,
GEOSGeometry
ऑब्जेक्ट्स का उपयोग एक Django प्रोजेक्ट / एप्लिकेशन के बाहर किया जा सकता है। दूसरे शब्दों में,DJANGO_SETTINGS_MODULE
सेट या डेटाबेस का उपयोग करने की कोई आवश्यकता नहीं है, आदि। -
उत्परिवर्तन:
GEOSGeometry
ऑब्जेक्ट्स को संशोधित किया जा सकता है। - क्रॉस-प्लेटफ़ॉर्म और परीक्षण किया गया; Windows, Linux, Solaris और macOS प्लेटफार्मों के साथ संगत।
ट्यूटोरियल
इस अनुभाग में
GEOSGeometry
वस्तुओं का उपयोग करने के लिए एक संक्षिप्त परिचय और ट्यूटोरियल शामिल है।
एक ज्यामिति बनाना
GEOSGeometry
ऑब्जेक्ट कुछ तरीकों से बनाए जा सकते हैं।
पहला केवल कुछ स्थानिक इनपुट पर वस्तु को तुरंत भरने के लिए है - WKT, HEX, WKB और GeoJSON से समान ज्यामिति बनाने के उदाहरण निम्नलिखित हैं:
>>> from django.contrib.gis.geos import GEOSGeometry >>> pnt = GEOSGeometry('POINT(5 23)') # WKT >>> pnt = GEOSGeometry('010100000000000000000014400000000000003740') # HEX >>> pnt = GEOSGeometry(buffer('\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\[email protected]')) >>> pnt = GEOSGeometry('{ "type": "Point", "coordinates": [ 5.000000, 23.000000 ] }') # GeoJSON
एक अन्य विकल्प विशिष्ट ज्यामिति प्रकार के लिए कंस्ट्रक्टर का उपयोग करना है जिसे आप बनाना चाहते हैं।
उदाहरण के लिए, X और Y में इसके निर्माता में निर्देशांक द्वारा एक
Point
ऑब्जेक्ट बनाया जा सकता है:
>>> from django.contrib.gis.geos import Point >>> pnt = Point(5, 23)
ये सभी निर्माता खोजशब्द तर्क को ले
srid
।
उदाहरण के लिए:
>>> from django.contrib.gis.geos import GEOSGeometry, LineString, Point >>> print(GEOSGeometry('POINT (0 0)', srid=4326)) SRID=4326;POINT (0 0) >>> print(LineString((0, 0), (1, 1), srid=4326)) SRID=4326;LINESTRING (0 0, 1 1) >>> print(Point(0, 0, srid=32140)) SRID=32140;POINT (0 0)
अंत में,
fromfile()
फ़ैक्टरी विधि है जो एक फ़ाइल से
GEOSGeometry
ऑब्जेक्ट लौटाती है:
>>> from django.contrib.gis.geos import fromfile >>> pnt = fromfile('/path/to/pnt.wkt') >>> pnt = fromfile(open('/path/to/pnt.wkt'))
ज्यामितीय पायथोनिक हैं
GEOSGeometry
ऑब्जेक्ट्स 'Pythonic' हैं, दूसरे शब्दों में, मानक Python सम्मेलनों का उपयोग करके घटकों को एक्सेस, संशोधित और पुनरावृत्त किया जा सकता है।
उदाहरण के लिए, आप एक
Point
में निर्देशांक पर पुनरावृति कर सकते हैं:
>>> pnt = Point(5, 23) >>> [coord for coord in pnt] [5.0, 23.0]
किसी भी ज्यामिति ऑब्जेक्ट के साथ,
GEOSGeometry.coords
संपत्ति का उपयोग एक ज्यामितीय निर्देशन को पायथन
GEOSGeometry.coords
रूप में करने के लिए किया जा सकता है:
>>> pnt.coords (5.0, 23.0)
आप मानक पायथन इंडेक्सिंग तकनीकों का उपयोग करके ज्यामिति घटकों को प्राप्त / सेट कर सकते हैं।
हालाँकि, जो लौटाया जाता है वह वस्तु के ज्यामिति प्रकार पर निर्भर करता है।
उदाहरण के लिए, एक
LineString
पर अनुक्रमण एक समन्वय टपल देता है:
>>> from django.contrib.gis.geos import LineString >>> line = LineString((0, 0), (0, 50), (50, 50), (50, 0), (0, 0)) >>> line[0] (0.0, 0.0) >>> line[-2] (50.0, 0.0)
जबकि
Polygon
पर अनुक्रमणिका अनुक्रमणिका के अनुरूप रिंग (एक
LinearRing
वस्तु)
LinearRing
:
>>> from django.contrib.gis.geos import Polygon >>> poly = Polygon( ((0.0, 0.0), (0.0, 50.0), (50.0, 50.0), (50.0, 0.0), (0.0, 0.0)) ) >>> poly[0] <LinearRing object at 0x1044395b0> >>> poly[0][-2] # second-to-last coordinate of external ring (50.0, 0.0)
इसके अलावा, ज्यामिति के निर्देशांक / घटक जोड़े जा सकते हैं या संशोधित हो सकते हैं, जैसे पायथन सूची:
>>> line[0] = (1.0, 1.0) >>> line.pop() (0.0, 0.0) >>> line.append((1.0, 1.0)) >>> line.coords ((1.0, 1.0), (0.0, 50.0), (50.0, 50.0), (50.0, 0.0), (1.0, 1.0))
जियोमेट्री सेट-जैसे ऑपरेटरों का समर्थन करते हैं:
>>> from django.contrib.gis.geos import LineString >>> ls1 = LineString((0, 0), (2, 2)) >>> ls2 = LineString((1, 1), (3, 3)) >>> print(ls1 | ls2) # equivalent to `ls1.union(ls2)` MULTILINESTRING ((0 0, 1 1), (1 1, 2 2), (2 2, 3 3)) >>> print(ls1 & ls2) # equivalent to `ls1.intersection(ls2)` LINESTRING (1 1, 2 2) >>> print(ls1 - ls2) # equivalent to `ls1.difference(ls2)` LINESTRING(0 0, 1 1) >>> print(ls1 ^ ls2) # equivalent to `ls1.sym_difference(ls2)` MULTILINESTRING ((0 0, 1 1), (2 2, 3 3))
इक्विटी ऑपरेटर स्थानिक समानता की जाँच नहीं करता है
GEOSGeometry
समानता ऑपरेटर
equals_exact()
का उपयोग करता है, न के
equals()
, अर्थात इसमें समान ज्यामिति के लिए समान एसआरआईडी के साथ समान पदों पर निर्देशांक की आवश्यकता होती है:
>>> from django.contrib.gis.geos import LineString >>> ls1 = LineString((0, 0), (1, 1)) >>> ls2 = LineString((1, 1), (0, 0)) >>> ls3 = LineString((1, 1), (0, 0), srid=4326) >>> ls1.equals(ls2) True >>> ls1 == ls2 False >>> ls3 == ls2 # different SRIDs False
ज्यामिति वस्तुएं
GEOSGeometry
-
class GEOSGeometry(geo_input, srid=None)
-
पैरामीटर: - geo_input - ज्यामिति इनपुट मूल्य (स्ट्रिंग या बफर)
- srid ( int ) - स्थानिक संदर्भ पहचानकर्ता
यह सभी GEOS ज्यामिति वस्तुओं के लिए आधार वर्ग है।
यह दिए गए
geo_input
तर्क पर आरंभ करता है, और फिर उचित ज्यामिति उपवर्ग मानता है (उदाहरण के लिए,
GEOSGeometry('POINT(1 1)')
एक
Point
ऑब्जेक्ट बनाएगा)।
यदि दिया गया है, तो
srid
पैरामीटर को ज्यामिति के SRID के रूप में सेट किया गया है यदि
geo_input
SRID नहीं है।
यदि अलग-अलग SRID को
geo_input
और
srid
पैरामीटर के माध्यम से प्रदान किया जाता है, तो
ValueError
उठाया जाता है:
>>> from django.contrib.gis.geos import GEOSGeometry >>> GEOSGeometry('POINT EMPTY', srid=4326).ewkt 'SRID=4326;POINT EMPTY' >>> GEOSGeometry('SRID=4326;POINT EMPTY', srid=4326).ewkt 'SRID=4326;POINT EMPTY' >>> GEOSGeometry('SRID=1;POINT EMPTY', srid=4326) Traceback (most recent call last): ... ValueError: Input geometry already has SRID: 1.
पुराने संस्करणों में,
srid
पैरामीटर को
srid
और WKB इनपुट के लिए अलग तरह से संभाला जाता है।
srid
लिए,
srid
का उपयोग केवल तभी किया जाता है जब इनपुट ज्यामिति में SRID नहीं होता है।
WKB के लिए,
srid
(यदि दिया गया है) इनपुट ज्यामिति के SRID को बदल देता है।
निम्नलिखित इनपुट प्रारूप, उनके संगत पायथन प्रकारों के साथ स्वीकार किए जाते हैं:
स्वरूप | निवेष का प्रकार |
---|---|
WKT / EWKT |
str
|
हेक्स / HEXEWKB |
str
|
WKB / EWKB |
buffer
|
GeoJSON |
str
|
GeoJSON प्रारूप के लिए, SRID को crs सदस्य के आधार पर सेट किया जाता है।
यदि
crs
प्रदान नहीं किया गया है, तो SRID 4326 में चूक जाता है।
पुराने संस्करणों में, SRID भू-खंडों के लिए सेट नहीं है, जो कि GeoJSON से आरंभ किया गया है।
-
classmethod GEOSGeometry.from_gml(gml_string)
-
दिए गए GML स्ट्रिंग से
GEOSGeometry
निर्माण करता है।
गुण
-
GEOSGeometry.coords
-
ज्यामिति के निर्देशांक को एक टुपल के रूप में लौटाता है।
-
GEOSGeometry.dims
-
ज्यामिति का आयाम लौटाता है:
-
Point
एस औरMultiPoint
एस के लिए0
-
1
लिएLineString
औरLineString
एस -
Polygon
लिए2
औरMultiPolygon
एस -
-1
लिए खालीGeometryCollection
एस -
गैर-रिक्त
GeometryCollection
लिए इसके तत्वों का अधिकतम आयाम
-
-
GEOSGeometry.empty
-
रिटर्न करता है कि ज्यामिति में अंकों का सेट खाली है या नहीं।
-
GEOSGeometry.geom_type
-
ज्यामिति के प्रकार के अनुरूप एक स्ट्रिंग देता है। उदाहरण के लिए:
>>> pnt = GEOSGeometry('POINT(5 23)') >>> pnt.geom_type 'Point'
-
GEOSGeometry.geom_typeid
-
GEOS ज्यामिति प्रकार की पहचान संख्या लौटाता है। निम्न तालिका प्रत्येक ज्यामिति प्रकार के लिए मूल्य दर्शाती है:
ज्यामिति आईडी Point
0 LineString
1 LinearRing
2 Polygon
3 MultiPoint
4 MultiLineString
5 MultiPolygon
6 GeometryCollection
7
-
GEOSGeometry.num_coords
-
ज्यामिति में निर्देशांक की संख्या लौटाता है।
-
GEOSGeometry.num_geom
-
इस ज्यामिति में ज्यामिति की संख्या लौटाता है। दूसरे शब्दों में, कुछ भी लेकिन ज्यामिति संग्रह पर 1 लौटेगा।
-
GEOSGeometry.hasz
-
एक बूलियन को इंगित करता है कि क्या ज्यामिति त्रि-आयामी है।
-
GEOSGeometry.ring
-
एक बूलियन को इंगित करता है कि क्या रेखागणित रेखागणित है।
-
GEOSGeometry.simple
-
एक बूलियन को इंगित करता है कि क्या ज्यामिति 'सरल' है। एक ज्यामिति सरल है अगर और केवल अगर यह खुद को नहीं काटता है (सीमा बिंदुओं को छोड़कर)। उदाहरण के लिए, एक
LineString
ऑब्जेक्ट सरल नहीं है अगर यह खुद को प्रतिच्छेद करता है। इस प्रकार,LinearRing
औरPolygon
वस्तुएं हमेशा सरल होती हैं क्योंकि वे परिभाषा के अनुसार स्वयं को प्रतिच्छेद नहीं कर सकती हैं।
-
GEOSGeometry.valid
-
एक बूलियन को दर्शाता है कि क्या ज्यामिति वैध है।
-
GEOSGeometry.valid_reason
-
ज्यामिति अमान्य होने के कारण का वर्णन करते हुए एक स्ट्रिंग लौटाता है।
-
GEOSGeometry.srid
-
संपत्ति जो ज्यामिति से जुड़े SRID को पुनः प्राप्त करने या सेट करने के लिए उपयोग की जा सकती है। उदाहरण के लिए:
>>> pnt = Point(5, 23) >>> print(pnt.srid) None >>> pnt.srid = 4326 >>> pnt.srid 4326
आउटपुट गुण
इस खंड के गुण
GEOSGeometry
ऑब्जेक्ट को एक अलग में निर्यात करते हैं।
यह आउटपुट एक स्ट्रिंग, बफर या किसी अन्य ऑब्जेक्ट के रूप में हो सकता है।
-
GEOSGeometry.ewkt
-
ज्यामिति के "विस्तारित" वेल-ज्ञात पाठ को लौटाता है। यह प्रतिनिधित्व PostGIS के लिए विशिष्ट है और OGC WKT मानक का सुपरसेट है। [1] अनिवार्य रूप से एसआरआईडी डब्ल्यूकेटी प्रतिनिधित्व के लिए तैयार है, उदाहरण के लिए
SRID=4326;POINT(5 23)
।ध्यान दें
इस संपत्ति से आउटपुट में 3DM, 3dz और 4d जानकारी शामिल नहीं है जो PostGIS अपने EWKT अभ्यावेदन में समर्थन करता है।
-
GEOSGeometry.hex
-
इस ज्यामिति के WKB को हेक्साडेसिमल रूप में लौटाता है। कृपया ध्यान दें कि एसआरआईडी मूल्य इस प्रतिनिधित्व में शामिल नहीं है क्योंकि यह ओजीसी विनिर्देश का हिस्सा नहीं है (इसके बजाय
GEOSGeometry.hexewkb
संपत्ति का उपयोग करें)।
-
GEOSGeometry.hexewkb
-
इस ज्यामिति के EWKB को हेक्साडेसिमल रूप में लौटाता है। यह WKB विनिर्देश का एक विस्तार है जिसमें SRID मान शामिल है जो इस ज्यामिति का एक हिस्सा है।
-
GEOSGeometry.json
-
ज्यामिति के भू-प्रतिनिधित्व का विवरण देता है। ध्यान दें कि परिणाम एक पूर्ण GeoJSON संरचना नहीं है, बल्कि एक GeoJSON संरचना की केवल
geometry
कुंजी सामग्री है। जियोजेन्स सीरियल भी देखें।
-
GEOSGeometry.geojson
-
GEOSGeometry.json
लिए उपनाम।
-
GEOSGeometry.kml
-
ज्यामिति का एक KML (कीहोल मार्कअप लैंग्वेज) लौटाता है। यह केवल 4326 (WGS84) के SRID के साथ ज्यामितीय के लिए उपयोग किया जाना चाहिए, लेकिन यह प्रतिबंध लागू नहीं है।
-
GEOSGeometry.ogr
-
GEOS ज्यामिति के अनुरूप
OGRGeometry
ऑब्जेक्ट देता है।
-
GEOSGeometry.wkb
-
पाइथन बफर के रूप में इस ज्यामिति का प्रतिनिधित्व डब्ल्यूकेबी (वेल-बाइनरी बाइनरी) करता है। SRID मान शामिल नहीं है, इसके बजाय
GEOSGeometry.ewkb
संपत्ति का उपयोग करें।
-
GEOSGeometry.ewkb
-
पायथन बफर के रूप में इस ज्यामिति के EWKB प्रतिनिधित्व को लौटाएं। यह WKB विनिर्देश का एक विस्तार है जिसमें कोई भी SRID मान शामिल है जो इस ज्यामिति का एक हिस्सा है।
-
GEOSGeometry.wkt
-
ज्यामिति के वेल-ज्ञात पाठ (एक ओजीसी मानक) लौटाता है।
स्थानिक विधेय विधियाँ
निम्नलिखित स्थानिक विधेय विधियों में से सभी एक अन्य
GEOSGeometry
उदाहरण (
other
) को एक पैरामीटर के रूप में लेते हैं, और एक बूलियन वापस करते हैं।
-
GEOSGeometry.contains(other)
-
यदि
other.within(this)
True
तोother.within(this)
लौटाता है।
-
GEOSGeometry.covers(other)
-
यदि यह ज्यामिति निर्दिष्ट ज्यामिति को शामिल करती है तो यह
True
है।विधेय
covers
में निम्नलिखित समान परिभाषाएँ हैं:- अन्य ज्यामिति का प्रत्येक बिंदु इस ज्यामिति का एक बिंदु है।
-
दो जिओमेट्री के लिए DE-9IM इंटर्सेक्शन मैट्रिक्स
T*****FF*
,*T****FF*
,***T**FF*
, या****T*FF*
।
यदि या तो ज्यामिति रिक्त है, तो
False
लौटाता है।यह विधेय
GEOSGeometry.contains()
समान है, लेकिन अधिक समावेशी है (यानी अधिक मामलों के लिएTrue
)। विशेष रूप से, GEOSGeometry.contains() विपरीत GEOSGeometry.contains() , यह सीमा में और ज्यामितीय के इंटीरियर में बिंदुओं के बीच अंतर नहीं करता है। अधिकांश स्थितियों के लिए,covers()
को GEOSGeometry.contains() किया जाना चाहिए GEOSGeometry.contains() । अतिरिक्त लाभ के रूप में,covers()
अनुकूलन के लिए अधिक उत्तरदायी है और इसलिए आउटपरफॉर्म GEOSGeometry.contains() होना चाहिए।
-
GEOSGeometry.crosses(other)
-
यदि दो जिओमेट्री के लिए DE-9IM प्रतिच्छेदन मैट्रिक्स
T*T******
(एक बिंदु और एक वक्र, एक बिंदु और एक रेखा और एक क्षेत्र के लिए) तोTrue
रिटर्न0********
(दो घटों के लिए)।
-
GEOSGeometry.disjoint(other)
-
दो ज्यामितीयों के लिए DE-9IM प्रतिच्छेदन मैट्रिक्स
FF*FF****
।
-
GEOSGeometry.equals(other)
-
दो ज्यामितीयों के लिए DE-9IM प्रतिच्छेदन मैट्रिक्स
T*F**FFF*
।
-
GEOSGeometry.equals_exact(other, tolerance=0)
-
सच है अगर दो जियोमेट्री बिल्कुल समान हैं, एक निर्दिष्ट सहिष्णुता तक।
tolerance
मान एक फ्लोटिंग पॉइंट नंबर होना चाहिए जो तुलना में त्रुटि सहिष्णुता का प्रतिनिधित्व करता है, उदाहरण के लिए,poly1.equals_exact(poly2, 0.001)
एक इकाई के एक हजारवें हिस्से के भीतर समानता की तुलना करेगा।
-
GEOSGeometry.intersects(other)
-
True
अगरGEOSGeometry.disjoint()
False
।
-
GEOSGeometry.overlaps(other)
-
सही है अगर दो ज्यामितीयों के लिए DE-9IM चौराहे मैट्रिक्स
T*T***T**
(दो बिंदुओं या दो सतहों के लिए)1*T***T**
(दो घटता के लिए) है।
-
GEOSGeometry.relate_pattern(other, pattern)
-
True
अगर इस ज्यामिति के लिए DE-9IM चौराहे मैट्रिक्स में तत्व और अन्य दिए गएpattern
मेल खाते हैं - वर्णमाला से नौ वर्णों की एक स्ट्रिंग: {T
,F
,*
,0
}।
-
GEOSGeometry.touches(other)
-
अगर दो जिओमेट्री के लिए DE-9IM चौराहे का मैट्रिक्स
FT*******
,F**T*****
याF***T****
।
-
GEOSGeometry.within(other)
-
दो ज्यामितीयों के लिए DE-9IM प्रतिच्छेदन मैट्रिक्स
T*F**F***
।
सामयिक विधियाँ
-
GEOSGeometry.buffer(width, quadsegs=8)
-
एक
GEOSGeometry
लौटाता है जो उन सभी बिंदुओं का प्रतिनिधित्व करता है जिनकी ज्यामिति से दूरी दी गईwidth
से कम या बराबर है। वैकल्पिकquadsegs
कीवर्ड एक चौथाई वृत्त (डिफ़ॉल्ट 8 है) के अनुमानित खंडों की संख्या निर्धारित करता है।
-
GEOSGeometry.buffer_with_style(width, quadsegs=8, end_cap_style=1, join_style=1, mitre_limit=5.0)
-
Django 2.1 में नया:
buffer()
रूप में भीbuffer()
, लेकिन बफर की शैली को अनुकूलित करने की अनुमति देता है।-
end_cap_style
गोल (1
), फ्लैट (2
), या वर्ग (3
) हो सकता है। -
join_style
राउंड (1
),join_style
(2
), या बेवल (3
) हो सकता है। -
Miter अनुपात सीमा (
mitre_limit
) केवल mitered join शैली को प्रभावित करती है।
-
-
GEOSGeometry.difference(other)
-
एक
GEOSGeometry
रिटर्न देता है जो इस ज्यामिति को बनाने वाले बिंदुओं का प्रतिनिधित्व करता है जो अन्य नहीं बनाते हैं।
-
GEOSGeometry.interpolate(distance)
-
GEOSGeometry.interpolate_normalized(distance)
-
एक दूरी (फ्लोट) को देखते हुए, उस दूरी पर ज्यामिति (
LineString
याLineString
) के भीतर बिंदु (या निकटतम बिंदु) देता है। सामान्यीकृत संस्करण 0 (मूल) और 1 (समापन बिंदु) के बीच एक फ़्लोट के रूप में दूरी लेता है।
-
GEOSGeometry.intersection(other)
-
इस ज्यामिति और अन्य द्वारा साझा किए गए बिंदुओं का प्रतिनिधित्व करते हुए एक
GEOSGeometry
लौटाता है।
-
GEOSGeometry.project(point)
-
GEOSGeometry.project_normalized(point)
-
ज्यामिति (
LineString
याLineString
) की उत्पत्ति से दूरी (फ्लोट) को ज्यामिति पर प्रक्षेपित बिंदु परLineString
है (जो कि रेखा के एक बिंदु पर दिए गए बिंदु के सबसे करीब है)। सामान्यीकृत संस्करण 0 (मूल) और 1 (समापन बिंदु) के बीच की दूरी को एक फ्लोट के रूप में लौटाता है।
-
GEOSGeometry.relate(other)
-
DE-9IM प्रतिच्छेदन मैट्रिक्स (एक स्ट्रिंग) इस ज्यामिति और दूसरे के बीच के सामयिक संबंधों का प्रतिनिधित्व करता है।
-
GEOSGeometry.simplify(tolerance=0.0, preserve_topology=False)
-
डगलस-प्यूकर एल्गोरिथ्म का उपयोग करके निर्दिष्ट सहिष्णुता के लिए सरलीकृत एक नया
GEOSGeometry
, लौटाता है। एक उच्च सहिष्णुता मूल्य का मतलब आउटपुट में कम अंक है। यदि कोई सहिष्णुता प्रदान नहीं की जाती है, तो यह 0 से चूक जाती है।डिफ़ॉल्ट रूप से, यह फ़ंक्शन टोपोलॉजी को संरक्षित नहीं करता है। उदाहरण के लिए,
Polygon
वस्तुओं को विभाजित किया जा सकता है, रेखाओं मेंPolygon
जा सकता है या गायब हो सकता है।Polygon
छेद बनाया जा सकता है या गायब हो सकता है, और लाइनें पार हो सकती हैं। Preserve_topologypreserve_topology=True
निर्दिष्ट करके, परिणाम में इनपुट के समान आयाम और घटकों की संख्या होगी; हालांकि यह काफी धीमा है।
-
GEOSGeometry.sym_difference(other)
-
इस ज्यामिति में बिंदुओं के संयोजन में एक
GEOSGeometry
रिटर्न करता है, और अन्य अंक इस ज्यामिति में नहीं।
-
GEOSGeometry.union(other)
-
एक ज्यामिति ज्यामिति और अन्य में सभी बिंदुओं का प्रतिनिधित्व रिटर्न देता है।
सामयिक गुण
-
GEOSGeometry.boundary
-
एक नए आवंटित ज्यामिति वस्तु के रूप में सीमा लौटाता है।
-
GEOSGeometry.centroid
-
ज्यामिति के ज्यामितीय केंद्र का प्रतिनिधित्व करने वाली एक
Point
वस्तु लौटाता है। यह बिंदु ज्यामिति के इंटीरियर पर होने की गारंटी नहीं है।
-
GEOSGeometry.convex_hull
-
सबसे छोटा
Polygon
है जिसमें ज्यामिति के सभी बिंदु होते हैं।
-
GEOSGeometry.envelope
-
एक
Polygon
देता है जो इस ज्यामिति के बाउंडिंग लिफाफे का प्रतिनिधित्व करता है। ध्यान दें कि यह एकPoint
भी वापस कर सकता है यदि इनपुट ज्यामिति एक बिंदु है।
-
GEOSGeometry.point_on_surface
-
गणना और इस ज्यामिति के इंटीरियर पर होने की गारंटी एक
Point
देता है।
-
GEOSGeometry.unary_union
-
इस ज्यामिति के सभी तत्वों के मिलन की गणना करता है।
परिणाम निम्नलिखित अनुबंध का पालन करता है:
-
लाइनस्ट्रिंग एस के एक सेट को
LineString
से पूरी तरह से नोडिंग और लाइनवर्क को भंग करने का प्रभाव पड़ता है। -
Polygon
सेट का संघन हमेशा एकPolygon
याMultiPolygon
ज्यामिति (GEOSGeometry.union()
विपरीत, जो कम आयाम के ज्यामितीय वापस आ सकता है अगर एक टोपोलॉजी पतन होता है)।
-
लाइनस्ट्रिंग एस के एक सेट को
अन्य गुण और तरीके
-
GEOSGeometry.area
-
यह गुण ज्यामिति का क्षेत्र लौटाता है।
-
GEOSGeometry.extent
-
यह संपत्ति 4-टपल के रूप में इस ज्यामिति की सीमा
(xmin, ymin, xmax, ymax)
मिलकर।
-
GEOSGeometry.clone()
-
यह विधि एक
GEOSGeometry
देता है जो मूल का क्लोन है।
-
GEOSGeometry.distance(geom)
-
इस ज्यामिति पर निकटतम बिंदुओं के बीच की दूरी और दिए गए
GEOSGeometry
(एक अन्यGEOSGeometry
ऑब्जेक्ट) के बीच की दूरी देता है।ध्यान दें
GEOS दूरी की गणना रैखिक है - दूसरे शब्दों में, GEOS एक गोलाकार गणना नहीं करता है, भले ही SRID एक भौगोलिक समन्वय प्रणाली को निर्दिष्ट करता है।
-
GEOSGeometry.length
-
इस ज्यामिति की लंबाई लौटाता है (जैसे, एक
Point
लिए 0, एकLineString
की लंबाई, या एकPolygon
की परिधि)।
-
GEOSGeometry.prepared
-
इस ज्यामिति की सामग्री के लिए एक GEOS ReadyedGeometry लौटाता है।
PreparedGeometry
ऑब्जेक्ट्स में शामिल हैं, चौराहे, कवर, क्रॉस, डिसऑइंट, ओवरलैप, टच और संचालन के लिए अनुकूलित। अधिक जानकारी के लिए तैयार किए गए ज्यामितीय प्रलेखन का संदर्भ लें।
-
GEOSGeometry.srs
-
ज्यामिति के SRID या
None
समान एकSpatialReference
वस्तु लौटाता है।
-
GEOSGeometry.transform(ct, clone=False)
-
दिए गए निर्देशांक परिवर्तन पैरामीटर (
ct
) के अनुसार ज्यामिति को बदल देता है, जो एक पूर्णांक SRID, स्थानिक संदर्भ WKT स्ट्रिंग, एकSpatialReference
स्ट्रिंग, एकSpatialReference
ऑब्जेक्ट, याCoordTransform
ऑब्जेक्ट हो सकता है। डिफ़ॉल्ट रूप से, ज्यामिति को जगह में बदल दिया जाता है और कुछ भी वापस नहीं किया जाता है। हालाँकि यदिclone
कीवर्ड सेट है, तो ज्यामिति को संशोधित नहीं किया जाता है और इसके बजाय ज्यामिति का एक परिवर्तित क्लोन वापस आ जाता है।ध्यान दें
GEOSException
उठाता है यदि GDAL उपलब्ध नहीं है या अगर ज्यामिति का SRIDNone
या 0. से कम है, तो यहCoordTransform
ऑब्जेक्ट के साथ कॉल किए जाने पर ज्यामिति के SRID पर कोई बाधा नहींCoordTransform
है।
-
GEOSGeometry.normalize()
-
इस ज्यामिति को विहित रूप में परिवर्तित करता है:
>>> g = MultiPoint(Point(0, 0), Point(2, 2), Point(1, 1)) >>> print(g) MULTIPOINT (0 0, 2 2, 1 1) >>> g.normalize() >>> print(g) MULTIPOINT (2 2, 1 1, 0 0)
Point
-
class Point(x=None, y=None, z=None, srid=None)
-
Point
ऑब्जेक्ट्स का उपयोग तर्कों का उपयोग करके किया जाता है जो बिंदु के घटक निर्देशांक का प्रतिनिधित्व करते हैं या एकल अनुक्रम निर्देशांक के साथ। उदाहरण के लिए, निम्नलिखित समतुल्य हैं:>>> pnt = Point(5, 23) >>> pnt = Point([5, 23])
खाली
Point
वस्तुओं को बिना किसी तर्क या खाली अनुक्रम के उत्तीर्ण किया जा सकता है। निम्नलिखित समतुल्य हैं:>>> pnt = Point() >>> pnt = Point([])
LineString
-
class LineString(*args, **kwargs)
-
LineString
ऑब्जेक्ट्स को तर्कों का उपयोग करकेLineString
जाता है जो या तो निर्देशांक याPoint
ऑब्जेक्ट का एक क्रम होता है। उदाहरण के लिए, निम्नलिखित समतुल्य हैं:>>> ls = LineString((0, 0), (1, 1)) >>> ls = LineString(Point(0, 0), Point(1, 1))
इसके अलावा,
LineString
ऑब्जेक्ट्स कोऑर्डिनेट याPoint
ऑब्जेक्ट्स के सिंगल सीक्वेंस में पास करके भी बनाया जा सकता है:>>> ls = LineString( ((0, 0), (1, 1)) ) >>> ls = LineString( [Point(0, 0), Point(1, 1)] )
खाली
LineString
ऑब्जेक्ट्स को बिना किसी तर्क या खाली अनुक्रम के पास करकेLineString
जा सकता है। निम्नलिखित समतुल्य हैं:>>> ls = LineString() >>> ls = LineString([])
-
closed
-
LineString
है या नहीं यहLineString
बंद है।
-
LinearRing
-
class LinearRing(*args, **kwargs)
-
LinearRing
ऑब्जेक्ट का निर्माणLinearRing
उसी तरह से किया जाता हैLineString
किLineString
ऑब्जेक्ट, हालांकि निर्देशांक बंद होना चाहिए, दूसरे शब्दों में, पहला निर्देशांक अंतिम निर्देशांक के समान होना चाहिए। उदाहरण के लिए:>>> ls = LinearRing((0, 0), (0, 1), (1, 1), (0, 0))
ध्यान दें कि
(0, 0)
पहला और अंतिम समन्वय है - यदि वे समान नहीं थे, तो एक त्रुटि उठाई जाएगी।
Polygon
-
class Polygon(*args, **kwargs)
-
Polygon
वस्तुओं कोPolygon
के छल्ले का प्रतिनिधित्व करने वाले मापदंडों में पारित करके त्वरित किया जा सकता है। पैरामीटर या तोLinearRing
इंस्टेंस होना चाहिए, या एक अनुक्रम जो एकLinearRing
निर्माण के लिए इस्तेमाल किया जा सकता है:>>> ext_coords = ((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)) >>> int_coords = ((0.4, 0.4), (0.4, 0.6), (0.6, 0.6), (0.6, 0.4), (0.4, 0.4)) >>> poly = Polygon(ext_coords, int_coords) >>> poly = Polygon(LinearRing(ext_coords), LinearRing(int_coords))
-
classmethod from_bbox(bbox)
-
दिए गए बाउंडिंग-बॉक्स से एक बहुभुज वस्तु लौटाता है, जिसमें 4-ट्यूपल शामिल होता है
(xmin, ymin, xmax, ymax)
।
-
num_interior_rings
-
इस ज्यामिति में आंतरिक रिंगों की संख्या लौटाता है।
-
बहुभुजों की तुलना करना
ध्यान दें कि
Polygon
वस्तुओं की तुलना सीधे
<
या
>
से करना संभव है, लेकिन जैसा कि बहुभुज के
LineString
माध्यम से तुलना की
LineString
, इसका ज्यादा मतलब नहीं है (लेकिन सुसंगत और त्वरित है)।
आप हमेशा
area
संपत्ति के साथ तुलना करने के लिए मजबूर कर सकते हैं:
>>> if poly_1.area > poly_2.area: >>> pass
ज्यामिति संग्रह
MultiPoint
-
class MultiPoint(*args, **kwargs)
-
MultiPoint
ऑब्जेक्ट्स कोPoint
ऑब्जेक्ट्स में तर्कों के रूप में पास करके याPoint
ऑब्जेक्ट्स के एक एकल अनुक्रम द्वाराMultiPoint
जा सकता है:>>> mp = MultiPoint(Point(0, 0), Point(1, 1)) >>> mp = MultiPoint( (Point(0, 0), Point(1, 1)) )
MultiLineString
-
class MultiLineString(*args, **kwargs)
-
MultiLineString
ऑब्जेक्ट्स को तर्क के रूप मेंLineString
ऑब्जेक्ट्स में पास करके याLineString
ऑब्जेक्ट्स के एकल अनुक्रम द्वाराLineString
है:>>> ls1 = LineString((0, 0), (1, 1)) >>> ls2 = LineString((2, 2), (3, 3)) >>> mls = MultiLineString(ls1, ls2) >>> mls = MultiLineString([ls1, ls2])
-
merged
-
इस
MultiLineString
में सभी घटकों की लाइन मर्ज का प्रतिनिधित्व करने वाला एकLineString
देता है।
-
closed
-
यदि सभी तत्व बंद हैं तो ही
True
और लौटाता है। GEOS 3.5 की आवश्यकता है।
-
MultiPolygon
-
class MultiPolygon(*args, **kwargs)
-
Polygon
वस्तुओं को तर्क के रूप मेंPolygon
वस्तुओं को पास करके याPolygon
वस्तुओं के एकल अनुक्रम द्वाराMultiPolygon
जा सकता है:>>> p1 = Polygon( ((0, 0), (0, 1), (1, 1), (0, 0)) ) >>> p2 = Polygon( ((1, 1), (1, 2), (2, 2), (1, 1)) ) >>> mp = MultiPolygon(p1, p2) >>> mp = MultiPolygon([p1, p2])
GeometryCollection
-
class GeometryCollection(*args, **kwargs)
-
GeometryCollection
ऑब्जेक्ट्स को अन्यGEOSGeometry
में आर्गुमेंट्स याGEOSGeometry
ऑब्जेक्ट्स के एक सिंगल सीक्वेंस के द्वारा पास किया जा सकता है।>>> poly = Polygon( ((0, 0), (0, 1), (1, 1), (0, 0)) ) >>> gc = GeometryCollection(Point(0, 0), MultiPoint(Point(0, 0), Point(1, 1)), poly) >>> gc = GeometryCollection((Point(0, 0), MultiPoint(Point(0, 0), Point(1, 1)), poly))
तैयार ज्यामिति
एक तैयार ज्यामिति प्राप्त करने के लिए, बस
GEOSGeometry.prepared
संपत्ति तक
GEOSGeometry.prepared
।
एक बार जब आपके पास एक
GEOSGeometry
उदाहरण होता है तो इसके स्थानिक विधेय के तरीके, नीचे सूचीबद्ध हैं, अन्य
GEOSGeometry
वस्तुओं के साथ उपयोग किया जा सकता है।
एक तैयार ज्यामिति के साथ एक ऑपरेशन तेजी से परिमाण के आदेश हो सकते हैं - जितने अधिक जटिल ज्यामिति तैयार की जाती है, ऑपरेशन में उतना बड़ा स्पीडअप होता है।
अधिक जानकारी के लिए, कृपया
तैयार ज्यामिति पर GEOS विकी पेज
से परामर्श करें।
उदाहरण के लिए:
>>> from django.contrib.gis.geos import Point, Polygon >>> poly = Polygon.from_bbox((0, 0, 5, 5)) >>> prep_poly = poly.prepared >>> prep_poly.contains(Point(2.5, 2.5)) True
PreparedGeometry
-
class PreparedGeometry
-
GEOSGeometry
पर सभी तरीके एकother
तर्क लेते हैं, जो एकGEOSGeometry
उदाहरण होना चाहिए।-
contains(other)
-
contains_properly(other)
-
covers(other)
-
crosses(other)
-
disjoint(other)
-
intersects(other)
-
overlaps(other)
-
touches(other)
-
within(other)
-
ज्योमेट्री फैक्टरियां
-
fromfile(file_h)
-
पैरामीटर: file_h (पायथन file
ऑब्जेक्ट याfile
एक स्ट्रिंग पथ) - इनपुट फ़ाइल जिसमें स्थानिक डेटा होता हैवापसी प्रकार: फाइल में स्थानिक डेटा के अनुरूप एक GEOSGeometry
उदाहरण:
>>> from django.contrib.gis.geos import fromfile >>> g = fromfile('/home/bob/geom.wkt')
-
fromstr(string, srid=None)
-
पैरामीटर: वापसी प्रकार: एक
GEOSGeometry
स्ट्रिंग में स्थानिक डेटा के अनुरूपfromstr(string, srid)
के बराबर है।उदाहरण:
>>> from django.contrib.gis.geos import fromstr >>> pnt = fromstr('POINT(-90.5 29.5)', srid=4326)
I / O ऑब्जेक्ट्स
पाठक वस्तुएं
पाठक I / O वर्ग बस WKB और / या WKT इनपुट से एक
GEOSGeometry
उदाहरण
GEOSGeometry
हैं जो उनके
read(geom)
विधि को दिया जाता है।
-
class WKBReader
-
उदाहरण:
>>> from django.contrib.gis.geos import WKBReader >>> wkb_r = WKBReader() >>> wkb_r.read('0101000000000000000000F03F000000000000F03F') <Point object at 0x103a88910>
-
class WKTReader
-
उदाहरण:
>>> from django.contrib.gis.geos import WKTReader >>> wkt_r = WKTReader() >>> wkt_r.read('POINT(1 1)') <Point object at 0x103a88b50>
लेखक वस्तुओं
सभी लेखक वस्तुओं में एक
write(geom)
विधि होती है जो दिए गए ज्यामिति के डब्ल्यूकेबी या डब्ल्यूकेटी या तो वापस आती है।
इसके अलावा,
WKBWriter
ऑब्जेक्ट में गुण भी होते हैं जिनका उपयोग बाइट ऑर्डर को बदलने के लिए किया जा सकता है, और SRID मान (दूसरे शब्दों में, EWKB) को शामिल करता है।
-
class WKBWriter(dim=2)
-
WKBWriter
अपने आउटपुट पर सबसे अधिक नियंत्रण प्रदान करता है। डिफ़ॉल्ट रूप से यह ओजीसी-अनुरूप WKB लौटाता है जब इसकीwrite
विधि कहा जाता है। हालांकि, इसमें ऐसे गुण हैं जो EWKB के निर्माण की अनुमति देते हैं, WKB मानक का एक सुपरसेट जिसमें अतिरिक्त जानकारी शामिल है।dim
तर्क के बारे में अधिक जानकारी के लिएWKBWriter.outdim
प्रलेखन देखें।-
write(geom)
पायथन
buffer
ऑब्जेक्ट के रूप में दिए गए ज्यामिति के WKB को लौटाता है। उदाहरण:>>> from django.contrib.gis.geos import Point, WKBWriter >>> pnt = Point(1, 1) >>> wkb_w = WKBWriter() >>> wkb_w.write(pnt) <read-only buffer for 0x103a898f0, size -1, offset 0 at 0x103a89930>
-
write_hex(geom)
ज्यामिति के WKB को हेक्साडेसिमल में लौटाता है। उदाहरण:
>>> from django.contrib.gis.geos import Point, WKBWriter >>> pnt = Point(1, 1) >>> wkb_w = WKBWriter() >>> wkb_w.write_hex(pnt) '0101000000000000000000F03F000000000000F03F'
-
byteorder
यह गुण ज्यामिति प्रतिनिधित्व के बाइट-क्रम को बदलने के लिए सेट किया जा सकता है।
बाइटऑर्डर मान विवरण 0 बिग एंडियन (जैसे, RISC सिस्टम के साथ संगत) 1 लिटिल एंडियन (जैसे, x86 सिस्टम के साथ संगत) उदाहरण:
>>> from django.contrib.gis.geos import Point, WKBWriter >>> wkb_w = WKBWriter() >>> pnt = Point(1, 1) >>> wkb_w.write_hex(pnt) '0101000000000000000000F03F000000000000F03F' >>> wkb_w.byteorder = 0 '00000000013FF00000000000003FF0000000000000'
-
outdim
यह गुण ज्यामिति प्रतिनिधित्व के आउटपुट आयाम को बदलने के लिए सेट किया जा सकता है। दूसरे शब्दों में, यदि आपके पास एक 3 डी ज्यामिति है, तो 3 पर सेट करें ताकि जेड मान डब्ल्यूकेबी में शामिल हो।
बाहरी मूल्य विवरण 2 डिफ़ॉल्ट, आउटपुट 2D WKB। 3 आउटपुट 3D WKB। उदाहरण:
>>> from django.contrib.gis.geos import Point, WKBWriter >>> wkb_w = WKBWriter() >>> wkb_w.outdim 2 >>> pnt = Point(1, 1, 1) >>> wkb_w.write_hex(pnt) # By default, no Z value included: '0101000000000000000000F03F000000000000F03F' >>> wkb_w.outdim = 3 # Tell writer to include Z values >>> wkb_w.write_hex(pnt) '0101000080000000000000F03F000000000000F03F000000000000F03F'
-
srid
इस संपत्ति को बूलियन के साथ सेट करें ताकि यह इंगित किया जा सके कि ज्यामिति के SRID को WKB प्रतिनिधित्व के साथ शामिल किया जाना चाहिए या नहीं। उदाहरण:
>>> from django.contrib.gis.geos import Point, WKBWriter >>> wkb_w = WKBWriter() >>> pnt = Point(1, 1, srid=4326) >>> wkb_w.write_hex(pnt) # By default, no SRID included: '0101000000000000000000F03F000000000000F03F' >>> wkb_w.srid = True # Tell writer to include SRID >>> wkb_w.write_hex(pnt) '0101000020E6100000000000000000F03F000000000000F03F'
-
-
class WKTWriter(dim=2, trim=False, precision=None)
-
यह वर्ग एक ज्यामिति के डब्ल्यूकेटी प्रतिनिधित्व को आउटपुट करने की अनुमति देता है। निर्माता तर्क के बारे में जानकारी के लिए
WKBWriter.outdim
,trim
औरprecision
विशेषताओं को देखें।-
write(geom)
दिए गए ज्यामिति के WKT को लौटाता है। उदाहरण:
>>> from django.contrib.gis.geos import Point, WKTWriter >>> pnt = Point(1, 1) >>> wkt_w = WKTWriter() >>> wkt_w.write(pnt) 'POINT (1.0000000000000000 1.0000000000000000)'
-
outdim
-
WKBWriter.outdim
देखें।
-
trim
इस संपत्ति का उपयोग अनावश्यक दशमलव में ट्रिमिंग को सक्षम या अक्षम करने के लिए किया जाता है।
>>> from django.contrib.gis.geos import Point, WKTWriter >>> pnt = Point(1, 1) >>> wkt_w = WKTWriter() >>> wkt_w.trim False >>> wkt_w.write(pnt) 'POINT (1.0000000000000000 1.0000000000000000)' >>> wkt_w.trim = True >>> wkt_w.write(pnt) 'POINT (1 1)'
-
precision
यह संपत्ति निर्देशांक की गोलाई सटीकता को नियंत्रित करती है; यदि
None
सेटNone
राउंडिंग अक्षम है>>> from django.contrib.gis.geos import Point, WKTWriter >>> pnt = Point(1.44, 1.66) >>> wkt_w = WKTWriter() >>> print(wkt_w.precision) None >>> wkt_w.write(pnt) 'POINT (1.4399999999999999 1.6599999999999999)' >>> wkt_w.precision = 0 >>> wkt_w.write(pnt) 'POINT (1 2)' >>> wkt_w.precision = 1 >>> wkt_w.write(pnt) 'POINT (1.4 1.7)'
-
फुटनोट
[1] | PostGIS EWKB, EWKT और Canonical Forms , PostGIS प्रलेखन Ch पर देखें। 4.1.2। |
सेटिंग्स
GEOS_LIBRARY_PATH
GEOS C लाइब्रेरी के स्थान को निर्दिष्ट करने वाला एक स्ट्रिंग।
आमतौर पर, यह सेटिंग केवल तभी उपयोग की जाती है जब GEOS C लाइब्रेरी एक गैर-मानक स्थान (जैसे,
/home/bob/lib/libgeos_c.so
) में हो।
ध्यान दें
सेटिंग को
सी
साझा लाइब्रेरी के लिए
पूर्ण
पथ होना चाहिए;
दूसरे शब्दों में आप
libgeos_c.so
का उपयोग करना चाहते हैं,
libgeos.so
नहीं।
अपवाद
-
exception GEOSException
-
आधार GEOS अपवाद, GEOS से संबंधित त्रुटि को इंगित करता है।
