모듈: OSM
Module:OSM| 이 모듈은 베타판이며 널리 사용할 수 있습니다.아직 새로운 제품이기 때문에 결과가 예상대로 나오도록 주의를 기울여 사용해야 합니다. |
목표
이 페이지에서 Wikipedia:WikiProject_OpenStreetMap은 Wikipedia에서 OpenstreetMap으로 링크하기 위해 여러 가지 접근방식을 시도한 적이 있습니다.
근데 이게 왜 이렇게 어려워?몇 가지 문제가 있습니다.그 중 하나는 Openstreetmap의 노드 ID, 방법 및 관계가 안정성이 보장되지 않는다는 것입니다.길이 분할되면 id는 짧은 길이를 가리키고 다른 부분은 새 id를 얻습니다.노드로 시작하는 관심 지점이 (닫힌) 방식으로 변환되는 경우가 있습니다.일부 기여자는 항목을 삭제하지만, 항목을 삭제한 후에는 항목을 다시 작성합니다.아니면 누군가 없어진 걸 알아차리고 새로 재생한 거겠죠
따라서 OSM 오브젝트 자체를 직접 가리키는 것은 그다지 효과가 없습니다.미래의 증거가 아니라고 칩시다.링크를 정의한 시점에서 동작하거나 다음 날 이미 실패할 수 있습니다.
위키데이터
다행히도 Wikidata가 등장했고 이것은 이 문제를 해결하는 데 도움을 줄 수 있는 퍼즐의 일부를 형성한다.Openstreetmap측의 Wikidata 항목을 참조하는 태그를 추가할 수 있습니다.
방법이 분할된 경우 두 부분은 올바른 Wikidata 태그로 계속됩니다.
고가 API
하지만 이제 우리에게 새로운 문제가 생겼다.Wikidata 태그를 할당받은 Openstreetmap DB에서 이러한 요소를 찾는 방법은 무엇입니까?
이걸 도와줄 도구가 있어요.Openstreetmap의 전체 데이터베이스를 세밀하게 업데이트하고 있으며, 쿼리를 단순하게 유지할 수 있다는 조건으로 빠르게 문의할 수 있습니다.고가 API라고 합니다.
육교 터보
raw data를 보는 것도 그다지 유익하지 않기 때문에 그 주위에 Breach Turbo라는 툴이 구축되었습니다.
쿼리
이러한 쿼리를 개발하려면 시행착오가 필요합니다.이 모듈은 프로세스를 자동화하고 적절한 기본값으로 동작하는 쿼리를 작성합니다.
예를 들어 Wikidata ID를 생략하면 해당 문서의 ID가 사용됩니다.
그러나 사용자 지정 쿼리를 직접 작성하거나 추가 필터를 지정할 수도 있습니다.일반적으로 모든 객체의 유형, 노드, 방법 및 관계를 가져오지만 예를 들어 방법만 제한할 수 있습니다.
유행하는
스타일시트를 추가하면 데이터를 보다 적절한 방법으로 표시할 수 있습니다.적합한 스타일시트를 추가하려고 시도하고 있지만 사용자 고유의 스타일시트를 정의할 수 있습니다.
사용.
- Wikidata 태그와 독립적으로 Openstreetmap 검색
{{#제외:OSM 육교}} - Wikidata=Q...가 있는 항목을 Openstreetmap에서 검색합니다.
{{#제외:OSM wd}} - Openstreetmap에서 다음 이름을 가진 아이템을 검색합니다.어원: wikidata=Q...
{{#제외:OSM 어원}} - Openstreetmap에서 제목: wikidata=Q...를 검색합니다.
{{#제외:OSM subject} - Openstreetmap에서 아티스트가 있는 아이템을 검색합니다.wikidata=Q...
{{#제외:OSM 아티스트} - Openstreetmap에서 아키텍트: wikidata=Q...를 검색합니다.
{{#제외:OSM 아키텍트} - Openstreetmap에서 연산자가 wikidata=Q...인 항목을 검색합니다.
{{#제외:OSM 오퍼레이터}} - Openstreetmap에서 브랜드가 wikidata=Q...인 아이템을 검색합니다.
{{#제외:OSM 브랜드} - Openstreetmap에서 최신 기사와 관련된 대중교통 노선 검색
{{#제외:OSM pt}} 파라미터
- display : 발신 링크에 표시되는 텍스트
- link : 기본값은 yes이지만 다른 템플릿에서 사용할 경우 no로 설정할 수 있습니다.
- timeout : 기본값은 15초입니다.더 복잡한 쿼리의 경우 더 높게 설정해야 합니다.
- id : 1개 이상의 Wikidata 항목에 링크할 수 있습니다.기본값은 발신자 페이지의 Q번호 ID 입니다.
- query : 검색을 고속도로 또는 묘비로 제한하기 위해 사용할 수 있는 쿼리를 확장할 수 있습니다.
- prim : 노드, 방법 및 관계 프리미티브만 가져옵니다.
- coord : bbox가 결정되는 좌표 및 확대축소 배율은 47.0618984;15.4370248;17 입니다.
- 한계 ToBBOX: 기본값은 yes 입니다.코디가 설정된 경우 쿼리는 결과 box로 제한됩니다.
- run : 기본값은 yes 입니다.검색하기 전에 사용자가 맵을 이동하거나 쿼리를 변경할 수 있도록 하려면 no를 사용합니다.
- style : MapCSS 스타일을 정의하여 결과를 보다 적절하게 표시할 수 있습니다.
테스트 값
모든 테스트 통과.
| 본문 | 기대됩니다 | 실제. | |
|---|---|---|---|
| {{#제외:OSM 브랜드 ID = Q3195848 디스플레이 =Toon vestigen op een kaart style = node { text : name ;아이콘 이미지 : url https://upload.wikimedia.org/wikipedia/commons/0/07/Kewlox_logo.png'); https://upload.wikimedia.org/wikipedia/commons/0/07/Kewlox_logo.png'); 아이콘 폭 : 32 ; } 。 | 툰베스티징겐 opeenkaart | 툰베스티징겐 opeenkaart | |
| {{#제외:OSM 브랜드 ID = Q3195848 디스플레이 =map}에 위치 표시 | 지도에 위치 표시 | 지도에 위치 표시 |
| 본문 | 기대됩니다 | 실제. | |
|---|---|---|---|
| {{#제외:OSM 어원 id = Q2360250 디스플레이 = Map} | 지도 | 지도 | |
| {{#제외:OSM 어원 id = Q118958 display = Leuven query = [ timeout ]timeout = 50 coord = 50 . 879 ; 4 . 701 ; 9}에서 명명된 이름 | 루벤의 이름을 딴 거리 | 루벤의 이름을 딴 거리 | |
| {{#제외:OSM 어원 id = Q13104397 link = No display =Openstreetmap}의 Numa Ensch Tesch의 이름을 딴 Show Avenue | http://overpass-turbo.eu/?Q=%5Btimeout%3A20%5D%5바우트%3Ajson%5D%3B%0A%28%0아노드%5B%22이름%3Aewikidata%3Awikidata%22~%22%285E%7C%29%29%104Q13%%29%28%3B%7C%24%29%5D%3B%0A%3E%3B%29%3B%3B%0Aout%20geom%3B%7B%7Bstyle%3A%0A%0A%0A%0A%3B%A%3A%3B%A%3Btya이름3Btya | http://overpass-turbo.eu/?Q=%5Btimeout%3A20%5D%5바우트%3Ajson%5D%3B%0A%28%0아노드%5B%22이름%3Aewikidata%3Awikidata%22~%22%285E%7C%29%29%104Q13%%29%28%3B%7C%24%29%5D%3B%0A%3E%3B%29%3B%3B%0Aout%20geom%3B%7B%7Bstyle%3A%0A%0A%0A%0A%3B%A%3A%3B%A%3Btya이름3Btya |
| 본문 | 기대됩니다 | 실제. | |
|---|---|---|---|
| {{#제외:OSM pt id = Q18012220 디스플레이 = 지도상의 De Lijn 352 } | 지도상 De Lijn 352 | 지도상 De Lijn 352 |
| 본문 | 기대됩니다 | 실제. | |
|---|---|---|---|
| {{#제외:OSM subject id = Q1356304 display = Ernest Claes cord = 51.19812; 3.23812; 18} | 어니스트 클라스 동상 | 어니스트 클라스 동상 |
| 본문 | 기대됩니다 | 실제. | |
|---|---|---|---|
| {{#제외:OSM wd id = Q650206; Q713300 디스플레이 = Presse and Florenville} | 브레스 플로렌빌 | 브레스 플로렌빌 | |
| {{#제외:OSM wd id = Q20748715 디스플레이 = 브레스 좌표 교회 = 49.71513; 5.23446; 14} | 브레스 교회 | 브레스 교회 | |
| {{#제외:OSM wd id = Q1716059 prim = w display = 지도상의 Arlon 위치} | 지도상의 알론 묘지 | 지도상의 알론 묘지 |
현지의 기능. 빌드쿼리(틀, 타깃) 현지의 text To Display(텍스트 투 디스플레이), 왼쪽 링크, 오른쪽 링크, runQueryRightAway, 아이템 오브젝트, 아이템 아이디, 질문하다, 조정하다, 박스, 발언, 고가도로URL, 원초적, 타임아웃, 스타일., 로고 현지의 args = 틀.args 한다면 args.표시 그리고나서 -- 링크에 표시할 텍스트 text To Display(텍스트 투 디스플레이) = ' ' .. args.표시 또 다른 text To Display(텍스트 투 디스플레이) = '' 끝. 한다면 args.타임아웃 그리고나서 타임아웃 = '[실행:' .. args.타임아웃 .. '][out:json];\n' 또 다른 타임아웃 = '[132:20][out:json];\n' 끝. 한다면 args.링크 그리고. args.링크 == '아니요' 그리고나서 -- URL을 반환하기만 하면 됩니다. 왼쪽 링크 = '' 오른쪽 링크 = '' text To Display(텍스트 투 디스플레이) = '' 또 다른 왼쪽 링크 = '[' 오른쪽 링크 = ']' 끝. 한다면 args.달려. 그리고. args.달려. == '아니요' 그리고나서 -- 즉시 실행하지 않음 runQueryRightAway = '' 또 다른 runQueryRightAway = '&R' 끝. 한다면 틀.args.고가도로 그리고나서 아이템 아이디 = "" 아이템 오브젝트 = 제로 또 다른 한다면 args.아이디 그리고나서 -- 특정 Q-항목에 대한 빌드 쿼리 아이템 아이디 = args.아이디 pcall(기능. () 아이템 오브젝트 = 음.키보드.getEntityObject(getEntityObject)(음.본문.분열되다(아이템 아이디,";")[1]) 끝.) 또 다른 아이템 오브젝트 = 음.키보드.getEntityObject(getEntityObject)() 한다면 아이템 오브젝트 == 제로 그리고나서 돌아가다 "이 페이지에는 Wikidata 항목이 없습니다." 끝. -- 현재 페이지의 빌드 쿼리 아이템 아이디 = 아이템 오브젝트.아이디 끝. 끝. -- 항상 정규 표현식 기반 검색을 수행합니다. -- 데이터에는 여러 개의 값이 포함될 수 있습니다. 한다면 틀.args.고가도로 == 제로 그리고나서 아이템 아이디 = '"~"(^ ;)(' .. 아이템 아이디:서브(";", "\") .. ')(; $)' 왼쪽 브래킷 = '["' 우측 브라켓 = '"]' 또 다른 왼쪽 브래킷 = '' 우측 브라켓 = '' 끝. 한다면 args.질문하다 그리고나서 --사용자는 자신의 태그를 추가하여 필터링할 수 있습니다. 질문하다 = args.질문하다 또 다른 한다면 틀.args.고가도로 그리고나서 돌아가다 "육교로 호출할 경우 쿼리가 포함되어 있어야 합니다=" 끝. 질문하다 = '' 끝. 한다면 args.조정하다 그리고. 것은 아니다.(args.한계 ToB박스=='아니요') 그리고나서 -- 사용자는 좌표와 줌 배율을 제공할 수 있습니다. 조정하다 = '&C=' .. args.조정하다 --이 경우 검색 범위를 시야에 있는 영역으로 제한할 수 있습니다. 박스 = '({box}})', 더 넓게 검색하는 방법을 알려주십시오. 발언 = // 를 삭제합니다. .. 박스 .. '쿼리를 글로벌하게 실행할 경우' 또 다른 조정하다 = '' 박스 = '' 발언 = '' 끝. 고가도로URL = 타임아웃 .. '(\n' -- 사용자가 prim(itives)을 지정했지만 문자열을 비워 두면 중단합니다. 한다면 args.새파랗다 그리고나서 한다면 args.새파랗다 == '' 그리고나서 돌아가다 "쿼리할 기본 요소를 지정하십시오." 끝. 원초적 = args.새파랗다 또 다른 원초적 = 'nwr' 끝. 한다면 원초적:발견하다("n") 그리고나서 -- 노드 포함 고가도로URL = 고가도로URL .. '노드' .. 왼쪽 브래킷 .. 타깃 .. 아이템 아이디 .. 우측 브라켓 .. 질문하다 .. 박스 .. ';' .. 발언 .. '\n' 끝. 한다면 원초적:발견하다("w") 그리고나서 -- 방법을 포함합니다. 고가도로URL = 고가도로URL .. '웨이' .. 왼쪽 브래킷 .. 타깃 .. 아이템 아이디 .. 우측 브라켓 .. 질문하다 .. 박스 .. ';\n' 끝. 한다면 원초적:발견하다("r") 그리고나서 -- 관계를 포함하다 고가도로URL = 고가도로URL .. '실패' .. 왼쪽 브래킷 .. 타깃 .. 아이템 아이디 .. 우측 브라켓 .. 질문하다 .. 박스 .. ';\n>>;\n' 끝. 고가도로URL = 고가도로URL .. ');\n' 고가도로URL = 고가도로URL .. '검을 벗어났다'\n' 한다면 args.스타일. 그리고나서 스타일. = args.스타일. 또 다른 한다면 args.로고 그리고나서 로고 = " 아이콘 이미지: url" .. args.로고 .. ');\n' 또 다른 한다면 아이템 오브젝트 그리고나서 로고 = 스트링(아이템 오브젝트:format Property Values('P154')['값']):서브("'", "'") 끝. 한다면 로고 그리고. 것은 아니다.(로고 == '') 그리고나서 로고 = icon-image : urlhttp://https://commons.wikimedia.org/wiki/Special:Redirect/file/'.. 로고 .. '");\n' 끝. 끝. 한다면 로고 그리고나서 스타일. = "노드[]".. 타깃 .."]{\n텍스트: 이름;\n".. 로고 .. "아이콘 폭: 32;}" 끝. 끝. 한다면 스타일. 그리고나서 고가도로URL = 고가도로URL .. '{{스타일:\n' .. 스타일. .. '\n}}\n' 끝. 돌아가다 왼쪽 링크 .. 'http://overpass-turbo.eu/? Q=' .. 음.uri.부호화(고가도로URL, '패스' ) .. 조정하다 .. runQueryRightAway .. text To Display(텍스트 투 디스플레이) .. 오른쪽 링크 끝. 현지의 p = {} 기능. p.고가도로( 틀 ) 틀.args.고가도로 = 진실의 돌아가다 빌드쿼리(틀, '') 끝. 기능. p.wd( 틀 ) 돌아가다 빌드쿼리(틀, '카메리다타') 끝. 기능. p.pt( 틀 ) 틀.args.스타일. = "노드 {\n불투명도: 0;\n채우기 불투명도: 0;}\n노드 [bus=bus_stop], way[bus=bus_stop]{\n텍스트: 이름;\n아이콘 이미지: url icons/maki/bus-18.png';\n아이콘 폭: 18;}" 틀.args.새파랗다 = "r" 틀.args.타임아웃 = 50 돌아가다 빌드쿼리(틀, '카메리다타') 끝. 기능. p.어원( 틀 ) 돌아가다 빌드쿼리(틀, '이름: 어학: 어학: 어학: 어학: 어학) 끝. 기능. p.주제( 틀 ) 돌아가다 빌드쿼리(틀, '파일: operidata') 끝. 기능. p.예술가.( 틀 ) 돌아가다 빌드쿼리(틀, '파일: operidata') 끝. 기능. p.건축가.( 틀 ) 돌아가다 빌드쿼리(틀, '아키텍트: architectidata') 끝. 기능. p.교환입니다.( 틀 ) 돌아가다 빌드쿼리(틀, '파일: operidata') 끝. 기능. p.브랜드.( 틀 ) 돌아가다 빌드쿼리(틀, '브랜드: subrandidata') 끝. 돌아가다 p