ฉันกำลังพยายามหาจุดที่หลายเส้นตัดกันรูปหลายเหลี่ยมสำหรับตำแหน่งทางภูมิศาสตร์ที่แตกต่างกันสองแห่ง:
from shapely.geometry import Polygon, LineString
import geopandas as gpd
polygon = Polygon([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)])
line1 = LineString([(0.5, 0.5), (0.7, 0.7)])
line2 = LineString([(0.9, 0.9), (0.2, 0.6)])
poly_gdf = gpd.GeoDataFrame(geometry=[polygon])
line_gdf = gpd.GeoDataFrame(geometry=[line1, line2])
นี่คือลักษณะทางภูมิศาสตร์ด้านบนที่มีลักษณะ (หนึ่งมีรูปหลายเหลี่ยมและอีกสองบรรทัดมี) ดูเหมือนว่าฉันทั้งสองเส้นตัดกันรูปหลายเหลี่ยม:
อย่างไรก็ตามเอาต์พุตตัดกันนั้นสับสนมาก:
print(line_gdf.intersects(poly_gdf))
0 จริง
1 เท็จ
print(line1.intersects(polygon))
print(line2.intersects(polygon))
จริง
จริง
ทำไมgeopandas
intersect
วิธีการให้แตกต่างกันออกไปตามมาตรฐานshapely
หรือไม่
ฉันใช้ Python 3.5.3 และ Geopandas 0.2.1 ทั้งหมดใน Anaconda
print(line.intersects(polygon))
เป็นตัวพิมพ์ผิด ฉันได้อัปเดตคำถามเพื่ออ้างถึงline1
สิ่งที่ฉันหมายถึง แต่เดิม
line_gdf.info
ยืนยันว่าคุณมีคอลัมน์รูปทรงเรขาคณิตเดียวเท่านั้น ฉันนิ่งงัน ฉันจะติดตามถ้าฉันพบอะไร
print(line.intersects(polygon))
คุณเข้าถึงตัวแปรที่ไม่ได้กำหนดเท่าที่ฉันเห็น คุณได้กำหนดไว้line1
และline2
ก่อนหน้านี้ในรหัส ฉันไม่รู้ว่าทำไมมันถึงกลับเป็นจริง