Структура данных: от mongoengine до GeoJson

Недавно я разместил свой первый вопрос на StackOverflow, но я думаю, что вопрос довольно обширен и полон потенциальных ошибок. Итак, я бы начал снова, шаг за шагом, с гораздо более короткого и простого вопроса:

Как вы думаете, этот код правильный?

Цель состоит в том, чтобы структурировать файл models.py для хранения данных в моей базе данных Mongo как GeoJson. объекты.

Большое спасибо !


models.py:

# -*- coding: utf-8 -*-

from mongoengine import *
connect(‘mongodb_jsons’)

import datetime

class GeoJson(Document):
 # from a geojson object
 # save it in Mongodb with a geojson structure

    Date_created = DateTimeField(default=datetime.datetime.now)
    Location = PointField(auto_index=False) # as a list of 2 float numbers [ 10.000 , 240.000 ]
    Content1 = CharField()
    Content2 = CharField()

    meta = {'db_alias': 'mongodb_jsons', # save in DB ‘mongodb_jsons’
            'indexes': [                 # the geojson structure
                {'type' : 'Feature', {
                   'geometry':{
                        'type' : 'Point',
                        'coordinates' : ('Location', '2dsphere')
                        }, 
                   'properties':{
                       'content1' : 'Content1',
                       'content2' : 'Content2',    
                       'date_creation' : 'Date_created'
                        }
                    }
                }]
            }


person Julien_    schedule 11.06.2014    source источник
comment
Вы получаете ошибки с ним? Есть что-то, что он не делает? Я не уверен, что вы спрашиваете, когда говорите, как вы думаете, это правильно? Я не знаю проблему, которую вы пытаетесь решить... поэтому я понятия не имею, правильно ли она соответствует вашим требованиям. :)   -  person Matthew Bakaitis    schedule 20.06.2014


Ответы (1)


Это не сработает — вам нужен индекс 2dsphere для geoJson в монгодб. Почему бы не использовать PointField, как описано в документация по mongoengine.

person Ross    schedule 11.06.2014
comment
Меня беспокоит то, что ниже по течению мне нужно будет имитировать структуру [GeoJson][1] для ее обработки в моем HTML-шаблоне (она будет обрабатываться библиотекой Leaflet). Я не уверен в синтаксисе «мета». Я изменил код в своем вопросе, как вы думаете, это сработает? - person Julien_; 11.06.2014
comment
PointField сохраняет данные как действительные GeoJson, поэтому вы можете использовать их с Doc.to_json() для вывода строки json. - person Ross; 11.06.2014
comment
Ты это видел ? stackoverflow.com/questions/22940168 / - person Julien_; 12.06.2014