GeoFormAlchemy - FormAlchemy的一个扩展,它支持空间数据库
项目描述
GeoFormAlchemy是FormAlchemy的扩展,使得为使用GeoAlchemy几何类型的模型类生成表单成为可能。
要求
需要FormAlchemy和GeoAlchemy >=0.4。
安装
使用easy_install安装:
$ easy_install geoformalchemy
开发时的手动安装:
下载源代码作为存档或克隆GIT存储库
git clone http://github.com/camptocamp/GeoFormAlchemy.git GeoFormAlchemy
然后运行设置
cd GeoFormAlchemy/GeoFormAlchemy python setup.py develop
在Pylons应用中使用
GeoFormAlchemy包括一个基于Pylons模板的Paster模板,它建立在FormAlchemy的Pylons管理界面的基础上。
如果您想在Pylons应用中使用GeoFormAlchemy,请使用GeoFormAlchemy模板运行paster create
$ paster create -t geo_fa your_app [..] Enter admin_controller (Add formalchemy's admin controller) [False]: True Enter template_engine (mako/genshi/jinja2/etc: Template language) ['mako']: mako Enter sqlalchemy (True/False: Include SQLAlchemy 0.5 configuration) [False]: True [..]
然后需要启用GeoFormAlchemy扩展。打开文件your_app/forms/__init__.py,并在文件末尾添加以下行
# [..] from geoformalchemy.base import GeometryFieldRenderer from geoalchemy import geometry FieldSet.default_renderers[geometry.Geometry] = GeometryFieldRenderer
GeoFormAlchemy现在已设置好,几何字段表单中将会显示地图。请注意,您需要告诉FormAlchemy为哪些模型类创建表单。为此,请将模型类导入文件your_app/model/__init__.py中。更多详细信息请参阅FormAlchemy文档。
配置
字段修改
可以通过额外的选项自定义几何字段的渲染。例如,以下对自定义FieldSet中的字段the_geom调用的语句(在文件your_app/forms/__init__.py内部)更改了背景地图
Place = FieldSet(model.places.Place) Place.the_geom.set(options=[ ('map_srid', 900913), ('base_layer', 'new OpenLayers.Layer.OSM("OSM")') ])
GeoFormAlchemy提供了以下选项
- default_lat和default_lon
如果几何形状为None或创建新的几何形状时,地图将定位在(default_lon,default_lat)。否则,地图将定位在几何形状的重心。
- 缩放级别
启动时的缩放级别。
- map_width和map_height
显示地图的DIV容器的尺寸。
- 基本层
用作背景地图的OpenLayers层,例如
('base_layer', 'new OpenLayers.Layer.OSM("OSM")')
- 地图SRID
如果地图使用与几何形状不同的CRS,则将几何形状重新投影到该CRS。例如
('map_srid', 900913)
- openlayers_lib
OpenLayers JavaScript库的路径,例如如果OpenLayers.js位于your_app/public/js/lib/OpenLayers.js,请使用以下路径
('openlayers_lib', '/js/lib/OpenLayers.js')
- show_map(默认:True)
如果show_map设置为False,则几何形状将以WKT字符串的形式显示在文本输入字段中。
- insert_libs(默认:True)
如果insert_libs设置为False,则OpenLayers和GeoFormAlchemy JavaScript库不会被加载到页面中,也不会加载GeoFormAlchemy的默认CSS。如果insert_libs设置为False,则应用程序开发者负责添加OpenLayers和GeoFormAlchemy的脚本和样式标签。如果您有多个地图字段,或者希望在页面加载后延迟加载JS代码,请将insert_libs设置为False。
- run_js(默认:True)
如果run_js设置为False,则不会执行对geoformalchemy.init_map()的调用。您可以手动调用它,使用fs.render_fields['the_geom'].renderer.render_runjs()。如果您想要在页面加载后延迟初始化地图,请将run_js设置为False。如果您想要将run_js设置为False,您可能还需要将insert_libs设置为False。
模板文件
如果您想更改表单的外观,可以修改FormAlchemy和GeoFormAlchemy使用的模板文件。模板文件位于文件夹your_app/templates/forms中。
GeoFormAlchemy使用了模板文件 map_js.mako 和 map.mako。在 map.mako 中,您可以设置大多数您可以用作字段修改的选项。但是,与字段修改不同,模板文件中设置的选项用于所有模型的几何字段,而作为字段修改设置的选项仅用于它们被设置的字段。
<% # default configuration options that will be used when # no field options were set options = {} options['default_lon'] = 10 options['default_lat'] = 45 options['zoom'] = 4 options['map_width'] = 512 options['map_height'] = 256 options['base_layer'] = 'new OpenLayers.Layer.WMS("WMS", "http://labs.metacarta.com/wms/vmap0", {layers: "basic"})' options['openlayers_lib'] = 'http://openlayers.org/api/OpenLayers.js' %>
如果您想自定义OpenLayers地图,例如添加额外的OpenLayers控件或添加第二个背景层,请修改文件 map_js.mako。
项目详情
GeoFormAlchemy-0.4.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4431f70c54d57b72b00bb993272505cf94488e80f99ac9f5737f520e12327c9d |
|
MD5 | 1ee72e734040017f4ef7f194f24c4f4c |
|
BLAKE2b-256 | d16a5121d224efd1e342bdb31bd09b3ee3ad970a635e39e2ca7f3bf2f2f0b50a |