অজগর নিয়ে আপনার অভিজ্ঞতা থাকলে আপনি শেপলি লাইব্রেরিটি ব্যবহার করতে পারেন এবং দুটি লাইনের পয়েন্টগুলি থেকে বহুভুজ তৈরি করতে পারেন। উভয় লাইনের প্রারম্ভিক এবং শেষের পয়েন্টগুলি কি আপনাকে অজগরটি বলতে হবে।
from shapely.geometry import Point, Polygon, LineString
import geopandas as gpd
import pandas as pd
line1 = [(1,1),(2,1.2),(3,1)]
line2 = [(1,2),(2,2.2),(3,2)]
# you need to reverse the order of one line to make it a polygon
line2reverse = list(reversed(line2))
polgonList2 = line1 + line2reverse
Polygon(polgonList2)
আরও ভাল: আপনি এটি করতে জিওপ্যান্ডগুলিও ব্যবহার করতে পারেন। জিওপ্যান্ডাস আপনাকে আকৃতির ফাইলগুলি সহ একাধিক ফর্ম্যাটে সহজেই সাশ্রয় করতে দেয়
d = {'identifier' : [1, 2],
'name' : ["Netherlands", "Germany"],
"line1": [[(1,1),(2,1.2),(3,1)], [(1,1),(2,1.2),(3,1)]],
"line2": [[(1.1,2.1),(2.1,2.3),(3.1,2.2)],[(1,2),(2,2.2),(3,2)]]
}
df = pd.DataFrame(d)
def makePolygon(row):
line2reverse = list(reversed(row["line2"]))
return Polygon(line1+line2reverse)
geometries = []
for index, row in df.iterrows():
geometries.append(makePolygon(row))
crs = {'init': 'epsg:4326'}
gdf = gpd.GeoDataFrame(df, crs=crs, geometry=geometries)
gdf.to_file('MyGeometries.shp', driver='ESRI Shapefile')
আপনি জিওপ্যান্ডাস gpd.read_file () ফাংশন ব্যবহার করে লাইন জ্যামিতিগুলি পড়তে পারেন।
সাধারণ জিআইএসে বহুভুজের শীর্ষাংশের ক্রম: ঘড়ির কাঁটা বা ঘড়ির কাঁটার দিকে
https://nbviewer.jupyter.org/gist/rutgerhofste/b01c17aa6851ea577f10c21a4c3717bc