Django 2.1

GEOS API




django

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.
Django 2.0 में बदला:

पुराने संस्करणों में, 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 में चूक जाता है।

Django 2.0 में बदला:

पुराने संस्करणों में, SRID भू-खंडों के लिए सेट नहीं है, जो कि GeoJSON से आरंभ किया गया है।

classmethod GEOSGeometry.from_gml(gml_string)

दिए गए GML स्ट्रिंग से GEOSGeometry निर्माण करता है।

गुण

GEOSGeometry.coords

ज्यामिति के निर्देशांक को एक टुपल के रूप में लौटाता है।

GEOSGeometry.dims

ज्यामिति का आयाम लौटाता है:

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.project() उल्टा GEOSGeometry.project()

GEOSGeometry.intersection(other)

इस ज्यामिति और अन्य द्वारा साझा किए गए बिंदुओं का प्रतिनिधित्व करते हुए एक GEOSGeometry लौटाता है।

GEOSGeometry.project(point)
GEOSGeometry.project_normalized(point)

ज्यामिति ( LineString या LineString ) की उत्पत्ति से दूरी (फ्लोट) को ज्यामिति पर प्रक्षेपित बिंदु पर LineString है (जो कि रेखा के एक बिंदु पर दिए गए बिंदु के सबसे करीब है)। सामान्यीकृत संस्करण 0 (मूल) और 1 (समापन बिंदु) के बीच की दूरी को एक फ्लोट के रूप में लौटाता है।

GEOSGeometry.interpolate() का GEOSGeometry.interpolate()

GEOSGeometry.relate(other)

DE-9IM प्रतिच्छेदन मैट्रिक्स (एक स्ट्रिंग) इस ज्यामिति और दूसरे के बीच के सामयिक संबंधों का प्रतिनिधित्व करता है।

GEOSGeometry.simplify(tolerance=0.0, preserve_topology=False)

डगलस-प्यूकर एल्गोरिथ्म का उपयोग करके निर्दिष्ट सहिष्णुता के लिए सरलीकृत एक नया GEOSGeometry , लौटाता है। एक उच्च सहिष्णुता मूल्य का मतलब आउटपुट में कम अंक है। यदि कोई सहिष्णुता प्रदान नहीं की जाती है, तो यह 0 से चूक जाती है।

डिफ़ॉल्ट रूप से, यह फ़ंक्शन टोपोलॉजी को संरक्षित नहीं करता है। उदाहरण के लिए, Polygon वस्तुओं को विभाजित किया जा सकता है, रेखाओं में Polygon जा सकता है या गायब हो सकता है। Polygon छेद बनाया जा सकता है या गायब हो सकता है, और लाइनें पार हो सकती हैं। Preserve_topology preserve_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 उपलब्ध नहीं है या अगर ज्यामिति का SRID None या 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)
पैरामीटर:
  • string ( str ) - string जिसमें स्थानिक डेटा होता है
  • srid ( int ) - स्थानिक संदर्भ पहचानकर्ता
वापसी प्रकार:

एक 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 से संबंधित त्रुटि को इंगित करता है।

Original text