티스토리 뷰

위도와 경도를 통해 반경 몇 km안의 장소를 찾을 수 있다.




prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>

select * where {

?s geo:lat ?slat.

?s geo:long ?slong.

bind(STR(concat("POINT(", ?slong, " ", ?slat, ")")) as ?point)

FILTER (bif:st_within(bif:st_geomFromText(?point), bif:st_point (128.676, 37.6427), 3))

}



필터 부분에 대한 설명을 덧붙이면


bif:st_within(bif:st_geomFromText(?point), bif:st_point (128.676, 37.6427), 3)


bif:st_within(A, B, C) 와 같은 형식으로 사용하는데

A는 찾는 대상, 

B는 기준이 되는 위치

C는 반경 몇km인지를 기술한다.


이를 해석하자면 'B의 위치(위도 37.6427, 경도 128.676) 반경 3km안의 지점을 찾아라' 고 할 수 있겠다.


A에 해당하는 부분을 다시 살펴보면

bif:st_geomFromText(?point)

변수 ?point 의 내용을 geometry 형식으로 만드는 것이고

?point는 bind 구문을 통해 

bind(STR(concat("POINT(", ?slong, " ", ?slat, ")")) as ?point)

찾을 대상을 POINT(경도 위도) 형태로 만들어 놓은 값이다.


B에 해당하는 부분은

bif:st_point (128.676, 37.6427) 이다.


A와 B 모두를 같은 형태의 값으로 만들어 bif:st_within 구문의 입력값으로 활용하면 된다.


'H:::SPARQL' 카테고리의 다른 글

H_17. SPARQL 설명 자료  (0) 2020.08.28
H_16. VALUES 키워드  (0) 2019.12.09
H_14. 생물정보LOD SPARQL 튜닝 사례  (0) 2016.02.16
H_13. SPARQL 사용하기  (4) 2014.11.26
H_12. BIND와 BOUND  (0) 2014.08.01
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함