From 51295436b1e0df41319818c0f476339f44a4da92 Mon Sep 17 00:00:00 2001 From: Qiusheng Wu Date: Wed, 2 Oct 2024 16:11:16 -0400 Subject: [PATCH] Update get_3dep functions (#908) --- leafmap/basemaps.py | 3 ++- leafmap/common.py | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/leafmap/basemaps.py b/leafmap/basemaps.py index 9a6f7da79..4d6caa1d4 100644 --- a/leafmap/basemaps.py +++ b/leafmap/basemaps.py @@ -92,12 +92,13 @@ # Custom WMS tile services. WMS_TILES = { "FWS NWI Wetlands": { - "url": "https://fwspublicservices.wim.usgs.gov/wetlandsmapservice/services/Wetlands/MapServer/WMSServer?", + "url": "https://www.fws.gov/wetlandsmapservice/services/Wetlands/MapServer/WMSServer?", "layers": "1", "name": "FWS NWI Wetlands", "attribution": "FWS", "format": "image/png", "transparent": True, + "max_zoom": 30, }, "FWS NWI Wetlands Raster": { "url": "https://fwspublicservices.wim.usgs.gov/wetlandsmapservice/services/WetlandsRaster/ImageServer/WMSServer?", diff --git a/leafmap/common.py b/leafmap/common.py index 3cf17cc90..5ebb88eba 100644 --- a/leafmap/common.py +++ b/leafmap/common.py @@ -9824,7 +9824,7 @@ def get_nhd_basins( def get_3dep_dem( geometry, resolution=30, - src_crs="EPSG:4326", + src_crs=None, output=None, dst_crs="EPSG:5070", to_cog=False, @@ -9852,6 +9852,7 @@ def get_3dep_dem( except ImportError: print("py3dep is not installed. Installing py3dep...") install_package("py3dep") + import py3dep import geopandas as gpd @@ -9860,8 +9861,13 @@ def get_3dep_dem( return if isinstance(geometry, gpd.GeoDataFrame): + if src_crs is None: + src_crs = geometry.crs geometry = geometry.geometry.unary_union + if src_crs is None: + src_crs = "EPSG:4326" + dem = py3dep.get_dem(geometry, resolution=resolution, crs=src_crs) dem = dem.rio.reproject(dst_crs) @@ -9871,7 +9877,10 @@ def get_3dep_dem( dem.rio.to_raster(output, **kwargs) if to_cog: - image_to_cog(output, output) + try: + image_to_cog(output, output) + except Exception as e: + print(e) return dem @@ -9951,7 +9960,7 @@ def coords_to_vector(coords, output=None, crs="EPSG:4326", **kwargs): import geopandas as gpd from shapely.geometry import Point - if not isinstance(coords, list): + if not isinstance(coords, (list, tuple)): raise TypeError("coords must be a list of coordinates") if isinstance(coords[0], int) or isinstance(coords[0], float):