Estoy tratando de ajustar dos líneas entre sí usando Shapely / Geopandas, pero el resultado del ajuste es muy extraño. Lo intenté :
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")
Y obtuve este resultado:
líneas1 = líneas rojas
líneas2 = líneas negras
Después del ajuste (con 14 como tolerancia): las líneas azules son el resultado del ajuste
En este caso, las líneas se ajustan correctamente
Otro ejemplo donde no funcionó como se esperaba: (antes del ajuste)
Y aquí está el resultado después del ajuste. Solo una parte se ajusta a la línea negra (el lado sur). Aunque las líneas originales están bastante cerca y dentro de los 14 pies
Si aumento la tolerancia obtengo un resultado incorrecto, algo como esto (después de definir 20 como la tolerancia del ajuste, el resultado es la línea verde):
¿Alguna idea de por qué el ajuste no funciona correctamente? ¿Alguna sugerencia sobre cómo resolver este problema?