Quiero realizar el ajuste en todas las líneas de un archivo de forma que no se conectan a la más cercana de otras líneas. Sería bueno tener una tolerancia de 0,5 metros. Así que entre el 0,5 debe conectarse a cerca de las líneas. He hecho esto:
import geopandas as gpd
from shapely.ops import snap
s=gpd.read_file(r'C:\Users\user\Desktop\ag_eus')
result=snap(s,s,0.5)
Da:
AttributeError: 'GeoDataFrame' object has no attribute '_geom'
Algo más de información sobre el shapefile:
s.columns
Index(['Layer', 'SubClasses', 'ExtendedEn', 'Linetype', 'EntityHand', 'Text',
'geometry'],
dtype='object')
ACTUALIZACIÓN de la respuesta que proporcionó:
for index, row in s.iterrows():
tmp_gdf = s.copy()
tmp_gdf['distance'] = tmp_gdf.distance(row['geometry'])
closest_geom = list(tmp_gdf.sort_values('distance')['geometry'])[1]
# I took 1 because index 0 would be the row itself
snapped_geom = snap(row['geometry'], closest_geom, 0.5)
s.set_value(index, 'geometry', snapped_geom)
#new addition
o = r'C:\Users\user\Desktop\ag_eus'
s.to_file(o+ '\\new')
y el archivo es exactamente el mismo con el primero?