geodjango在webgis中的应用(附pandas与RESTful)

geodjango模块在webgis中的应用

1.项目简介

项目主要应用django的geodjango模块及postgres数据库的空间数据扩展模块,对今后其它项目中的gis功能做基础储备。

2.涉及的软件及扩展包

  • django(包含geodjango)
  • postgres及postgis
  • geos扩展
  • gdal扩展
  • proj4扩展
  • django-rest-framework

3.已测试的功能

1.查询某个未知点在哪个国家

在url中输入相应的经纬度,以restful的规范进行处理,返回json格式的国家信息。其中国家信息添加到admin的管理平台上,可进行数据的各类基本操作。

2.判断某个点是否在某个多边形区域内部

从包含多边形边界点的excel表中读取点数据,形成一个多边形对象,判断点是否在多边形内部,返回结果为json数据,含true则在内部,反之在外部。

pandas模块在在django-restful-framework中的使用

1.项目简介

主要尝试在django-restful-framework中使用pandas,以便在数据处理、统计功能比较复杂时能够快速解决问题。

2.使用过程

2.1 新建pandas-test应用

python manage.py createapp pandas-test

2.2 引入django-pandas

pip install django-pandas

INSTALLED_APPS = [
    'django.contrib.admin',
      ......
    'pandas_test',
    'django_pandas'
]

2.3 数据库连接略

2.4 模型

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models

class Province(models.Model):
    name = models.CharField(max_length=10)
    def __unicode__(self):
        return self.name
 
class City(models.Model):
    name = models.CharField(max_length=5)
    province = models.ForeignKey(Province, related_name = "city")
    def __unicode__(self):
        return self.name
 
class Person(models.Model):
    firstname  = models.CharField(max_length=10)
    lastname   = models.CharField(max_length=10)
    visitation = models.ManyToManyField(City, related_name = "visitor")
    def __unicode__(self):
        return self.firstname + self.lastname

2.5 视图的做法

-- coding: utf-8 --

from future import unicode_literals

from django.shortcuts import render

from rest_framework.views import APIView

from rest_framework.response import Response

from rest_framework import status

from pandas_test.models import Person

from django_pandas.io import read_frame

import json

class  PersonList(APIView):
    def get(self, request, format=None):
        persons = Person.objects.all()
        person_df=read_frame(persons,index_col='id') 转为dataframe格式的数据
        person_js=person_df.to_json(orient="records") 转为json格式的数据
        p=json.loads(person_js) json转为对象
        return Response(p)`

你可能感兴趣的:(geodjango在webgis中的应用(附pandas与RESTful))