Bon Voyage

MongoError: Can't extract geo keys 에러 해결하기 본문

문제 해결

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 )

그리고 나서 다시 실행하니 성공했음.

'문제 해결' 카테고리의 다른 글

Node.js의 MongoDB 쿼리 결과가 [object]로 나올 때  (0) 2019.07.18
Comments