बफर जैसे जियोप्रोसेसिंग के लिए पायथन लाइब्रेरी (आर्कपी के अलावा) की तलाश? [बन्द है]


16

आर्कपी को छोड़कर, क्या कोई पाइथन लाइब्रेरी है जो आकृति के साथ बफर / इंटरसेक्ट जैसे जियोप्रोसेसिंग कर सकता है?

जवाबों:


17

अजगर GDAL / OGR कुकबुक के लिए कुछ नमूना कोड है बफर एक ज्यामिति

from osgeo import ogr

wkt = "POINT (1198054.34 648493.09)"
pt = ogr.CreateGeometryFromWkt(wkt)
bufferDistance = 500
poly = pt.Buffer(bufferDistance)
print "%s buffered by %d is %s" % (pt.ExportToWkt(), bufferDistance, poly.ExportToWkt())

और दो ज्यामितीयों के बीच चौराहे की गणना करने के लिए

from osgeo import ogr

wkt1 = "POLYGON ((1208064.271243039 624154.6783778917, 1208064.271243039 601260.9785661874, 1231345.9998651114 601260.9785661874, 1231345.9998651114 624154.6783778917, 1208064.271243039 624154.6783778917))"
wkt2 = "POLYGON ((1199915.6662253144 633079.3410163528, 1199915.6662253144 614453.958118695, 1219317.1067437078 614453.958118695, 1219317.1067437078 633079.3410163528, 1199915.6662253144 633079.3410163528)))"

poly1 = ogr.CreateGeometryFromWkt(wkt1)
poly2 = ogr.CreateGeometryFromWkt(wkt2)

intersection = poly1.Intersection(poly2)

print intersection.ExportToWkt()

जियोमेट्रिक्स को शेपफाइल्स और कई अन्य प्रारूपों के लिए पढ़ा और लिखा जा सकता है।


14

सरल बनाने के लिए, Shapely: मैनुअल पायथन में PostGIS के सभी ज्यामिति प्रसंस्करण की अनुमति देता है।

शेपली का पहला आधार यह है कि पायथन प्रोग्रामर RDBMS के बाहर PostGIS टाइप ज्यामिति संचालन करने में सक्षम होना चाहिए ...

PolyGeo का पहला उदाहरण

from shapely.geometry import Point, LineString, Polygon, mapping
from shapely.wkt import loads  
pt = Point(1198054.34,648493.09)
# or
pt = loads("POINT (1198054.34 648493.09)")
bufferDistance = 500
poly = pt.buffer(bufferDistance)
print poly.wkt
'POLYGON ((1198554.3400000001000000 648493.0899999999700000, 1198551.9323633362000000 
# GeoJSON
print mapping(poly)
{'type': 'Polygon', 'coordinates': (((1198554.34, 648493.09), (1198551.9323633362, 648444.0814298352), (1198544.7326402017, 648395.544838992), ....}

PolyGeo से बहुभुज का उदाहरण:

poly1 = Polygon([(1208064.271243039,624154.6783778917), (1208064.271243039,601260.9785661874), (1231345.9998651114,601260.9785661874),(1231345.9998651114,624154.6783778917),(1208064.271243039,624154.6783778917)])    
poly2 = loads("POLYGON ((1199915.6662253144 633079.3410163528, 1199915.6662253144 614453.958118695, 1219317.1067437078 614453.958118695, 1219317.1067437078 633079.3410163528, 1199915.6662253144 633079.3410163528)))"

intersection = poly1.intersection(poly2)
print intersection.wkt
print mapping(intersection) -> GeoJSON

दूसरा आधार यह है कि सुविधाओं की दृढ़ता, क्रमबद्धता और मानचित्र प्रक्षेपण महत्वपूर्ण हैं, लेकिन रूढ़िवादी समस्याएं हैं। आपको सौ जीआईएस प्रारूप पाठकों और लेखकों या स्टेट प्लेन अनुमानों की भीड़ की आवश्यकता नहीं हो सकती है, और शेपली आपको उनके साथ बोझ नहीं करता है।

तो आप इसे अन्य पायथन मॉड्यूल के साथ जोड़कर शेपफाइल्स को पढ़ने या लिखने के लिए जोड़ते हैं और अनुमानों को जोड़ते हैं जैसे कि ओगेगे.ओग्र, फियोना या पायशप
Gis StackExchange में खोज करने पर, आपको कई उदाहरण मिल सकते हैं, लेकिन मैं आपको सुडौल और फियोना के संयोजन और सुडौल कार्यों के प्रतिच्छेदन () और बफर () का उपयोग करने के लिए एक और एक देता हूं (यह PyShp के साथ किया जा सकता था)।

दो पॉलीलाइन आकार-प्रकार दिए गए:

यहाँ छवि विवरण दर्ज करें

चौराहे की गणना करें (फंक्शन चौराहे की)

from shapely.geometry import Point, Polygon, MultiPolygon, MumtiPoint, MultiLineString,shape, mapping
import fiona
# read the shapefiles and transform to MultilineString shapely geometry (shape())
layer1 = MultiLineString([shape(line['geometry']) for line in fiona.open('polyline1.shp')])  
layer2 = MultiLineString([shape(line['geometry']) for line in fiona.open('polyline2.shp')])
points_intersect = layer1.intersection(layer2)

परिणाम को एक नई आकृति के रूप में सहेजें

# schema of the new shapefile
schema = {'geometry': 'MultiPoint','properties': {'test': 'int'}}
# write the new shapefile (function mapping() of shapely)
with fiona.open('intersect.shp','w','ESRI Shapefile', schema) as e:
  e.write({'geometry':mapping(points_intersect), 'properties':{'test':1}})

परिणाम:

यहाँ छवि विवरण दर्ज करें

बफर व्यक्तिगत अंक (फ़ंक्शन बफर) सुडौल के)

 # new schema
 schema = {'geometry': 'Polygon','properties': {'test': 'int'}}
 with fiona.open('buffer.shp','w','ESRI Shapefile', schema) as e:
     for point in points:
          e.write({'geometry':mapping(point.buffer(300)), 'properties':{'test':1}})

परिणाम

यहाँ छवि विवरण दर्ज करें

मल्टीप्वाइंट ज्यामिति बफर

schema = {'geometry': 'MultiPolygon','properties': {'test': 'int'}}
points.buffer(300)
with fiona.open('buffer2.shp','w','ESRI Shapefile', schema) as e:
     e.write({'geometry':mapping(points.buffer(300)), 'properties':{'test':1}})

यहाँ छवि विवरण दर्ज करें


9

शेपली GEOS को अजगर पहुंच प्रदान करता है जो बफ़र्स / चौराहे / आदि कर सकता है। GEOS उन ऑपरेशनों को करने के लिए सबसे अधिक OSGeo प्रोग्राम का उपयोग करता है।


9

यहाँ पायथन जियोप्रोसेसिंग सॉफ्टवेयर की मेरी सूची है।

  • शेपली, अजगर
  • ओजीआर, अजगर
  • क्यूजीआईएस, पाइकगिस, पायथन
  • सागिज़, अजगर
  • घास, अजगर
  • स्पैटियालाइट, पाइसपैथाईलाइट, पायथन
  • PostreSQL / PostGIS, Psycopg, python
  • आर प्रोजेक्ट, rpy2, अजगर
  • व्हाइटबॉक्स जीएटी, अजगर -गाइपस्क्रिप्ट, जाइथन

1

मेरा 'जियो-प्रोसेसिंग लाइब्रेरी' जाना 'रिमोट सेंसिंग एंड जीआईएस लाइब्रेरी' (RSGISLib) है। इसका स्थापित करना और उपयोग करना आसान है और प्रलेखन वास्तव में अच्छा है। यह वेक्टर और रेखापुंज प्रसंस्करण के लिए कार्यक्षमता है - मुझे शायद ही कभी एक गुई के पास जाना पड़ता है। यह यहाँ पाया जा सकता है: http://rsgislib.org

इस उदाहरण में एक उदाहरण है:

rsgislib.vectorutils.buffervector(inputvector, outputvector, bufferDist, force)

एक वेक्टर को एक निर्दिष्ट दूरी से बफर करने की आज्ञा।

कहाँ पे:

  • इनपुटवेक्टर एक स्ट्रिंग है जिसमें इनपुट वेक्टर का नाम होता है
  • आउटपुटवेक्टर एक स्ट्रिंग है जिसमें आउटपुट वेक्टर का नाम होता है
  • बफरडिस्ट मानचित्र इकाइयों में बफर की दूरी को निर्दिष्ट करने वाला एक फ्लोट है
  • बल एक बूल है, जो निर्दिष्ट करता है कि क्या आउटपुट वेक्टर को हटाने के लिए मौजूद है

उदाहरण:

from rsgislib import vectorutils
inputVector = './Vectors/injune_p142_stem_locations.shp'
outputVector = './TestOutputs/injune_p142_stem_locations_1mbuffer.shp'
bufferDist = 1
vectorutils.buffervector(inputVector, outputVector, bufferDist, True)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.