说Django的wfs2.0(公开GeoDjango模型字段)
django-gisserver的Python项目详细描述
django gisserver公司
说Django的wfs2.0公开地理数据。在
特点
- WFS 2.0基本实现。在
- GML 3.2输出。在
- 标准和空间滤波(FES 2.0)
- GeoJSON和CSV导出格式。在
- 可扩展的视图/操作。在
- 使用GeoDjango查询进行过滤。在
- 大型数据集的流式响应。在
文件
有关详细信息,请参阅:https://django-gisserver.readthedocs.io/
快速启动
在项目中安装模块:
pip install django-gisserver
将其添加到INSTALLED_APPS
:
创建一个显示GeoDjango字段的模型:
fromdjango.contrib.gis.db.modelsimportPointFieldfromdjango.dbimportmodelsclassRestaurant(models.Model):name=models.CharField(max_length=200)location=PointField(null=True)def__str__(self):returnself.name
编写将此模型公开为WFS功能的视图:
fromgisserver.featuresimportFeatureType,ServiceDescriptionfromgisserver.geometriesimportCRS,WGS84fromgisserver.viewsimportWFSViewfrom.modelsimportRestaurantRD_NEW=CRS.from_srid(28992)classPlacesWFSView(WFSView):"""An simple view that uses the WFSView against our test model."""xml_namespace="http://example.org/gisserver"# The service metadataservice_description=ServiceDescription(title="Places",abstract="Unittesting",keywords=["django-gisserver"],provider_name="Django",provider_site="https://www.example.com/",contact_person="django-gisserver",)# Each Django model is listed here as a feature.feature_types=[FeatureType(Restaurant.objects.all(),fields="__all__",other_crs=[RD_NEW]),]
在URLConf中使用该视图:
fromdjango.urlsimportpathfrom.importviewsurlpatterns=[path("/wfs/places/",views.PlacesWFSView.as_view()),]
现在可以在GIS应用程序中使用http://localhost:8000/wfs/places/。 它将执行以下请求:
- http://localhost:8000/wfs/places/?SERVICE=WFS&REQUEST=GetCapabilities&ACCEPTVERSIONS=2.0.0,1.1.0,1.0.0
- http://localhost:8000/wfs/places/?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=restaurant
- http://localhost:8000/wfs/places/?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=restaurant&STARTINDEX=0&COUNT=1000&SRSNAME=urn:ogc:def:crs:EPSG::28992
通过将&OUTPUTFORMAT=geojson
或{GetFeature
请求,将返回GeoJSON和CSV输出。
CSV输出的页面大小不受限制,因为它的性能非常好。在
为什么共享此代码
阿姆斯特丹市政府的“datapunt”团队为该市开发软件。 这些软件的大部分都是以开源的形式发布的,这样其他城市, 组织和公民可以利用该软件作为开发的基础和灵感 类似的软件本身。阿姆斯特丹市政府认为重要的是 用公款开发的软件也可以公开使用。在
阿姆斯特丹的工具最初是由阿姆斯特丹开发的 在这个项目中创建的概念可以在任何城市使用。在
- 项目
标签: