django json serializer不实现geojson [英] django json serializer does not implement geojson

查看:179
本文介绍了django json serializer不实现geojson的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在建立一个geodjango网站的过程。在前端我有一个openlayers的地图,我想要能够在一些django url上触发ajax查询,并获得geojson。



问题是标准django json serializer不做geojson。所以我有一个模型:

  class Asset(models.Model):
objects = models.GeoManager()

url_name = models.CharField(max_length = 200)
name = models.CharField(max_length = 200)
point = models.PointField(srid = 4326)

def __unicode __(self):
return self.name

我想创建一个视图:

  def geojson_query(request):

#geographic query

...

assets = Asset.objects.all()。filter(point__contained = bb_4326)
json = serializers.serialize(json,assets)
返回HttpResponse(json)

但是,我得到一个更像这样的回复: p>

 url_name:Upper_Svaneti,
name:Upper Svaneti,
point :POINT(43.0113899999999987 42.9163899999999998)

而我想要的东西看起来像这样:

 url_name:Upp 
name:上Svaneti,
几何:{
type:Point,
coordinates:[43.011389999998787 42.9163899999999998]
}

所以我想我的问题是,实现geojson序列化程序的最好方法是什么在django没有完全滚我自己?如果要滚动自己,我从哪里开始?

解决方案

看到这个问题的答案。

将GeoQuerySet的空间数据呈现在GeoDjango上的自定义视图



您还可以查看此项目中的render_to_geojson方法。
http://geodjango-basic-apps.googlecode.com/


I am in the process of building a website on geodjango. On the front end I have a map on openlayers and I want to be able to fire ajax queries at some django url and get back geojson.

The problem is that the standard django json serializer doesn't do geojson. So I have a model like:

class Asset (models.Model):
objects = models.GeoManager()

url_name = models.CharField(max_length=200)
name = models.CharField(max_length=200)
point = models.PointField(srid=4326)

def __unicode__(self):
    return self.name

And I want to create a view:

def geojson_query(request):

#geographic query

...

assets = Asset.objects.all().filter(point__contained=bb_4326)
json = serializers.serialize("json", assets)
return HttpResponse(json)

But then I get back a response that looks more like this:

"url_name": "Upper_Svaneti", 
"name": "Upper Svaneti", 
"point": "POINT (43.0113899999999987 42.9163899999999998)"

Whereas I want something that looks like this:

"url_name": "Upper_Svaneti", 
"name": "Upper Svaneti", 
"geometry": {
"type": "Point", 
"coordinates": [43.0113899999999987 42.9163899999999998]
}

So I guess my question is, what is the best way to implement a geojson serializer in django without totally rolling my own? And if it comes to rolling my own, where do I start?

解决方案

See the answer to this question.
Rendering spatial data of GeoQuerySet in a custom view on GeoDjango

You can also look at the render_to_geojson method in this project. http://geodjango-basic-apps.googlecode.com/

这篇关于django json serializer不实现geojson的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆