跳转到主要内容

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_latdefault_lon

如果几何形状为None或创建新的几何形状时,地图将定位在(default_lon,default_lat)。否则,地图将定位在几何形状的重心。

缩放级别

启动时的缩放级别。

map_widthmap_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.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://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 (15.4 kB 查看哈希)

上传时间 源代码

由以下支持