【Django基础入门】空间数据库查询
来源:互联网 发布:ubuntu 17.04 iso安装 编辑:程序博客网 时间:2024/05/18 23:25
1 :在views.py中
//阿里云地图之地址转地理坐标 http://ditu.aliyun.com/jsdoc/geocode_api.html 里面有返回的数据格式。
//参考geopy
address = smart_str(city.name + address).replace(' ','')import tracebackimport xml.dom.minidomfrom urllib2 import urlopenfrom sys import version_infofrom apps.address.models import Cityfrom apps.org.models import Vresourcefrom django.utils.encoding import smart_strfrom xml.parsers.expat import ExpatError################################Quick Search###########################################def search(request): qs = Vresource.objects.all() q = request.GET.get('q', '') result = util.ali_getlocation(q) result = simplejson.loads(result) distance = request.GET.get('distance', '1') if q != '': myfilter = Q() q = q.split(" ") for i in q: myfilter = myfilter|Q(name__icontains=i)|Q(address__icontains=i)|Q(traffic_info__icontains=i) if result['level'] != -1: geom = fromstr("POINT(%s %s)" % (result['lon'],result['lat'])) distance_from_point = {'km':distance} qs = qs.filter(geometry__distance_lte=(geom, D(**distance_from_point))) myfilter = myfilter|Q(geometry__distance_lte=(geom, D(**distance_from_point))) qs = qs.filter(myfilter) return render_to_response('org/search.html', {'results':qs}, context_instance=RequestContext(request))###############################ali_getlocation##########################################def ali_getlocation(address, city_id=1): try: city = City.objects.get(id=city_id) address = smart_str(city.name + address).replace(' ','').replace(' ','') page = urlopen('http://gc.ditu.aliyun.com/geocoding?a=%s' %address) page = decode_page(page) return page except: print "Unexpected error:" tb = traceback.format_exc() print tb def get_encoding(page, contents=None): # TODO: clean up Py3k support if version_info < (3, 0): charset = page.headers.getparam("charset") or None else: charset = page.headers.get_param("charset") or None if charset: return charset if contents: try: return xml.dom.minidom.parseString(contents).encoding except ExpatError: passdef decode_page(page): contents = page.read() # HTTP 1.1 defines iso-8859-1 as the 'implied' encoding if none is given encoding = get_encoding(page, contents) or 'iso-8859-1' # TODO: clean up Py3k support if version_info < (3, 0): return unicode(contents, encoding=encoding).encode('utf-8') else: return str(contents, encoding=encoding) ########################################################################################
2 :输出
{"cityName":"","address":"江苏省,苏州市,虎丘区,","level":5,"alevel":2,"lat":31.28723,"lon":120.55216}
转载请注明出处!
- 【Django基础入门】空间数据库查询
- 【Django基础入门】ManyToManyField跨越中间表查询
- django数据库查询
- python django 数据库查询
- django查询数据库
- python django 数据库查询
- Django 的数据库查询
- Django 数据库查询
- python django 数据库查询
- django查询数据库
- Django 数据库查询优化
- Django 的数据库查询
- python django 数据库查询
- Django 数据库查询
- django 数据库查询
- Django 数据库查询
- python Django 数据库查询
- django查询数据库要点
- viewDidUnload 和 dealloc 的区别
- MFC中怎样读取一个JPG文件或BMP位图文件
- android activity之间的传值
- 判断几号是星期几的算法
- Java对list进行排序
- 【Django基础入门】空间数据库查询
- 如何编写Linux设备驱动程序
- Oracle 调优读书笔记二
- AOP深刻理解
- Spere LCS2
- k-v-o 扫盲
- SQL 算出一个字符串逗号隔开的字符串数量
- ORA-00257:archiver error.Connect internal only,until freed
- 【转】Libevent使用摘要