Mi objetivo es convertir un featureCollection del motor de google earth en un geodataframe de geopandas.
El motor Earth puede manejar geoJSON mientras que geopandas prefiere shapely.
La geometría (geoJSON) de la primera característica de mi featureCollection es:
como puedes ver, hay un parámetro geodésico (booleano) en el geoJSON.
Utilizo shapely.geometry.shape() para convertir el geoJSON en una geometría shapely que pueda manejar geopandas. Sin embargo, no estoy seguro de si el parámetro geodésico se captura correctamente. El shapely documentación no menciona esto. [EDIT: la página principal sí lo menciona] ¿Cómo puedo asegurarme de que el parámetro geodésico se maneja correctamente?
Aquí está mi función completa:
def fcToGdf(fc):
"""converts a featurecollection to a (geo)Pandas GeoDataFrame or a pandas DataFrame. WARNING: Geometries are non-geodesic. Geodesic not yet supported. work in progress
Args:
fc (ee.FeatureCollection) : the earth engine feature collection to convert. Size is limited to memory (geopandas limitation)
crs (dictionary, optional) : the coordinate reference system in geopandas format. Defaults to {'init' :'epsg:4326'}
Returns:
gdf (geoPandas.GeoDataFrame or pandas.DataFrame) : the corresponding (geo)dataframe.
"""
crs = {'init' :'epsg:4326'}
features = fc.getInfo()['features']
dictarr = []
for f in features:
attr = f['properties']
attr['geometry'] = f['geometry']
dictarr.append(attr)
gdf = gpd.GeoDataFrame(dictarr)
gdf['geometry2'] = map(lambda s: shapely.geometry.shape(s), gdf.geometry)
gdf.crs = crs
return gdf