跳转到主要内容

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 文档

配置

字段修改

几何字段的渲染可以通过附加选项进行自定义。例如,以下在自定义 FieldSetthe_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_latdefault_lon

如果几何为 None 或在创建新几何时,地图将居中于(默认_lon,默认_lat)。否则,地图将居中于几何的重心。

zoom

启动时的缩放级别。

map_widthmap_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.makomap.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 (13.5 kB 查看哈希值)

上传时间

由以下支持