GeoJSON arbeiten mit Mungo/Mongodb Node.js

Ich Baue eine map die web-app mit dem MEEN-stack mit Node.js -, Express -, Mongo, Mungo-und Mapbox-api.

Bisher wurde es spannend. Die Daten, die ich anzeigen lassen möchten Polygone, die aus einem shapefile, dass Attribute zugeordnet.

Bisher habe ich es geschafft zum laden der Daten in Mongodb und konfigurieren eines Mongoose Modell mit einem schema. In der Knoten-app, die ich auf die Daten zugreifen kann, aber nicht laden Sie es in die anzeigen-api.

Bekomme ich die Fehlermeldung "Uncaught Error: Invalid GeoJSON-Objekt."

Vom inspizieren des Objekts im devtools-Konsole kann ich sehen, dass die geometrie-Datensatz ist leer. Ich nehme an, dies wird durch eine fehlerhafte Konfiguration in das schema.

Unten einen Datensatz aus der Mongodb Befehlszeile. Ich entfernte ein paar Elemente zum Schutz der Privatsphäre. Es sieht aus wie erwartet:

    {
    "_id" : ObjectId("56c77259336aac299181a207"),
    "type" : "Feature",
    "properties" : {
        "TNRTPCD" : "P",
        "TNRSBTPCD" : "C",
        "PRCNTOWNER" : 100,
        "NTRTMSTMP" : "20140908161622",
        "TNRSBTPDSC" : "CLAIM",
        "TRMNTNTPDS" : null,
        "TAG_NUMBER" : null,
        "OBJECTID" : 40495,
        "NTRSRD" : "MTA_ONLINE",
        "NUM_OWNERS" : 1,
        "PROTECTED" : "N",
        "PDTSRD" : "MTA_ONLINE",
        "TNRTPDSCRP" : "Placer",
        "TNRNMBRD" : 1030842,
        "RVSNNMBR" : 0,
        "FCODE" : null,
        "TRMNTNDT" : null,
        "RNHCTRS" : 20.3496,
        "TTLTPCD" : "PCX"
    },
    "geometry" : {
        "type" : "Polygon",
        "coordinates" : [
            [
                [
                    -121.88883540217063,
                    50.97489195799901,
                    0
                ],
                [
                    -121.88883523174192,
                    50.97072525131302,
                    0
                ],
                [
                    -121.8950854466247,
                    50.97072527980969,
                    0
                ],
                [
                    -121.89508560169767,
                    50.97489198254216,
                    0
                ],
                [
                    -121.88883540217063,
                    50.97489195799901,
                    0
                ]
            ]
        ]
    }
}

Hier ist der code von meinem Modell-Datei:

    //Claim Model

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

//Schema Defined Here
var claimSchema = new Schema({
  gid: Number,
  tnrtpcd: String,
  ttltpdsc: String,
  tnrsbtpcd: String,
  prcntowner: Number,
  ntrtmstmp: String,
  tnrsbtpdsc: String,
  owner_name: String,
  trmntntpds: String,
  tag_number: String,
  objectid: Number,
  gdtdt: String,
  ntrsrd: String,  
  claim_name: String,
  num_owners: Number,
  clientnum: Number,
  issue_date: String,
  protected: String,
  pdtsrd: String,
  pdttmstmp: String,
  tnrtpdscrp: String,
  tnrnmbrd: Number,
  rvsnnmbr: Number,
  fcode: String,
  trmntndt: String,
  rnhctrs: Number,
  ttltpcd: String,
  geometry: { type: [String], index: '2dsphere'}
}, { collection : 'docs' });

mongoose.model('Claim', claimSchema);

Routing scheint zu funktionieren in der app.js da bin ich auf die Daten zugreifen. Hier ist der relevante Teil des Codes in meine Datei anzeigen:

script.
L.mapbox.accessToken = 'pk.[ommited]';

//- var geojson = mongoose.model('Claim').find({'properties.CLIENTNUM': 278107});
 var geojson = $.getJSON('/claims/nick',function(result){
        return result;
    });
L.mapbox.map('map', 'mapbox.outdoors')
  .featureLayer.setGeoJSON(geojson);

Also die große Frage ist, wie kann ich richtig definieren das schema für den geometrie-Daten? Unter der Annahme, dass ist mein problem.

Als eine Seite Bedenken: Ist das server-side-rendering von geojson-Daten oder client side?

InformationsquelleAutor ngust | 2016-02-21

Schreibe einen Kommentar