mirror of
https://github.com/marceloprates/prettymaps.git
synced 2025-09-02 19:02:40 +02:00
upgrade a few dependencies.
newer python 3.12+ requires newer numpy. newer numpy requires newer osmnx. multiple numpy version (1.26+ and 2.3+) work fine with python 3.12+
This commit is contained in:
@@ -277,7 +277,7 @@ def gdf_to_shapely(
|
|||||||
|
|
||||||
# Project gdf if applicable
|
# Project gdf if applicable
|
||||||
if not gdf.empty and gdf.crs is not None:
|
if not gdf.empty and gdf.crs is not None:
|
||||||
gdf = ox.project_gdf(gdf)
|
gdf = ox.projection.project_gdf(gdf)
|
||||||
|
|
||||||
if layer in ["streets", "railway", "waterway"]:
|
if layer in ["streets", "railway", "waterway"]:
|
||||||
geometries = graph_to_shapely(gdf, width)
|
geometries = graph_to_shapely(gdf, width)
|
||||||
@@ -426,7 +426,7 @@ def plot_legends(
|
|||||||
texts = []
|
texts = []
|
||||||
for i in range(len(keypoints_df)):
|
for i in range(len(keypoints_df)):
|
||||||
x, y = np.concatenate(
|
x, y = np.concatenate(
|
||||||
ox.project_gdf(keypoints_df.iloc[[i]]).geometry.iloc[0].centroid.xy
|
ox.projection.project_gdf(keypoints_df.iloc[[i]]).geometry.iloc[0].centroid.xy
|
||||||
)
|
)
|
||||||
name = keypoints_df.name.iloc[i]
|
name = keypoints_df.name.iloc[i]
|
||||||
kwargs = keypoints_df.kwargs.iloc[i]
|
kwargs = keypoints_df.kwargs.iloc[i]
|
||||||
@@ -554,7 +554,7 @@ def draw_hillshade(
|
|||||||
|
|
||||||
min_x, max_x = ax.get_xlim()
|
min_x, max_x = ax.get_xlim()
|
||||||
min_y, max_y = ax.get_ylim()
|
min_y, max_y = ax.get_ylim()
|
||||||
min_lon, min_lat, max_lon, max_lat = ox.project_gdf(
|
min_lon, min_lat, max_lon, max_lat = ox.projection.project_gdf(
|
||||||
gdfs["perimeter"]
|
gdfs["perimeter"]
|
||||||
).total_bounds
|
).total_bounds
|
||||||
ax.imshow(
|
ax.imshow(
|
||||||
@@ -601,7 +601,7 @@ def create_background(
|
|||||||
|
|
||||||
background = shapely.affinity.scale(
|
background = shapely.affinity.scale(
|
||||||
box(
|
box(
|
||||||
*shapely.ops.unary_union(ox.project_gdf(gdfs["perimeter"]).geometry).bounds
|
*shapely.ops.unary_union(ox.projection.project_gdf(gdfs["perimeter"]).geometry).bounds
|
||||||
),
|
),
|
||||||
background_pad,
|
background_pad,
|
||||||
background_pad,
|
background_pad,
|
||||||
@@ -670,7 +670,7 @@ def transform_gdfs(
|
|||||||
"""
|
"""
|
||||||
# Project geometries
|
# Project geometries
|
||||||
gdfs = {
|
gdfs = {
|
||||||
name: ox.project_gdf(gdf) if len(gdf) > 0 else gdf for name, gdf in gdfs.items()
|
name: ox.projection.project_gdf(gdf) if len(gdf) > 0 else gdf for name, gdf in gdfs.items()
|
||||||
}
|
}
|
||||||
# Create geometry collection from gdfs' geometries
|
# Create geometry collection from gdfs' geometries
|
||||||
collection = GeometryCollection(
|
collection = GeometryCollection(
|
||||||
@@ -685,7 +685,7 @@ def transform_gdfs(
|
|||||||
gdfs[layer].geometry = list(collection.geoms[i].geoms)
|
gdfs[layer].geometry = list(collection.geoms[i].geoms)
|
||||||
# Reproject
|
# Reproject
|
||||||
if len(gdfs[layer]) > 0:
|
if len(gdfs[layer]) > 0:
|
||||||
gdfs[layer] = ox.project_gdf(gdfs[layer], to_crs="EPSG:4326")
|
gdfs[layer] = ox.projection.project_gdf(gdfs[layer], to_crs="EPSG:4326")
|
||||||
|
|
||||||
return gdfs
|
return gdfs
|
||||||
|
|
||||||
|
@@ -95,7 +95,7 @@ def get_keypoints(
|
|||||||
Returns:
|
Returns:
|
||||||
geopandas.GeoDataFrame: A GeoDataFrame containing the keypoints that match the specified tags within the given perimeter.
|
geopandas.GeoDataFrame: A GeoDataFrame containing the keypoints that match the specified tags within the given perimeter.
|
||||||
"""
|
"""
|
||||||
keypoints_df = ox.features_from_polygon(perimeter, tags=tags)
|
keypoints_df = ox.features.features_from_polygon(perimeter, tags=tags)
|
||||||
|
|
||||||
return keypoints_df
|
return keypoints_df
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ def obtain_elevation(gdf):
|
|||||||
|
|
||||||
raster = rxr.open_rasterio(output_file).squeeze()
|
raster = rxr.open_rasterio(output_file).squeeze()
|
||||||
|
|
||||||
raster = raster.rio.reproject(CRS.from_string(ox.project_gdf(gdf).crs.to_string()))
|
raster = raster.rio.reproject(CRS.from_string(ox.projection.project_gdf(gdf).crs.to_string()))
|
||||||
|
|
||||||
# convert to numpy array
|
# convert to numpy array
|
||||||
elevation_data = raster.data
|
elevation_data = raster.data
|
||||||
@@ -200,9 +200,9 @@ def parse_query(query):
|
|||||||
def get_boundary(query, radius, circle=False, rotation=0):
|
def get_boundary(query, radius, circle=False, rotation=0):
|
||||||
|
|
||||||
# Get point from query
|
# Get point from query
|
||||||
point = query if parse_query(query) == "coordinates" else ox.geocode(query)
|
point = query if parse_query(query) == "coordinates" else ox.geocoder.geocode(query)
|
||||||
# Create GeoDataFrame from point
|
# Create GeoDataFrame from point
|
||||||
boundary = ox.project_gdf(
|
boundary = ox.projection.project_gdf(
|
||||||
GeoDataFrame(geometry=[Point(point[::-1])], crs="EPSG:4326")
|
GeoDataFrame(geometry=[Point(point[::-1])], crs="EPSG:4326")
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -252,19 +252,19 @@ def get_perimeter(
|
|||||||
perimeter = query
|
perimeter = query
|
||||||
else:
|
else:
|
||||||
# Fetch perimeter from OSM
|
# Fetch perimeter from OSM
|
||||||
perimeter = ox.geocode_to_gdf(
|
perimeter = ox.geocoder.geocode_to_gdf(
|
||||||
query,
|
query,
|
||||||
by_osmid=by_osmid,
|
by_osmid=by_osmid,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Scale according to aspect ratio
|
# Scale according to aspect ratio
|
||||||
perimeter = ox.project_gdf(perimeter)
|
perimeter = ox.projection.project_gdf(perimeter)
|
||||||
perimeter.loc[0, "geometry"] = scale(perimeter.loc[0, "geometry"], aspect_ratio, 1)
|
perimeter.loc[0, "geometry"] = scale(perimeter.loc[0, "geometry"], aspect_ratio, 1)
|
||||||
perimeter = perimeter.to_crs(4326)
|
perimeter = perimeter.to_crs(4326)
|
||||||
|
|
||||||
# Apply dilation
|
# Apply dilation
|
||||||
perimeter = ox.project_gdf(perimeter)
|
perimeter = ox.projection.project_gdf(perimeter)
|
||||||
if dilate is not None:
|
if dilate is not None:
|
||||||
perimeter.geometry = perimeter.geometry.buffer(dilate)
|
perimeter.geometry = perimeter.geometry.buffer(dilate)
|
||||||
perimeter = perimeter.to_crs(4326)
|
perimeter = perimeter.to_crs(4326)
|
||||||
@@ -404,7 +404,7 @@ def get_gdf(
|
|||||||
|
|
||||||
# Apply tolerance to the perimeter
|
# Apply tolerance to the perimeter
|
||||||
perimeter_with_tolerance = (
|
perimeter_with_tolerance = (
|
||||||
ox.project_gdf(perimeter).buffer(perimeter_tolerance).to_crs(4326)
|
ox.projection.project_gdf(perimeter).buffer(perimeter_tolerance).to_crs(4326)
|
||||||
)
|
)
|
||||||
perimeter_with_tolerance = unary_union(perimeter_with_tolerance.geometry).buffer(0)
|
perimeter_with_tolerance = unary_union(perimeter_with_tolerance.geometry).buffer(0)
|
||||||
|
|
||||||
@@ -423,7 +423,7 @@ def get_gdf(
|
|||||||
elif layer == "sea":
|
elif layer == "sea":
|
||||||
# Fetch geometries from OSM
|
# Fetch geometries from OSM
|
||||||
coastline = unary_union(
|
coastline = unary_union(
|
||||||
ox.features_from_polygon(
|
ox.features.features_from_polygon(
|
||||||
bbox, tags={"natural": "coastline"}
|
bbox, tags={"natural": "coastline"}
|
||||||
).geometry.tolist()
|
).geometry.tolist()
|
||||||
)
|
)
|
||||||
@@ -461,11 +461,11 @@ def get_gdf(
|
|||||||
else:
|
else:
|
||||||
if osmid is None:
|
if osmid is None:
|
||||||
# Fetch geometries from OSM
|
# Fetch geometries from OSM
|
||||||
gdf = ox.features_from_polygon(
|
gdf = ox.features.features_from_polygon(
|
||||||
bbox, tags={tags: True} if type(tags) == str else tags
|
bbox, tags={tags: True} if type(tags) == str else tags
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
gdf = ox.geocode_to_gdf(osmid, by_osmid=True)
|
gdf = ox.geocoder.geocode_to_gdf(osmid, by_osmid=True)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# print(f"Error fetching {layer}: {e}")
|
# print(f"Error fetching {layer}: {e}")
|
||||||
gdf = GeoDataFrame(geometry=[])
|
gdf = GeoDataFrame(geometry=[])
|
||||||
@@ -584,7 +584,7 @@ def unified_osm_request(
|
|||||||
dict: Dictionary of GeoDataFrames for each layer.
|
dict: Dictionary of GeoDataFrames for each layer.
|
||||||
"""
|
"""
|
||||||
# Apply tolerance to the perimeter
|
# Apply tolerance to the perimeter
|
||||||
perimeter_with_tolerance = ox.project_gdf(perimeter).buffer(0).to_crs(4326)
|
perimeter_with_tolerance = ox.projection.project_gdf(perimeter).buffer(0).to_crs(4326)
|
||||||
perimeter_with_tolerance = unary_union(perimeter_with_tolerance.geometry).buffer(0)
|
perimeter_with_tolerance = unary_union(perimeter_with_tolerance.geometry).buffer(0)
|
||||||
|
|
||||||
# Fetch from perimeter's bounding box, to avoid missing some geometries
|
# Fetch from perimeter's bounding box, to avoid missing some geometries
|
||||||
@@ -605,7 +605,7 @@ def unified_osm_request(
|
|||||||
|
|
||||||
# Fetch all features in one request
|
# Fetch all features in one request
|
||||||
try:
|
try:
|
||||||
all_features = ox.features_from_polygon(bbox, tags=combined_tags)
|
all_features = ox.features.features_from_polygon(bbox, tags=combined_tags)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
all_features = GeoDataFrame(geometry=[])
|
all_features = GeoDataFrame(geometry=[])
|
||||||
|
|
||||||
@@ -624,7 +624,7 @@ def unified_osm_request(
|
|||||||
elif layer == "sea":
|
elif layer == "sea":
|
||||||
try:
|
try:
|
||||||
coastline = unary_union(
|
coastline = unary_union(
|
||||||
ox.features_from_polygon(
|
ox.features.features_from_polygon(
|
||||||
bbox, tags={"natural": "coastline"}
|
bbox, tags={"natural": "coastline"}
|
||||||
).geometry.tolist()
|
).geometry.tolist()
|
||||||
)
|
)
|
||||||
@@ -682,7 +682,7 @@ def unified_osm_request(
|
|||||||
]
|
]
|
||||||
gdf = pd.concat([gdf, filtered_features], axis=0)
|
gdf = pd.concat([gdf, filtered_features], axis=0)
|
||||||
else:
|
else:
|
||||||
gdf = ox.geocode_to_gdf(kwargs.get("osmid"), by_osmid=True)
|
gdf = ox.geocoder.geocode_to_gdf(kwargs.get("osmid"), by_osmid=True)
|
||||||
|
|
||||||
gdf = gdf.copy()
|
gdf = gdf.copy()
|
||||||
gdf.geometry = gdf.geometry.intersection(perimeter_with_tolerance)
|
gdf.geometry = gdf.geometry.intersection(perimeter_with_tolerance)
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
numpy>=1.20,<1.25
|
numpy>=1.26.4
|
||||||
matplotlib>=3.9.0
|
matplotlib>=3.9.0
|
||||||
shapely>=2.0.0
|
shapely>=2.0.0
|
||||||
osmnx>=1.9.3,<2.0
|
osmnx>=2.0.5
|
||||||
ipykernel>=6.29.5
|
ipykernel>=6.29.5
|
||||||
rasterio>=1.4.3
|
rasterio>=1.4.3
|
||||||
rioxarray>=0.18.2
|
rioxarray>=0.18.2
|
||||||
@@ -12,4 +12,4 @@ thefuzz>=0.22.1
|
|||||||
elevation>=1.1.3
|
elevation>=1.1.3
|
||||||
streamlit>=1.42.2
|
streamlit>=1.42.2
|
||||||
tqdm>=4.67.1
|
tqdm>=4.67.1
|
||||||
scikit-learn>=1.6.1
|
scikit-learn>=1.6.1
|
||||||
|
Reference in New Issue
Block a user