繁体   English   中英

使用 python 将 geopandas dataframe 转换为 GEE 特征集合

[英]Convert geopandas dataframe to GEE feature collection using python

给定一个geopandas dataframe(例如包含几何字段的df),以下是将其转换为ee.FeatureCollection的最简单方法吗?

import ee
features=[]
for index, row in df.iterrows():
    g=ee.Geometry.Point([row['geometry'].x,row['geometry'].y])
    # Define feature with a geometry and 'name' field from the dataframe
    feature = ee.Feature(g,{'name':ee.String(row['name'])})
    features.append(feature)
fc = ee.FeatureCollection(features)

如果要将点地理数据框 (GeoPandas) 转换为 ee.FeatureCollection,可以使用此函数:

import geopandas as gpd
import numpy as np
from functools import reduce
from geopandas import GeoDataFrame
from shapely.geometry import Point,Polygon

def make_points(gdf):
    g = [i for i in gdf.geometry]
    features=[]
    for i in range(len(g)):
        g = [i for i in gdf.geometry]
        x,y = g[i].coords.xy
        cords = np.dstack((x,y)).tolist()
        double_list = reduce(lambda x,y: x+y, cords)
        single_list = reduce(lambda x,y: x+y, double_list)

        g=ee.Geometry.Point(single_list)
        feature = ee.Feature(g)
        features.append(feature)
        #print("done")
        ee_object = ee.FeatureCollection(features)
    return ee_object

points_features_collections = make_points(points_gdf)

做这个功能我基于这个参考

您可以从json object 构建FeatureCollection 因此,如果您的几何数据文件类型是GeoJson ,您可以执行以下操作:

# import libraries
import ee
import json

# initialize earth engine client
ee.Initialize()

# load your gemotry data (which should be in GeoJson file)
with open("my_geometry_data.geojson") as f:
    geojson = json.load(f)

# construct a FeatureCollection object from the json object
fc = ee.FeatureCollection(geojson)

如果您的几何数据格式不同( shapefilegeopackage ),您可以先将其保存到GeoJson ,然后构建FeatureCollection object。

最后,如果您不想编写任何转换代码,只想将Geopandas.GeoDataFrame立即转换为ee.FeatureCollection ,您可以使用 python package: geemap

geemap有几个 function 用于将几何数据转换为FeatureCollection ,反之亦然。 您可以在此处查看示例。 在您的情况下,您需要使用geopandas_to_ee function,因此您的代码如下所示:

# import libraries
import ee
import geemap
import geopandas as gpd

# initialize earth engine client
ee.Initialize()

# load your gemotry data using GeoPandas (which can be stored in different formats)
gdf = gpd.read_file("my_geometry_file.geojson")

# convert to FeatureCollection using one line of code
fc = geemap.geopandas_to_ee(gdf)

请注意,在后台, geemap正在将GeoDataFrame转换为json文件,然后遵循我上面提到的第一种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM