GeoFormalChemy—对FormalChemy的扩展,增加了对空间数据库的支持
GeoFormAlchemy2的Python项目详细描述
地形学是FormAlchemy的扩展 这样就可以为使用几何图形类型的模型类生成窗体 GeoAlchemy2。
要求
需要形式化学和地球化学2。
安装
使用简易安装进行安装:
$ easy_install geoformalchemy2
手动安装用于开发:
下载源代码为archive 或者克隆git存储库:
git clone http://github.com/camptocamp/GeoFormAlchemy.git GeoFormAlchemy
然后运行设置:
cd GeoFormAlchemy/GeoFormAlchemy python setup.py develop
在塔架应用中的使用
地形学包括一个贴纸Pylons template 建立在FormAlchemy’s administration interface之上 对于塔架。
如果要在pylons应用程序中使用geoformalchemy,请使用 地质构造模板:
$ 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 [..]
然后必须激活地学延伸。打开文件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 documentation。
配置
现场修改
可以使用其他选项自定义几何体字段的渲染。例如下面的语句 在自定义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,或者在创建新几何体时,映射 居中于(默认值,默认值)。否则地图居中 在几何体的质心处。
- zoom
- 启动时的缩放级别。
- map_width和map_height
- 显示地图的DIV容器的大小。
- base_layer
将用作背景图的OpenLayers层,例如:
('base_layer', 'new OpenLayers.Layer.OSM("OSM")')
- map_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 libs不加载在页面中,也不是geoformalchemy的默认css。如果 insert_libs设置为应用程序开发人员负责的False。 为openlayers和geoformalchemy添加脚本和样式标记。你会准备好的 insert_libs到False如果有多个映射字段,或者如果需要 将js代码的加载延迟到页面加载之后。
- 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。
模板文件
如果要更改窗体的外观,可以修改 形式学和地学。模板文件位于文件夹中 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。