mirror of
https://github.com/marceloprates/prettymaps.git
synced 2025-09-02 10:53:36 +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
|
||||
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"]:
|
||||
geometries = graph_to_shapely(gdf, width)
|
||||
@@ -426,7 +426,7 @@ def plot_legends(
|
||||
texts = []
|
||||
for i in range(len(keypoints_df)):
|
||||
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]
|
||||
kwargs = keypoints_df.kwargs.iloc[i]
|
||||
@@ -554,7 +554,7 @@ def draw_hillshade(
|
||||
|
||||
min_x, max_x = ax.get_xlim()
|
||||
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"]
|
||||
).total_bounds
|
||||
ax.imshow(
|
||||
@@ -601,7 +601,7 @@ def create_background(
|
||||
|
||||
background = shapely.affinity.scale(
|
||||
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,
|
||||
@@ -670,7 +670,7 @@ def transform_gdfs(
|
||||
"""
|
||||
# Project geometries
|
||||
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
|
||||
collection = GeometryCollection(
|
||||
@@ -685,7 +685,7 @@ def transform_gdfs(
|
||||
gdfs[layer].geometry = list(collection.geoms[i].geoms)
|
||||
# Reproject
|
||||
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
|
||||
|
||||
|
@@ -95,7 +95,7 @@ def get_keypoints(
|
||||
Returns:
|
||||
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
|
||||
|
||||
@@ -150,7 +150,7 @@ def obtain_elevation(gdf):
|
||||
|
||||
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
|
||||
elevation_data = raster.data
|
||||
@@ -200,9 +200,9 @@ def parse_query(query):
|
||||
def get_boundary(query, radius, circle=False, rotation=0):
|
||||
|
||||
# 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
|
||||
boundary = ox.project_gdf(
|
||||
boundary = ox.projection.project_gdf(
|
||||
GeoDataFrame(geometry=[Point(point[::-1])], crs="EPSG:4326")
|
||||
)
|
||||
|
||||
@@ -252,19 +252,19 @@ def get_perimeter(
|
||||
perimeter = query
|
||||
else:
|
||||
# Fetch perimeter from OSM
|
||||
perimeter = ox.geocode_to_gdf(
|
||||
perimeter = ox.geocoder.geocode_to_gdf(
|
||||
query,
|
||||
by_osmid=by_osmid,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
# 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 = perimeter.to_crs(4326)
|
||||
|
||||
# Apply dilation
|
||||
perimeter = ox.project_gdf(perimeter)
|
||||
perimeter = ox.projection.project_gdf(perimeter)
|
||||
if dilate is not None:
|
||||
perimeter.geometry = perimeter.geometry.buffer(dilate)
|
||||
perimeter = perimeter.to_crs(4326)
|
||||
@@ -404,7 +404,7 @@ def get_gdf(
|
||||
|
||||
# Apply tolerance to the perimeter
|
||||
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)
|
||||
|
||||
@@ -423,7 +423,7 @@ def get_gdf(
|
||||
elif layer == "sea":
|
||||
# Fetch geometries from OSM
|
||||
coastline = unary_union(
|
||||
ox.features_from_polygon(
|
||||
ox.features.features_from_polygon(
|
||||
bbox, tags={"natural": "coastline"}
|
||||
).geometry.tolist()
|
||||
)
|
||||
@@ -461,11 +461,11 @@ def get_gdf(
|
||||
else:
|
||||
if osmid is None:
|
||||
# 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
|
||||
)
|
||||
else:
|
||||
gdf = ox.geocode_to_gdf(osmid, by_osmid=True)
|
||||
gdf = ox.geocoder.geocode_to_gdf(osmid, by_osmid=True)
|
||||
except Exception as e:
|
||||
# print(f"Error fetching {layer}: {e}")
|
||||
gdf = GeoDataFrame(geometry=[])
|
||||
@@ -584,7 +584,7 @@ def unified_osm_request(
|
||||
dict: Dictionary of GeoDataFrames for each layer.
|
||||
"""
|
||||
# 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)
|
||||
|
||||
# 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
|
||||
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:
|
||||
all_features = GeoDataFrame(geometry=[])
|
||||
|
||||
@@ -624,7 +624,7 @@ def unified_osm_request(
|
||||
elif layer == "sea":
|
||||
try:
|
||||
coastline = unary_union(
|
||||
ox.features_from_polygon(
|
||||
ox.features.features_from_polygon(
|
||||
bbox, tags={"natural": "coastline"}
|
||||
).geometry.tolist()
|
||||
)
|
||||
@@ -682,7 +682,7 @@ def unified_osm_request(
|
||||
]
|
||||
gdf = pd.concat([gdf, filtered_features], axis=0)
|
||||
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.geometry = gdf.geometry.intersection(perimeter_with_tolerance)
|
||||
|
@@ -1,7 +1,7 @@
|
||||
numpy>=1.20,<1.25
|
||||
numpy>=1.26.4
|
||||
matplotlib>=3.9.0
|
||||
shapely>=2.0.0
|
||||
osmnx>=1.9.3,<2.0
|
||||
osmnx>=2.0.5
|
||||
ipykernel>=6.29.5
|
||||
rasterio>=1.4.3
|
||||
rioxarray>=0.18.2
|
||||
@@ -12,4 +12,4 @@ thefuzz>=0.22.1
|
||||
elevation>=1.1.3
|
||||
streamlit>=1.42.2
|
||||
tqdm>=4.67.1
|
||||
scikit-learn>=1.6.1
|
||||
scikit-learn>=1.6.1
|
||||
|
Reference in New Issue
Block a user