Sto cercando di collegare due linee l'una all'altra usando Shapely / Geopandas ma il risultato dello snap è molto strano. Provai :
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")
E ottenuto questo risultato:
lines1 = linee rosse
lines2 = linee nere
Dopo lo snap (con 14 come tolleranza): le linee blu sono il risultato dello snap
In questo caso le linee sono correttamente spezzate
Un altro esempio in cui non ha funzionato come previsto: (prima dello snap)
Ed ecco il risultato dopo lo schiocco. Solo una parte viene agganciata alla linea nera (il lato sud). Sebbene le linee originali siano piuttosto vicine e entro i 14 piedi
Se aumento la tolleranza ottengo un output errato, qualcosa del genere (dopo aver definito 20 come tolleranza dello snap, la linea verde è il risultato):
Qualche idea sul perché lo schiocco non funzioni correttamente? Qualche suggerimento su come risolvere questo problema?