সমস্যাটি কারণ আপনি 'মোট_বাউন্ডস' পদ্ধতিটি ব্যবহার করছেন। এটি কেবল সীমাবদ্ধ বাক্সের সর্বাধিক এবং ন্যূনতম পয়েন্ট সহ একটি টুপল উত্পাদন করে। ব্যবহারের পদ্ধতি হ'ল খাম '; পূর্ববর্তী তার নিজস্ব 'জিওডাটা ফ্রেম' তৈরি করতে। উদাহরণস্বরূপ, জিওডাটা ফ্রেম হিসাবে আমার শেফফিলগুলি পড়া :
import geopandas as gpd
pol1 = gpd.GeoDataFrame.from_file("pyqgis_data/polygon1.shp")
pol8 = gpd.GeoDataFrame.from_file("pyqgis_data/polygon8.shp")
Pol1 এর বাউন্ডিং বাক্স তৈরি করা এবং এর সাথে সম্পর্কিত জিওডাটা ফ্রেম তৈরি করা :
bounding_box = pol1.envelope
df = gpd.GeoDataFrame(gpd.GeoSeries(bounding_box), columns=['geometry'])
জিওডাটা ফ্রেম উভয়কেই ছেদ করছে :
intersections = gpd.overlay(df, pol8, how='intersection')
প্লটিং ফলাফল:
from matplotlib import pyplot as plt
plt.ion()
intersections.plot()
এটি আশানুরূপ কাজ করেছিল।
সম্পাদনা নোট:
'মোট_বাউন্ডস' পদ্ধতিটি ব্যবহার করে (কারণ 'খামে' পদ্ধতিটি বহুভুজগুলির প্রতিটি বৈশিষ্ট্যের জন্য সীমানা বাক্সটি দেয়) এটি এই পদ্ধতির ব্যবহার করা যেতে পারে:
from matplotlib import pyplot as plt
import geopandas as gpd
from shapely.geometry import Point, Polygon
pol1 = gpd.GeoDataFrame.from_file("pyqgis_data/polygon1.shp")
pol8 = gpd.GeoDataFrame.from_file("pyqgis_data/polygon8.shp")
bbox = pol1.total_bounds
p1 = Point(bbox[0], bbox[3])
p2 = Point(bbox[2], bbox[3])
p3 = Point(bbox[2], bbox[1])
p4 = Point(bbox[0], bbox[1])
np1 = (p1.coords.xy[0][0], p1.coords.xy[1][0])
np2 = (p2.coords.xy[0][0], p2.coords.xy[1][0])
np3 = (p3.coords.xy[0][0], p3.coords.xy[1][0])
np4 = (p4.coords.xy[0][0], p4.coords.xy[1][0])
bb_polygon = Polygon([np1, np2, np3, np4])
df2 = gpd.GeoDataFrame(gpd.GeoSeries(bb_polygon), columns=['geometry'])
intersections2 = gpd.overlay(df2, pol8, how='intersection')
plt.ion()
intersections2.plot()
এবং ফলাফল অভিন্ন।