获取自治市的面积
Get area of municipality
我正在使用 stSPARQL,裁判说:
xsd:float strdf:area(strdf:geometry A): Returns the area of the surface if it is a polygon or multi-polygon.
所以我正在尝试:
PREFIX geo: <http://geo.linkedopendata.gr/gag/ontology/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX strdf: <http://strdf.di.uoa.gr/ontology#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
...
?municipality geo:has_geometry ?geometry . // so far so good (checked)
FILTER(strdf:area(?geometry) = ?area) .
结果我一无所获。我的总体目标是获得所有城市的总面积,但我连一个都无法获得!有什么想法吗?
请注意,这是我第一次使用空间度量函数,因此我想做的是收集并显示 strdf:area()
的结果,但我失败了!
?geometry 的第一个结果是:
"MULTIPOLYGON(((476162.8125 3949684,476195.687499999 3949675,476216.000000001 3949675,476226.1875 3... more
编辑:
如果我尝试这样做:?area = strdf:area(?geometry) .
,我会得到一个错误:
Encountered " "=" "= "" at line 15, column 9. Was expecting one of: "(" ... "!" ... "^" ... "a" ... ... ...
我认为您想对具有 return 值的函数执行的操作是您应该以某种方式在 select 子句中使用它。
例如:
PREFIX geo: ...
PREFIX rdf: ...
PREFIX strdf: ...
PREFIX xsd: ...
...
SELECT (strdf:area(?geometry) AS ?myarea)
WHERE {
?municipality geo:has_geometry ?geometry .
}
据说这会为您提供所有需要添加的区域,只需使用 SUM(?myarea) 函数即可。这会添加 "area" 函数找到的所有答案。在之前的情况下,您的 select 子句类似于:
SELECT (SUM(strdf:area(?geometry)) AS ?myarea)
FILTER 不设置变量。
根据您关于想要收集 strdf:area()
结果的评论,
BIND(strdf:area(?geometry) AS ?area)
或
SELECT ... (strdf:area(?geometry) AS ?area) ...
我正在使用 stSPARQL,裁判说:
xsd:float strdf:area(strdf:geometry A): Returns the area of the surface if it is a polygon or multi-polygon.
所以我正在尝试:
PREFIX geo: <http://geo.linkedopendata.gr/gag/ontology/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX strdf: <http://strdf.di.uoa.gr/ontology#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
...
?municipality geo:has_geometry ?geometry . // so far so good (checked)
FILTER(strdf:area(?geometry) = ?area) .
结果我一无所获。我的总体目标是获得所有城市的总面积,但我连一个都无法获得!有什么想法吗?
请注意,这是我第一次使用空间度量函数,因此我想做的是收集并显示 strdf:area()
的结果,但我失败了!
?geometry 的第一个结果是:
"MULTIPOLYGON(((476162.8125 3949684,476195.687499999 3949675,476216.000000001 3949675,476226.1875 3... more
编辑:
如果我尝试这样做:?area = strdf:area(?geometry) .
,我会得到一个错误:
Encountered " "=" "= "" at line 15, column 9. Was expecting one of: "(" ... "!" ... "^" ... "a" ... ... ...
我认为您想对具有 return 值的函数执行的操作是您应该以某种方式在 select 子句中使用它。 例如:
PREFIX geo: ...
PREFIX rdf: ...
PREFIX strdf: ...
PREFIX xsd: ...
...
SELECT (strdf:area(?geometry) AS ?myarea)
WHERE {
?municipality geo:has_geometry ?geometry .
}
据说这会为您提供所有需要添加的区域,只需使用 SUM(?myarea) 函数即可。这会添加 "area" 函数找到的所有答案。在之前的情况下,您的 select 子句类似于:
SELECT (SUM(strdf:area(?geometry)) AS ?myarea)
FILTER 不设置变量。
根据您关于想要收集 strdf:area()
结果的评论,
BIND(strdf:area(?geometry) AS ?area)
或
SELECT ... (strdf:area(?geometry) AS ?area) ...