簡體   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