উত্তর:
পাইথন GDAL / OGR Cookbook কিছু নমুনা কোড আছে বাফার একটি জ্যামিতি ।
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()
জ্যামিতিগুলি শেফফায়ালে এবং বিভিন্ন ধরণের ফরম্যাটে পড়তে এবং লিখতে পারে ।
সরলকরণের জন্য, শেপলি: ম্যানুয়ালটি পাইথনে পোস্টজিআইএসের সমস্ত জ্যামিতি প্রক্রিয়াকরণের অনুমতি দেয়।
শেপলির প্রথম ভিত্তিটি হল পাইথন প্রোগ্রামারদের একটি আরডিবিএমএসের বাইরে পোস্টজিআইএস টাইপ জ্যামিতি অপারেশন করতে সক্ষম হওয়া উচিত ...
পলিজিওর প্রথম উদাহরণ
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), ....}
পলিজিওর বহুভুক্ত উদাহরণ:
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
দ্বিতীয় ভিত্তি হ'ল স্থিরতা, সিরিয়ালাইজেশন এবং বৈশিষ্ট্যগুলির মানচিত্রের অভিক্ষেপ উল্লেখযোগ্য তবে অরথোগোনাল সমস্যা। আপনার একশ জিআইএস ফর্ম্যাট পাঠক এবং লেখক বা স্টেট প্লেন অনুমানের বহুসংখ্যক প্রয়োজন হতে পারে না এবং শেপলি আপনাকে সেগুলি বোঝায় না।
সুতরাং আপনি এটিকে অন্য পাইথন মডিউলগুলির সাথে শেফফিলগুলি পড়তে বা লিখতে মিশ্রিত করে এবং অনুমানগুলিকে osgeo.ogr, Fiona বা PyShp হিসাবে ম্যানিপুলেট করেন ।
গিস স্ট্যাকএক্সচেঞ্জে সন্ধান করা, আপনি অনেকগুলি উদাহরণ খুঁজে পেতে পারেন তবে আমি আপনাকে আরেকটি উদাহরণ দিচ্ছি যা সুদৃ and় এবং ফিয়োনার সংমিশ্রণ এবং সুদৃ functions় ফাংশন ছেদ () এবং বাফার () ব্যবহার করা যেতে পারে (এটি পাইএসএইচপি দিয়ে করা যেতে পারে)।
দুটি পললাইন শেফফাইল দেওয়া হয়েছে:
ছেদটি ছেদ করুন (কার্যকারণের ছেদটি (সুসজ্জিত))
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}})
আমার 'জিও-প্রসেসিং লাইব্রেরিটি হ'ল' রিমোট সেন্সিং এবং জিআইএস লাইব্রেরি '(আরএসজিআইএসআইবিবি)। এটি ইনস্টল করা এবং ব্যবহার করা সহজ এবং ডকুমেন্টেশন সত্যই ভাল। এটি ভেক্টর এবং রাস্টার প্রসেসিংয়ের কার্যকারিতা রয়েছে - আমাকে খুব কমই কোনও গুইয়ের কাছে যেতে হয়। এটি এখানে পাওয়া যাবে: http://rsgislib.org ।
এই উদাহরণের একটি উদাহরণ:
rsgislib.vectorutils.buffervector(inputvector, outputvector, bufferDist, force)
নির্দিষ্ট দূরত্বে ভেক্টর বাফার করার একটি আদেশ command
কোথায়:
উদাহরণ:
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)