通过ons API获取LSOA的数据

时间:2015-10-15 16:23:10

标签: ons-api

我已经能够获得有关一系列普查概念的选举病房的有效数据。

e.g。 http://data.ons.gov.uk/ons/api/data/dataset//QS201EW.json?dm%2F2011WARDH=E05001107&apikey=MYAPIKEY&jsontype=json-stat&totals=false&context=Census&geog=2011WARDH

然而,这些数据的地理范围太大(这是选区病房 - 大都会我相信)。我想要我能得到的最小/最细粒度的数据,并相信较低的超级输出层LSOA代表了这一点。但是,当我调整对该地理层次结构的API调用时,例如

http://data.ons.gov.uk/ons/api/data/dataset//QS201EW.json?dm%2F2011LSOAH=E01008368&apikey=MYAPIKEY&jsontype=json-stat&totals=false&context=Census&geog=2011LSOAH

我得到以下回复

'404 INTERNAL ERROR:数据集QS201EW用于上下文人口普查和层次结构2011LSOAH未找到'

这是为什么?数据是否不适用于此地理层次结构,或者我的API调用是否有问题?感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

感谢其他地方的帮助,我有一个答案。问题是我定义为2011LSOAH的地理层次应该是2011STATH。较低的超级输出层是“统计层次结构”的一部分。

我还发现通过使用ONS的数据资源管理器here,可以为任何给定的查询构建API网址。

答案 1 :(得分:0)

我可以稍后添加一些额外的提示:

获取一个或多个命名的LSOA的数据....

http://data.ons.gov.uk/ons/api/data/dataset/QS201EW.json?dm/2011STATH=E01008397,E01008396&apikey=12345&jsontype=json-stat&totals=false&context=Census&geog=2011STATH

获取洛杉矶境内的所有LSOA

http://data.ons.gov.uk/ons/api/data/dataset/QS201EW.json?pdm/E08000021=LSOA&apikey=12345&jsontype=json-stat&totals=false&context=Census&geog=2011STATH

这使用替代pdm / {父区域代码} = {子区域类型列表}语法。

父区域代码也可以是祖父母或祖先的祖先。您可以通过这样的调用获取潜在父母区域的代码 http://data.ons.gov.uk/ons/api/data/hierarchy/QS601EW.xml?context=Census&apikey=12345&geog=2011WARDH&levels=0,1,2,3,4,5,6

另一个PDM示例:获取东南地区所有地方当局(任何类型)的男性人数并返回JSON-Stat:

http://data.ons.gov.uk/ons/api/data/dataset/QS104EW.json?context=Census&apikey=12345&geog=2011WARDH&totals=true&jsontype=json-stat&dm/CL_0000035=CI_0000071&pdm/E12000008=NMD,UA,LONB,MD

请注意,使用NeSS服务获取邮政编码区域的替代方法,您可以使用ArcGIS。首先调用ESRI世界服务以获取邮政编码或地名的x和y坐标,然后对ONS ArcGIS服务进行查询以返回其所在的管理区域的名称/代码:

function getCentroid() {
    var searchstring = document.getElementById("postcodeorplace").value;
    var testURL = "http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find?text=" +
    searchstring + "&outFields=*&bbox=%20-5.4188710000000002,49.865400000000001,%201.7641,55.813870000000001&sourceCountry=GBR&outSR=27700&f=json&maxLocations=6";
    getJSONResponse1(testURL);
}

function getExtCode() {
    var layer = document.getElementById("layerpicker");
    var layerval = layer.options[layer.selectedIndex].value;
    var xpos = document.getElementById("xcoord").value;
    var ypos = document.getElementById("ycoord").value;

    var testURL = "http://services1.arcgis.com/ESMARspQHYMw9BZ9/ArcGIS/rest/services/" + layerval + "/FeatureServer/0/query?returnGeometry=false&outFields=*&geometryPrecision=0&f=json&geometry=" +
                  xpos + "," + ypos + "&geometryType=esriGeometryPoint&inSR=27700"
    getJSONResponse2(testURL);
}