django-rest框架的geodata扩展

django-spillwa的Python项目详细描述


https://travis-ci.org/bkg/django-spillway.svg?branch=masterhttps://coveralls.io/repos/bkg/django-spillway/badge.svg?branch=master&service=github

DjangoDjango REST Framework集成光栅和基于特征的地理数据。

溢洪道建立在伟大的Django休息框架上,通过提供 用于处理地理空间格式(如geotiff、geojson和 公里/公里z。

特别注意几何图形的快速序列化 空间后端,避免了在 Python。

基本用法

向api添加向量响应格式,如geojson、kml/kmz和svg。

# models.pyfromdjango.contrib.gis.dbimportmodelsfromspillway.queryimportGeoQuerySetclassLocation(models.Model):slug=models.SlugField()geom=models.GeometryField()objects=GeoQuerySet.as_manager()# urls.pyfromdjango.conf.urlsimporturlfromspillwayimportgenericsfrom.modelsimportLocationurlpatterns=[url(r'^locations/(?P<slug>[\w-]+)/$',generics.GeoDetailView.as_view(queryset=Location.objects.all()),name='location'),url(r'^locations/$',generics.GeoListView.as_view(queryset=Location.objects.all()),name='location-list'),]

作为geojson检索所有位置:

curl -H 'Accept: application/vnd.geo+json' 127.0.0.1:8000/locations/

将几何图形简化并重新投影到另一个坐标系:

curl -H 'Accept: application/vnd.geo+json' '127.0.0.1:8000/locations/?srs=3857&simplify=100'

任何spatial lookup 后端支持的可用于搜索。例如,找到 与特定点相交:

curl -g '127.0.0.1:8000/locations/?intersects={"type":"Point","coordinates":[-120,38]}'

还提供光栅数据支持。

# models.pyfromspillway.modelsimportAbstractRasterStorefromspillway.queryimportGeoQuerySetclassRasterStore(AbstractRasterStore):objects=GeoQuerySet.as_manager()# urls.pyfromdjango.conf.urlsimporturlfromspillwayimportgenericsfrom.modelsimportRasterStoreurlpatterns=[url(r'^rstores/(?P<slug>[\w-]+)/$',generics.RasterDetailView.as_view(queryset=RasterStore.objects.all()),name='rasterstore'),url(r'^rstores/$',generics.RasterListView.as_view(queryset=RasterStore.objects.all()),name='rasterstore-list'),]

返回json,其中包含给定边界框的二维像素值数组:

curl 'http://127.0.0.1:8000/rstores/tasmax/?bbox=-107.74,37.39,-106.95,38.40'

可以裁剪带有几何图形的光栅图像并返回 结果:

curl  -H 'Accept: application/zip' 'http://127.0.0.1:8000/rstores/?g=-107.74,37.39,-106.95,38.40'

常规视图

溢洪道使用geojson和kml/kmz扩展了rest框架的通用视图 地理数据的渲染器。这包括对功能和所有 正在使用的空间后端的可用空间查找/筛选器。

视图集

对于地理熟悉的和栅格化的模型,视图集合存在于熟悉的用法之后。 django-rest框架的模式。当前,可写光栅视图集需要 添加和测试,尽管只读的品种是可用的。

fromspillwayimportviewsetsfrom.modelsimportLocation,RasterStoreclassLocationViewSet(viewsets.GeoModelViewSet):queryset=Location.objects.all()classRasterViewSet(viewsets.ReadOnlyRasterModelViewSet):queryset=RasterStore.objects.all()

地图块

tileviewrastertileview分别可用于生成 矢量或图像贴图平铺。图像平铺需要可选的依赖关系mapnik, 所以一定要安装。在本例中,geojson或png tiles可以是 为位置地理模型请求,或为rasterstore数据集请求png平铺。 这里显示的url使用“/{z}/{x}/{y}.{format}”的方案。

fromdjango.conf.urlsimporturlfromspillwayimportviews,urlsfrom.modelsimportLocation,RasterStoreurlpatterns=[url(urls.tilepath('^locations/),views.TileView.as_view(queryset=Location.objects.all()),name='location-tiles'),url(urls.tilepath('^tiles/(?P<slug>\d+)/'),views.RasterTileView.as_view(queryset=RasterStore.objects.all()),name='map-tiles'),]

确保通过web服务器或django的配置缓存映射块 在开发环境之外提供服务时使用缓存框架。

渲染器

到目前为止,已经有了通用栅格和矢量数据格式的渲染器,即 压缩的geotiff、jpeg、png和erdas imagine,以及geojson、kml/kmz和svg。

测试

使用创建virtualenvvirtualenvwrapper, 安装依赖项并运行测试。在Python2.7上,使用 Spatialite需要启用扩展加载的pysqlite构建。在3.x上, 没有它一切都很好。

mkvirtualenv spillway
# Only the following when testing on 2.7, not needed with 3.x.
pip install --global-option=build_ext --global-option='-USQLITE_OMIT_LOAD_EXTENSION' pysqlite
pip install -r requirements.txt Pillow
make check

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
netbeans根据命名约定返回布尔类的getter的Java名称   java如何在MessageFormat中使用单引号   java如何在整数数组中只对奇数排序,而将偶数保留在其原始位置?   自定义ArrayAdapter中未定义java构造函数   java joda时间格式化程序解析yyyyymmdd(额外一小时)   java Spring引导控制器测试始终返回404   java如何提取类文件以获取该类文件中的类?   JTable java列不会显示   java Selenium Web驱动程序输出错误的Web表行数   当应用程序在mac上打开时,java SWT选项卡项会从页面上消失   java如何将html文件映射到过滤器   swing Java计算一段时间内两点之间的转换   javawebsphere和javax。xml。ws。spi。提供者:提供者组织。阿帕奇。axis2。jaxws。spi。提供者不是子类型   For循环在Java中没有按预期继续?   java如何配置gson以排除0个整数值   java读取一个由tab分隔的文件,并将单词放入ArrayList中   java我需要做什么才能让LiveConnect重新工作?   sqlservermerge2xml&使用java提取这些数据并将其存储在db表中   java如何在模型中添加新对象时通知网格