您的当前位置:首页正文

geodjango例子测试

来源:要发发知识网

利用图层的基本信息进行测试​import osimport worldworld_shp=os.path.abspath(os.path.join(os.path.dirname(world.file),'data/TM_WORLD_BORDERS-0.3.shp'))​from django.contrib.gis.gdal import DataSourceds = DataSource(world_shp)print ds#打印数据的图层数print len(ds)#获取第一层图层lyr = ds[0]print lyr#获取图层几何类型print lyr.geom_type#获取要素数print len(lyr)#获取坐标srs = lyr.srsprint srsprint srs.proj4#获取图层字段信息及字段类型print lyr.fields[fld.name for fld in lyr.field_types]#打印各要素的点信息for feat in lyr: print feat.get('NAME'), feat.geom.num_points#获取具体要素的详细信息 feat = lyr[234]print feat.get('NAME')geom = feat.geomprint geom.wktprint geom.json

url.pyurlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^api/gis/country/(?P<position>[+-]?\d.\d [+-]?\d.\d)$', CountryQuery.as_view()), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),]

settings.pyINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.gis', 'world', 'rest_framework',]

将模型序列化
from rest_framework import serializersfrom .models import WorldBorder​class WorldBorderSerializer(serializers.ModelSerializer): class Meta: model = WorldBorder fields = ('name',)
返回查询到的国家

-- coding: utf-8 --from future import unicode_literals​from django.shortcuts import render​# Create your views here.from rest_framework.views import APIViewfrom .models import WorldBorderfrom .serializers import WorldBorderSerializerfrom rest_framework.response import Responsefrom rest_framework import permissions​class CountryQuery(APIView): def getCountryObj(self, position): print position #try: return WorldBorder.objects.filter(mpoly__contains=position)[0] #except: #raise Http404 def get(self, request, position, format=None): position = 'POINT(' + position + ')' country = self.getCountryObj(position) return Response( WorldBorderSerializer(country).data )