Tôi đang cố gắng chụp hai dòng với nhau bằng Shapely / Geopandas nhưng kết quả của việc chụp rất kỳ quặc. Tôi đã thử:
import geopandas as gpd
from shapely.geometry import *
from shapely.ops import snap
lines1 = gpd.GeoDataFrame.from_file('lines1.shp')
lines1 = lines1.to_crs({'init': 'epsg:2227'})
lines2 = gpd.GeoDataFrame.from_file('lines2.shp')
lines2 = lines2.to_crs({'init': 'epsg:2227'})
res = lines1
lines2_union = lines2.geometry.unary_union
res.geometry = res.geometry.apply(lambda x: snap(x, lines2_union, 14))
res.to_file('result.shp', driver="ESRI Shapefile")
Và nhận được kết quả này:
dòng1 = dòng màu đỏ
dòng2 = dòng màu đen
Sau khi chụp (với 14 là dung sai): các đường màu xanh là kết quả của việc chụp
Trong trường hợp này, các dòng được ngắt chính xác
Một ví dụ khác mà nó không hoạt động như mong đợi: (trước khi chụp)
Và đây là kết quả sau khi chụp. Chỉ một phần được chụp vào đường màu đen (phía nam). Mặc dù các dòng ban đầu khá gần gũi và trong 14 feets
Nếu tôi tăng dung sai tôi nhận được một đầu ra sai, đại loại như thế này (sau khi xác định 20 là dung sai của ảnh chụp, đường màu xanh lá cây là kết quả):
Bất kỳ ý tưởng về lý do tại sao snapping không hoạt động đúng? Bất kỳ đề xuất về cách giải quyết vấn đề này?