GeoFormAlchemy - 为FormAlchemy添加对空间数据库支持的扩展
项目描述
GeoFormAlchemy是FormAlchemy的一个扩展,它使得为使用GeoAlchemy2的几何类型的模型类生成表单成为可能。
要求
需要FormAlchemy和GeoAlchemy2。
安装
使用easy_install安装:
$ easy_install geoformalchemy2
开发时的手动安装:
下载源代码作为存档或克隆GIT仓库
git clone http://github.com/camptocamp/GeoFormAlchemy.git GeoFormAlchemy
然后运行设置
cd GeoFormAlchemy/GeoFormAlchemy python setup.py develop
在Pylons应用程序中使用
GeoFormAlchemy包含一个基于FormAlchemy的PylonsPaster模板,该模板基于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 或在创建新几何时,地图将居中于(默认_lon,默认_lat)。否则,地图将居中于几何的重心。
- zoom
启动时的缩放级别。
- map_width 和 map_height
显示地图的 DIV 容器的尺寸。
- base_layer
用作背景地图的 OpenLayers 图层,例如
('base_layer', 'new OpenLayers.Layer.OSM("OSM")')
- map_srid
如果地图使用与几何不同的坐标系,则几何将被重新投影到该坐标系。例如
('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,您可能还希望将 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://vmap0.tiles.osgeo.org/wms/vmap0", {layers: "basic"})' options['openlayers_lib'] = 'http://openlayers.org/api/OpenLayers.js' %>
如果您想自定义 OpenLayers 地图,例如添加其他 OpenLayers 控件或添加第二个背景层,请修改文件 map_js.mako。
项目详情
GeoFormAlchemy2-2.0dev3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 25236f9fc26bf976e9086da53cbbcc3ac640c74314abaa4412642348b6705756 |
|
MD5 | 1e0deecb700415225062b67f4d6db4d7 |
|
BLAKE2b-256 | 396e01e60c93b5fd9713294d10d6a3dcbceb0963137274e1d9717f869c6fbfb4 |