improve read_shapefile