2016-11-25 1 views
0

Ich habe eine Datenbanksammlung, die der GeoJSON-Formatierung für geografische Punktstandorte folgt. Dadurch kann ich einfach Daten aus der Datenbank zur Anzeige mit d3.js extrahieren. Wenn der georeferenzierte Punkt ein eigenes Dataset enthält, wie kann diese Information am besten so gespeichert werden, dass sie der GeoJSON-Formatierung entspricht und MongoDB 2.4.x 2dsphere Abfragen zulässt?So speichern Sie zusätzliche Daten in MongoDB 2.4.x so, dass sie der GeoJSON-Formatierung entsprechen

Hier ist ein Beispiel aus dem documentation GeoJSON gegeben

{ 
    "type": "Feature", 
    "geometry": { 
    "type": "Point", 
    "coordinates": [123456, 234567] 
    }, 
    "properties": { 
    "arrivalTime": 12345678, 
    "departureTime": 23456789 
    } 
} 

die an diesem bestimmten Punkt annehmen Sei I eine Matrix von zusätzlichen Informationen, wobei jeder Matrixeintrag durch die Wertepaare x,y,z geben wird. Wenn beispielsweise x und y 1x10 Vektoren sind, ist z eine 10x10-Matrix. Ich muss diese Art von Informationen für diesen Punkt speichern, aber ich möchte nicht die Möglichkeit verlieren, 2dsphere Abfragen in MongoDB 2.4.x zu verwenden, und ich möchte, dass meine Datenbanksammlung geoJSON entspricht, so dass andere Bibliotheken wie d3.js sind in der Lage, ohne Verlust zu interagieren.

Antwort

0

Sie können das GeoJSON-Objekt möglicherweise in ein Feld in einem Dokument einfügen. Wenn beispielsweise eine Lage ein GeoJSON Objekt wie Ihr Beispiel hat, können Sie dieses Dokument in einem Dokument einbetten, die alle Informationen zu diesem Ort kapselt, zB:

{ 
    "_id": ObjectId(...), 
    "geo": <GeoJSON object>, 
    "meta": { 
    "x": [1x10 vector], 
    "y": [1x10 vector], 
    "z": [10x10 matrix], 
    "other": <other relevant meta information> 
    } 
} 

Sie können nach wie vor Index der geo Lage in MongoDB durch Angabe das Teildokument:

> db.geo.createIndex({'geo.geometry': '2dsphere'}) 

Bitte beachten Sie, dass 2.4 nicht mehr unterstützt wird, und es gibt erhebliche Verbesserungen an dem 2dsphere Index in 2,6 und oberhalb dem beinhalten die Fähigkeit, Index mehr GeoJSON Typen (siehe https://docs.mongodb.com/v3.2/core/2dsphere/#dsphere-version-2). Die neueste Version von MongoDB ist derzeit 3.4.0.

+0

Danke für die Eingabe. Was die Version betrifft, verwende ich MongoDB in Raspbian Jessie und die einzige Version, die über 'apt-get' verfügbar ist, ist Version 2.4.x. Die neueste Version von MongoDB wird, soweit ich weiß, nicht offiziell auf ARM unterstützt. Sobald ich in eine Produktionsumgebung umziehe, werde ich natürlich upgraden. Ich wollte nur sichergehen, dass ich mich beim Prototyping nicht selbst in den Fuß geschossen habe. – ThatsRightJack

Verwandte Themen