Skip to content

Commit b2142f8

Browse files
committed
suggestions from copilot
1 parent 83ef1ed commit b2142f8

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

inst/gpkg/td.gpkg.zip

5.49 KB
Binary file not shown.

src/gdal_read.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Rcpp::List allocate_out_list(OGRFeatureDefn *poFDefn, int n_features, bool int64
6868
attr_names[i] = poFieldDefn->GetNameRef();
6969
domains[i] = NA_STRING;
7070
#if GDAL_VERSION_NUM >= 3030000
71-
if (poFieldDefn->GetDomainName() != "")
71+
if (! poFieldDefn->GetDomainName().empty())
7272
domains[i] = poFieldDefn->GetDomainName();
7373
#endif
7474
}
@@ -652,24 +652,26 @@ Rcpp::List get_field_domains(OGRDataSource *poDS, Rcpp::CharacterVector fdn) {
652652
Rcpp::List fdi(3);
653653
Rcpp::CharacterVector descr = Rcpp::wrap(d->GetDescription());
654654
fdi[0] = descr;
655-
fdi.attr("names") = Rcpp::CharacterVector::create("description", "merge_sum", "split_geom_ratio");
656655
OGRFieldDomainMergePolicy mp = d->GetMergePolicy();
657656
Rcpp::LogicalVector l(1);
658-
if (mp == OFDMP_DEFAULT_VALUE)
659-
l[0] = NA_LOGICAL;
660-
else if (mp == OFDMP_SUM)
661-
l[0] = true;
657+
l[0] = NA_LOGICAL;
658+
if (mp == OFDMP_SUM)
659+
l[0] = true; // extensive
662660
else if (mp == OFDMP_GEOMETRY_WEIGHTED)
663-
l[0] = false;
661+
l[0] = false; // intensive
662+
else if (mp != OFDMP_DEFAULT_VALUE)
663+
Rcpp::warning("unknown value for GetMergePolicy()");
664664
fdi[1] = l;
665665
OGRFieldDomainSplitPolicy sp = d->GetSplitPolicy();
666-
if (sp == OFDSP_DEFAULT_VALUE)
667-
l[0] = NA_LOGICAL;
668-
else if (sp == OFDSP_DUPLICATE)
669-
l[0] = false;
666+
l[0] = NA_LOGICAL;
667+
if (sp == OFDSP_DUPLICATE)
668+
l[0] = false; // intensive
670669
else if (sp == OFDSP_GEOMETRY_RATIO)
671-
l[0] = true;
670+
l[0] = true; // extensive
671+
else if (sp != OFDSP_DEFAULT_VALUE)
672+
Rcpp::warning("unknown value for GetSplitPolicy()");
672673
fdi[2] = l;
674+
fdi.attr("names") = Rcpp::CharacterVector::create("description", "merge_sum", "split_geom_ratio");
673675
fd[i] = fdi;
674676
}
675677
}

tests/testthat/test-read.R

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,3 +202,9 @@ test_that("Missing data sources have useful error message (#967)", {
202202
# delete temp file
203203
file.remove(x)
204204
})
205+
206+
test_that("Field domains are read from a geopackage", {
207+
r = read_sf(system.file("gpkg/td.gpkg.zip", package = "sf"), options=c("IMMUTABLE=YES"))
208+
expect_false(is.null(attr(r, "FieldDomains")))
209+
expect_false(is.null(attr(r, "domains")))
210+
})

0 commit comments

Comments
 (0)