我正在使用R编程语言。
我有以下直接从互联网下载的大型数据集(加拿大地理空间shapefile):
# https://stackoverflow.com/questions/75913166/no-simple-features-geometry-column-present-in-shapefile
library(sf)
library(rgdal)
# Set the URL for the shapefile
url <- "https://www12.statcan.gc.ca/census-recensement/2011/geo/RNF-FRR/files-fichiers/lrnf000r22a_e.zip"
# Create a temporary folder to download and extract the shapefile
temp_dir <- tempdir()
temp_file <- file.path(temp_dir, "lrnf000r22a_e.zip")
# Download the shapefile to the temporary folder
download.file(url, temp_file)
# Extract the shapefile from the downloaded zip file
unzip(temp_file, exdir = temp_dir)
我的计算机没有很多RAM,无法导入此文件。因此,我试图在不导入此文件的情况下获取有关此文件属性的更多信息。
在没有将文件导入R的情况下,我能够找到这个文件中所有变量的列表:
> ogrInfo(dsn = temp_dir, layer = "lrnf000r22a_e")
Source: "C:\Users\me\AppData\Local\Temp\RtmpwXsVlD", layer: "lrnf000r22a_e"
Driver: ESRI Shapefile; number of rows: 2246324
Feature type: wkbLineString with 2 dimensions
Extent: (3696309 665490.8) - (9015653 4438073)
CRS: +proj=lcc +lat_0=63.390675 +lon_0=-91.8666666666667 +lat_1=49 +lat_2=77 +x_0=6200000 +y_0=3000000 +datum=NAD83 +units=m +no_defs
LDID: 87
Number of fields: 21
name type length typeName
1 OBJECTID 12 10 Integer64
2 NGD_UID 4 9 String
3 NAME 4 50 String
4 TYPE 4 6 String
5 DIR 4 2 String
6 AFL_VAL 4 9 String
7 ATL_VAL 4 9 String
8 AFR_VAL 4 9 String
9 ATR_VAL 4 9 String
10 CSDUID_L 4 7 String
11 CSDNAME_L 4 100 String
12 CSDTYPE_L 4 3 String
13 CSDUID_R 4 7 String
14 CSDNAME_R 4 100 String
15 CSDTYPE_R 4 3 String
16 PRUID_L 4 2 String
17 PRNAME_L 4 100 String
18 PRUID_R 4 2 String
19 PRNAME_R 4 100 String
20 RANK 4 4 String
21 CLASS 4 4 String
**我的问题:**在不将此文件导入R的情况下,是否也可以确定这些变量可以接受的“值”?(例如,PRNAME可能是Province_Name -因此,PRNAME可能包含“安大略”,“魁北克”等值)。
谢谢!
**注:**元数据https://www150.statcan.gc.ca/n1/pub/92-500-g/2021001/tbl/tbl_4.1-eng.htm
# file transfers using R
file.copy(from = file.path(temp_dir, "file_name.txt"),
to = file.path(getwd(), "file_name.txt"))
1条答案
按热度按时间mqxuamgl1#
数据似乎存储在
lrnf000r22a_e.dbf
中,而lrnf000r22a_e.dbf
似乎是在dbase file format中。这种类型的文件不存储所有可能的列值的元数据。文本值只是存储在文件本身的主体中。您需要扫描整个文件以找到所有可能的值。有内置的解析器,如foreign::read.dbf
,但它们假设您希望将所有数据加载到内存中。如果您只想获得一个唯一值的列表,那么您可能需要编写自己的自定义解析器。