gpt4 book ai didi

upload - 如何将多边形从 GeoPandas 上传到 Snowflake?

转载 作者:行者123 更新时间:2023-12-05 04:34:53 28 4
gpt4 key购买 nike

我有一个填充了多边形的地理数据框的几何列,我需要将它们上传到 Snowflake。

我一直在将 geodataframe 的几何列导出到文件,并尝试了 CSV 和 GeoJSON 格式,但到目前为止,我要么总是收到错误,要么临时表总是空着。

这是我的代码:

design_gdf['geometry'].to_csv('polygons.csv', index=False, header=False, sep='|', compression=None)

import sqlalchemy
from sqlalchemy import create_engine
from snowflake.sqlalchemy import URL

engine = create_engine(
URL(<Snowflake Credentials Here>)
)

with engine.connect() as con:
con.execute("PUT file://<path to polygons.csv> @~ AUTO_COMPRESS=FALSE")

然后在 Snowflake 上运行

create or replace table DB.SCHEMA.DESIGN_POLYGONS_STAGING (geometry GEOGRAPHY);

copy into DB.SCHEMA."DESIGN_POLYGONS_STAGING"
from @~/polygons.csv
FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = '|' SKIP_HEADER = 1 compression = None encoding = 'iso-8859-1');

生成以下错误:

“文件 (6) 中的列数与对应表 (1) 中的列数不匹配,使用文件格式选项 error_on_column_count_mismatch=false 忽略此错误文件‘@~/polygons.csv.gz’,第 3 行, character 1 Row 1 starts at line 2, column "DESIGN_POLYGONS_STAGING"[6] 如果您想在遇到错误时继续加载,请为 ON_ERROR 选项使用其他值,例如“SKIP_FILE”或“CONTINUE”。有关更多信息加载选项,请在 SQL 客户端中运行 'info loading_data'。”

谁能指出我做错了什么?

最佳答案

受@Simeon_Pilgrim 评论的启发,我回到了 Snowflake 的文档。我在那里找到了一个将字符串文字转换为 GEOGRAPHY 的示例。

https://docs.snowflake.com/en/sql-reference/functions/to_geography.html#examples

select to_geography('POINT(-122.35 37.55)');

我的多边形看起来更像是描述多边形的字符串,而不是实际的 GEOGRAPHY,因此我决定需要将它们视为字符串,然后对它们调用 TO_GEOGRAPHY()。

我很快发现它们需要用单引号显式括起来并复制到登台表的 VARCHAR 列中。这是通过修改 CSV 导出代码实现的:

import csv
design_gdf['geometry'].to_csv(<path to polygons.csv>,
index=False, header=False, sep='|', compression=None, quoting=csv.QUOTE_ALL, quotechar="'")

暂存表现在看起来像:

create or replace table DB.SCHEMA."DESIGN_POLYGONS_STAGING" (geometry VARCHAR);

我在复制到与 polygons.csv.gz 文件相关的暂存表时遇到了更多问题,我一定是在之前的实验中上传了该文件。我使用以下方法删除了这个文件:

remove @~/polygons.csv.gz

最后,将暂存表转换为GEOGRAPHY

create or replace table DB.SCHEMA."DESIGN_GEOGRAPHY_STAGING" (geometry GEOGRAPHY);

insert into DB.SCHEMA."DESIGN_GEOGRAPHY"
select to_geography(geometry)
from DB.SCHEMA."DESIGN_POLYGONS_STAGING"

最后我得到了一个 DESIGN_GEOGRAPHY 表,其中有一列 GEOGRAPHY。成功!!!

关于upload - 如何将多边形从 GeoPandas 上传到 Snowflake?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71150967/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com