Ben Shapely / Geopandas kullanarak birbirlerine iki satır snap çalışıyorum ama yapışma sonucu çok garip. Denedim :
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")
Ve bu sonucu aldım:
lines1 = kırmızı çizgiler
lines2 = siyah çizgiler
Yapışma işleminden sonra (tolerans olarak 14 ile): mavi çizgiler yapışma işleminin sonucudur
Bu durumda, çizgiler doğru şekilde takılır
Beklendiği gibi çalışmadığı başka bir örnek: (yapışmadan önce)
Ve işte yakalamanın sonucu. Siyah hatta (güney tarafı) sadece bir parça takılır. Orijinal çizgiler oldukça yakın ve 14 ayak içinde olmasına rağmen
Toleransı arttırırsam yanlış bir çıktı elde ederim, böyle bir şey (20 yapışma toleransı olarak tanımladıktan sonra, yeşil çizgi sonuçtur):
Yapışma neden düzgün çalışmıyor? Bu sorunun nasıl çözüleceğine dair herhangi bir öneriniz var mı?