mongodb 를 이용 하여 특정한 좌표 가 규정된 다각형 구역 내 에 있 는 지 확인 하 는 방법

5525 단어 mongodb좌표.
머리말
모두 가 알다 시 피 MongoDB 는 분포 식 파일 을 기반 으로 저 장 된 데이터 베이스 이 고 지리 적 공간 을 바탕 으로 하 는 색인 을 만 드 는 능력 을 제공 합 니 다.본 고 는 MongoDB 를 이용 하여 지리 적 공간 색인 을 바탕 으로 좌표 가 있 는 지역 의 판단 과 사용 을 할 것 입 니 다.
1.바 이 두 좌표 줍 기 도 구 를 사용 하여 지도 에 다각형 의 좌표 점 을 정의 하고 각 점 의 좌 표를 저장 합 니 다.
바 이 두 좌표 줍 기 도구:http://api.map.baidu.com/lbsapi/getpoint/
다각형 의 좌표 점 은 다음 과 같다.

113.314882,23.163055
113.355845,23.167042
113.370289,23.149564
113.356779,23.129758
113.338238,23.13913
113.330979,23.124706
113.313588,23.140858
113.323865,23.158204
113.314882,23.163055
주의:수미 좌 표 는 반드시 같 아야 다각형 을 닫 을 수 있 습 니 다.
2.바 이 두 맵 을 사용 하여 플랫폼 맵 JS Demo 를 오픈 하고 다각형 좌 표를 입력 하여 다각형 이 적합 한 지 확인 합 니 다.
바 이 두 맵 오픈 플랫폼 맵 JS 데모:http://developer.baidu.com/map/jsdemo.htm#c2_9
다음 코드 를 원본 편집기 의 내용 으로 바 꾼 다음 실행 을 누 르 십시오.

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
 <style type="text/css">
 body, html{width: 100%;height: 100%;margin:0;font-family:"    ";}
 #allmap {height:100%; width: 100%;}
 #control{width:100%;}
 </style>
 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=    "></script>
 <title>   、    </title>
</head>
<body>
 <div id="allmap"></div>
 <div id="control">
 <button onclick = "polyline.enableEditing();polygon.enableEditing();">   、     </button>
 <button onclick = "polyline.disableEditing();polygon.disableEditing();">   、     </button>
 </div>
</body>
</html>
<script type="text/javascript">
 //     API  
 var map = new BMap.Map("allmap");
 map.centerAndZoom(new BMap.Point(113.330764,23.155878), 15);
 map.enableScrollWheelZoom();

 var polygon = new BMap.Polygon([
 new BMap.Point(113.314882,23.163055),
 new BMap.Point(113.355845,23.167042),
 new BMap.Point(113.370289,23.149564),
 new BMap.Point(113.356779,23.129758),
 new BMap.Point(113.338238,23.13913),
 new BMap.Point(113.330979,23.124706),
 new BMap.Point(113.313588,23.140858),
 new BMap.Point(113.323865,23.158204)
 ], {strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5}); //     
 map.addOverlay(polygon); //     
</script>
다각형 영역

3.테스트 좌표 정의
광저우 동 역 좌표:113.330908,23.155678(다각형 내)

홍 발 빌딩:113.33831,23.137335(다각형 외)

4.몬 godb 테스트
1.데이터베이스 만 들 기

use testdb;

db.createUser( 
 { 
 "user":"root", 
 "pwd":"123456", 
 "roles":[{"role" : "readWrite", "db":"testdb"}] 
 } 
);

db.auth( 
 { 
 "user":"root", 
 "pwd":"123456" 
 } 
);
2.다각형 범위 삽입 및 색인 추가

db.geo.ensureIndex( 
 { 
 polygons: "2dsphere" 
 } 
);

db.geo.insert(
 {
 polygons:
 {
 type:"Polygon",
 coordinates:[[
 [113.314882,23.163055],
 [113.355845,23.167042],
 [113.370289,23.149564],
 [113.356779,23.129758],
 [113.338238,23.13913],
 [113.330979,23.124706],
 [113.313588,23.140858],
 [113.323865,23.158204],
 [113.314882,23.163055],
 ]]
 }
 }
);
3.좌표 가 다각형 영역 에 있 는 지 판단
광저우 동 역 좌표:113.330908,23.155678

db.geo.find(
 {
 polygons:
 {
 $geoIntersects:
 {
 $geometry:{ 
  "type" : "Point",
  "coordinates" : [113.330908,23.155678] }
 }
 }
 }
);
출력:

{ "_id" : ObjectId("57c2b1895fb7fd4790f9f099"), "polygons" : { "type" : "Polygon", "coordinates" : [ [ [ 113.314882, 23.163055 ], [ 113.355845, 23.167042 ], [ 113.370289, 23.149564 ], [ 113.356779, 23.129758 ], [ 113.338238, 23.13913 ], [ 113.330979, 23.124706 ], [ 113.313588, 23.140858 ], [ 113.323865, 23.158204 ], [ 113.314882, 23.163055 ] ] ] } }
좌표 113.330908,23.155678 다각형 구역 내 에서
홍 발 빌딩:113.33831,23.137335

db.geo.find(
 {
 polygons:
 {
 $geoIntersects:
 {
 $geometry:{ 
  "type" : "Point",
  "coordinates" : [113.33831,23.137335] }
 }
 }
 }
);
출력:비어 있 음
좌표 113.33831,23.137335 가 다각형 구역 밖 에 있 음 을 나타 낸다.
총결산
이상 은 mongodb 를 이용 하여 좌표 가 지 정 된 다각형 구역 내의 모든 내용 을 판단 하 는 것 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글로 교류 하 셔 도 됩 니 다.저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기