为SDA_Query()函数创建SQL多边形查询以从SSURGO数据库中提取几何

时间:2016-06-06 09:15:25

标签: r gis geospatial rgdal

我正在尝试使用多边形边界框查询USDA SSURGO土壤数据库。但是,当我使用mapunit_geom_by_ll_bbox()函数为下面列出的边界框坐标时,我收到一条错误消息,我不知道该怎么做,我希望有人可以提供帮助。

该函数适用于我生成的同一个脚本查询的许多其他站点,但在这种情况下似乎在下载59.3 MB数据后抛出错误消息“找不到任何功能”。

require(soilDB)
require(rgdal)
b<- c(-78.85225,  36.09854, -78.30758,  36.54143)
mapunits <- mapunit_geom_by_ll_bbox(b)
trying URL 'http://sdmdataaccess.nrcs.usda.gov/Spatial/SDMNAD83Geographic.wfs?Service=WFS&Version=1.0.0&Request=GetFeature&Typename=MapunitPoly&BBOX=-78.8522>474281323,36.0985383812962,-78.3075831406237,36.5414279914723'

Content type 'text/xml; charset=utf-8' length 200 bytes 
downloaded 59.3 MB

Error in rgdal::readOGR(dsn = tf.full, layer = file.layer, disambiguateFIDs = TRUE,  : no features found

另外:警告信息:

1: In download.file(url = u, destfile = tf.full, quiet = FALSE) : downloaded length 62158033 != reported length 200
2: In ogrFIDs(dsn = dsn, layer = layer) : no features found

任何想法可能是什么问题?

非常感谢,

皮特

1 个答案:

答案 0 :(得分:0)

我以为我通过使用SDA_query解决了这个问题,但是我仍然遇到一些较大的边界框的错误,例如:

require(soilDB)
require(rgdal)

b <- c(-82.57186, -82.11829 , 29.51710,  29.91280)  
p <- writeWKT(as(extent(b), 'SpatialPolygons'))  
q <- paste0("select G.MupolygonWktWgs84 as geom, mapunit.mukey, muname
FROM mapunit
CROSS APPLY SDA_Get_MupolygonWktWgs84_from_Mukey(mapunit.mukey) as G
WHERE mukey IN (SELECT DISTINCT mukey FROM SDA_Get_Mukey_from_intersection_with_WktWgs84('", p, "') )")  
res <- SDA_query(q)

Error: SDA returned an error:MaxRows

任何人都知道这是为什么?您可以使用SDA查询下载金额是否有一些上限?

目前,此查询与边界框相比下载了一个非常大的区域,并假设这与多部分多边形有关,是否有某种方法只下载bbox与之交叉的多部分多边形部分?

干杯,

皮特

P.S。我是新手,所以对格式化道歉