2015-03-22 14 views
13

Mam kolekcję w MongoDB z indeksem 2dsphere. Przedmiotem chcę zapisać wygląda następująco:Nie można wyodrębnić kluczy Geo, mimo że GeoJSON jest ważny.

{ 
     "type" : "Polygon", 
     "coordinates" : [ 
      [ 
       [ 
        5.052617929724351, 
        52.64653192570052 
       ], 
       [ 
        5.051738165167465, 
        52.64765805672784 
       ], 
       [ 
        5.054162882116928, 
        52.64831549553909 
       ], 
       [ 
        5.054592035559312, 
        52.64780777138566 
       ], 
       [ 
        5.055364511755601, 
        52.64790541110375 
       ], 
       [ 
        5.056094072607651, 
        52.64688343792051 
       ], 
       [ 
        5.054237983969346, 
        52.64661654927096 
       ], 
       [ 
        5.052617929724351, 
        52.64653192570052 
       ] 
      ] 
     ] 
    } 

Według http://geojsonlint.com/ ten jest całkowicie poprawny GeoJSON. Jednak MongoDB mówi, że nie może wyodrębnić kluczy Geo, ponieważ GeoJSON może być zniekształcony.

Czy ktoś może mi pomóc i dostrzec błąd?

Jest to błąd MongoDB uzyskać:

insertDocument :: caused by :: 16755 Can't extract geo keys from object, malformed geometry? 
+1

Masz 2 nawiasy tablicowe wokół macierzy punktowych. Spróbuj usunąć jeden zestaw nawiasów tablicy. Powinien być [[lat, długo], [lat, długo], ...] –

+1

Cześć Brian, nie sądzę, że to jest poprawne. Wielokąt w GeoJSON to układ współrzędnych. Dźwięki GeoJSON zgłaszają również, że jest to nieprawidłowe GeoJSON. Spróbuję jednak w MongoDB. – Mathyn

+0

Przepraszamy. Myślałem, że tylko MultiPolygon potrzebuje dodatkowych nawiasów tablicowych. To zabawne ... Znalazłem wpis z odpowiedzią, która zaczęła się dokładnie tak samo https://groups.google.com/forum/m/#!topic/mongodb-user/OPouYFHS_zU –

Odpowiedz

2

Problem polega na tym, że nie podanie nazwy obiektu górnym poziomie, że GeoJSON będzie przypisany.

Musisz utworzyć indeks "2dsphere" w polu "współrzędne". Zamiast tego chcesz utworzyć go na polu, do którego zostanie przypisana cała wartość GeoJSON.

db.geo.createIndex({"location":"2dsphere"}) 
db.geo.insert({"location" : { 
    "type" : "Polygon", 
    "coordinates" : [ 
     [ <list of your-coord-pairs> ] 
    ] 
}}) 
WriteResult({ "nInserted" : 1 }) 
+0

Z pewnością jest to problem. Niestety nie mogę już sprawdzać poprawności, ponieważ nie mam już określonego kodu, który spowodował problem. – Mathyn

+2

Najwyraźniej ktoś ma dokładnie ten sam problem, ponieważ postawił nagrodę za odpowiedź. –

Powiązane problemy