[지오프롭테크] 공간정보 오픈플랫폼 부동산 중개업 조회
지오프롭테크 (GeoProptech) = 지리정보(geographic information system) + 부동산 (Property) + 기술 (Tech)
전세 및 계약 사기의 예방책중 하나로 개업공인중개사와 거래 상대방의 신분을 확인하시고 거래하셔야 안전 하다고 주의사항을 제시합니다. 이렇듯 등록된 개업공인중개사 인지 여부는 해당 시 · 군 · 구청 중개업무 담당부서에서 확인하거나 여러 기관에서 정보를 조회하도록 서비스를 제공합니다. (중개업 등록번호, 공인중개사 자격증, 개업공인중개사의 성명 · 주소 · 전화번호 등)
이러한 데이터를 GIS시스템에 연계하여 지도상으로 쉽게 조회할 수 있도록 구현해 보았습니다.
*****************************************************************************************************************************
(1) 부동산 중개업 위치정보 서비스
브이월드 국가중점데이터에서 "부동산중개업정보"를 WMS/WFS 및 다운로드 서비스를 제공합니다.
- 문제는 부동산 중개업 위치가 안 맞다는 치명적 문제
(부지런한분은 다운로드 받아 지오코딩 후 자체 서비스 구축 필요)
브이월드든 제공기관에서 좀더 관리가 필요함.
이때 데이터 특성상 같은 주소(동일 상가와 건물)에 위치하므로 일반 레이어를 사용하면 많은 위치가 중첩표시됩니다, 따라서 클러스터링(clustering) 레이어로 생성해서 중첩시 숫자로 표시하고 팝업창시 페이징을 해주어야 된다.
- 속성정보에는 상호와 중개업등록번호 등이 존재하나 상세정보와 연계할 "시스템등록번호" 속성은 미제공 함.
(2) 부동산 중개업 상세정보 서비스
- 브이월드 부동산 서비스>부동산 중개업 정보를 조회 서비스 제공 (타 사이트 처럼 검색 옵션 적용)
- 중개업 등록번호, 공인중개사 자격증, 개업공인중개사 및 보조원의 성명 · 주소 · 전화번호 등 상세 정보창 제공.
- 각 검색창과 상세조회창은 페이지 전체를 Refresh하는 방식으로 내부 함수나 소스를 보호하고 있지만 이건 크롤링/파싱/스크래핑하기 딱 좋은 방식이라는 점.
* 크롤링(crawling), 파싱(parsing),스크래핑(scraping) 중 광범위하게 스크래핑으로 생각함.
위 2개를 연계해서 구현해야 지도상에서 클릭으로 쉽게 조회하고 활용할 수 있다.
위 브이월드의 부동산 중개업 위치정보 WFS를 활용해 지도상에 표출한다. 이때 데이터 특성상 같은 주소(동일 상가와 건물)에 위치하므로 일반 레이어를 사용하면 많은 위치가 중첩표시됩니다, 따라서 클러스터링(clustering) 레이어로 생성해서 중첩시 숫자로 표시하고 팝업창시 페이징을 해주어야 된다.
그리고 하나의 중개업의 상세정보는 개인정보보안상 상세정보DB서비스를 하지 않는 것 같으므로, 브이월드의 상세정보창을 그대로 팝업창으로 띄우던지 크롤링해서 개별값들을 읽어 새 양식으로 표출하는 방식으로 사용하면 된다.
여기서 문제는 공간정보에는 상호나 주소, 등록번호가 존재하나 상세정보DB와 연계할 "시스템등록번호"가 없어 바로 상세정보창을 조회할 수 없다는 점입니다. (이건 뭐지 반쪽짜리 오픈하고 활용성은 아무 생각 없네~)
(반쪽씩 2개줘서 합치질 못하니 하나가 될 수 없는 이상한 공개서비스. 누굴위하고 어떻게 사용하라고~
그리고 타 지자체든 부동산 협회도 상세정보 조회서비스를 하고있는데 명색이 공간정보포털이라는 브이월드도 이렇게 따로따로 국밥식이라니 밥을 말지도 못하게~ )
이를 해결하기 위해 브이월드의 부동산 중개업 정보를 조회 서비스창의 검색창을 중간에 거쳐야 할 수 있음을 알아야합니다. 이 또한 소스와 데이터직접 적근을 보호하려고 페이지리프레시 방법을 사용했으나 크롤링하기 딱 좋은 취약함이 있다. (반대이면 함수소스 노출하기 딱 좋은 방식으로 크로스도메인 보안만 우회하면 더 작은 코딩으로 딱 좋아지고...보안은 아직 시간만 지체시킬 뿐 ㅠㅠ)
기능의 흐름은 지도상의 업소 WFS 위치점을 클릭하면, 시도코드와 상호, 사업자등록번호를 이용하여, 중간에 브이월드의 부동산 중개업 정보를 조회 서비스창의 검색창을 크롤링해서 "시스템등록번호"를 얻은 후 상세정보창을 그대로 팝업창으로 띄어 정보를 확인하는 방식으로 구현하면된다. 필요시 이 상세정보창도 크롤링해서 새양식으로 활용하여도 됩니다.
그런데 크롤링(crawling)을 하는건 대부분 타 언어로 자동 배치로 하지만 여기선 간단히 조회 업체 하나의 창에서 하나의 정보인 "시스템등록번호"를 얻는 거라 간단히 PHP를 이용해 문자자르기로 처리해도 될것입니다.(이 방법은 여러방법중 하나이므로 다양한 방법을 활용하세요)
<?php header("Content-Type:text/html;charset=utf-8"); $v_lawd_cd = $_GET['v_lawd_cd']; $sidoCd = $_GET['sidoCd']; $sigunguCd = $_GET['sigunguCd']; $dongCd = $_GET['dongCd']; $v_cmp_nm = $_GET['v_cmp_nm']; $v_ra_regno = $_GET['v_ra_regno']; $url = 'https://www.vworld.kr/dtld/broker/dtld_list_s001.do'; $context = stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded", 'content' => http_build_query([ 'v_lawd_cd' => $v_lawd_cd, 'sidoCd' => $sidoCd, 'sigunguCd' => $sigunguCd, 'dongCd' => $dongCd, 'v_cmp_nm' => $v_cmp_nm, 'v_ra_regno' => $v_ra_regno, 'pageIndex' => '1', 'recordCountPerPage' => '1', 'svcCode' => '117', 'v_pos_gbn' => '01', 'v_sort' => '1', 'v_sort_order' => '0', ]) ] ]); $text= file_get_contents($url, false, $context); sleep(2); $idx = strpos($text, "xxjavascript:fn_goView("); if($idx > 0){ $text = substr($text , $idx+19); $text = substr($text , 1, strpos($text, ")")); $text = substr($text , strpos($text, ", '")+2); $text = substr($text , strpos($text, ", '")+2); $text = substr($text , 1, strpos($text, "')")-1); }else{ $text = ''; } header("text/javascript"); echo $text; ?> |