add gdf_zonal_stat to main.py#293
Conversation
here is a function to get the result of the zonal stat directly as a Geodataframe to keep all the properties and the geometry together with the initial vectors CRS. I you think there's a more efficient way to do this I would be happy to ear it.
perrygeo
left a comment
There was a problem hiding this comment.
Good idea for a user experience improvement. I'd like to see a test but we can add that later.
| """ | ||
|
|
||
| gdf = gpd.GeoDataFrame.from_features( | ||
| list(gen_zonal_stats(vectors, geojson_out=True, *args, **kwargs)) |
There was a problem hiding this comment.
from_features should be able to take an iterable sequence - we could remove the intermediate list.
There was a problem hiding this comment.
indeed, I have just tried without the list and it works !
function `list` was not necessary
Are you talking about unit test or just an example ? |
|
A unit test would be ideal. Geopandas is included in the CI test runner so it should work. |
|
I am not sure I did it the right way but I added a unit test and updated the function to fit to a file path input |
| import sys | ||
|
|
||
| import numpy as np | ||
| import geopandas as gpd |
There was a problem hiding this comment.
I see in the test you runned that there are problems with geopandas import. I don't know what to do to solve this. Maybe I was not supposed to add this line to the test file ?
There was a problem hiding this comment.
Using gpd = pytest.importorskip("geopandas") in your test functions should be enough. If it's available, you get gpd, otherwise the test is skipped. You don't want to import it at the top level.
| import sys | ||
|
|
||
| import numpy as np | ||
| import geopandas as gpd |
There was a problem hiding this comment.
Using gpd = pytest.importorskip("geopandas") in your test functions should be enough. If it's available, you get gpd, otherwise the test is skipped. You don't want to import it at the top level.
|
|
||
| #%% # add a unit test for the function gdf_zonal_stats | ||
|
|
||
| def gdf_zonal_stats(vectors, *args, **kwargs): |
There was a problem hiding this comment.
this seems like a copy of what's in main.py. Why duplicate it instead of importing it?
| Besides this, we make sure the new gdf as the right | ||
| metadata by conserving the CRS | ||
| """ | ||
|
|
There was a problem hiding this comment.
Move the import geopandas as gpd into the function body and out of the top level. Geopandas must remain optional.
Hello,
I am not sure it's the best way to do this but I would like to propose a function to get the result of the zonal stat directly as a Geodataframe to keep all the properties and the geometry together with the initial vectors CRS. I you think there's a more efficient way to do this I would be happy to ear it.