문제 해결
MongoError: Can't extract geo keys 에러 해결하기
nangkyeong
2019. 7. 24. 15:14
좌표에 "2dsphere" 인덱스를 만드려 했는데 에러가 난다.
collection.createIndex({dcenter:"2dsphere"}, function(err, result){
if (err){
console.error("에러났다!! \n",err);
//
} else {
console.log("성공");
}
});
에러 내용은 아래와 같았다.
{ MongoError: Can't extract geo keys:
...
can't project geometry into spherical CRS: [ 37.543433, 126.951544 ]
좌표를 추출할 수 없다는 말인데,
왜냐하면 GeoJson 객체 타입에서는 경도, 위도의 순서대로 좌표를 갖기 때문이다.
(참고 : https://nangkyeong.tistory.com/entry/MongoDB에서의-Geospatial-Data )
경도, 위도 순서로 문서의 좌표 값을 바꾸자.
이미 저장된 위도, 경도 순의 좌표를 어떻게 경도, 위도 순으로 바꿔야 할까?
//몽고에 접속한 후 좌표가 있는 db로 들어간다. (여기서는 udg)
use udg
//udgmap 컬렉션의 dcenter에 좌표가 있으므로,
//모든 document를 찾아서, forEach로 순서를 바꿔주자.
db.udgmap.find().forEach(function (d) {
// 각 document의 decnter에 값을 다시 대입
d.dcenter = [
d.dcenter[1], // 1번지의 경도가 앞에 오게 함
d.dcenter[0] // 0번지의 위도는 뒤로
];
db.udgmap.save(d); //저장
});
위 코드는 여기를 참고했다 ( https://stackoverflow.com/a/30140085 )
그리고 나서 다시 실행하니 성공했음.