为什么 sf::read_sf 不接受 INT 列?

问题描述 投票:0回答:1

我使用

sf::read_sf
从我的 PSQL 数据库加载表。

查询工作正常,但它没有获取我的 id 列,该列的格式为 INT。它也是相关表的主键。

我通过在 PSQL 中添加 id 列的副本解决了该问题,该副本正在按预期获取。但感觉……很奇怪。

代码:

#### LOAD DATA ####
library(sf)
dsn <- paste("PG:dbname='[dbname]' host='[host]' port='5432' user='[user]' password='[password]')

#load spatial data ('type = 0001' sets geometry type = point, '0003' sets polygon)
ausw_input <- read_sf(dsn, 'regr.hvv_ausw2_hst_nonull_nosingle', type = 0001)

表格的相关列是:

h_id | INT # primary key, not being fetched
h_id_v | VARCHAR # copy of h_id, being fetched correctly
...
[~30 more columns, including lon/lat]
r postgresql spatial
1个回答
0
投票

没有有效的解决方案,但至少解释如何规避该问题:

在我的数据中,还有另一个 INT 列,它不是我的主键。正在正确获取它。看来 INT 和 PK 的组合有问题。我的 INT & PK 列包含 5-7 位数字的条目,例如 10001 或 8006484

--> 如果您遇到同样的问题,只需复制您的 PK 列即可启用

sf::read_sf
来获取它。

© www.soinside.com 2019 - 2024. All rights reserved.