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 를 이용 하여 좌표 가 지 정 된 다각형 구역 내의 모든 내용 을 판단 하 는 것 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글로 교류 하 셔 도 됩 니 다.저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.