GeoFormalChemy—对FormalChemy的扩展,增加了对空间数据库的支持

GeoFormAlchem的Python项目详细描述


地形学是FormAlchemy的扩展 这样就可以为使用几何图形类型的模型类生成窗体 GeoAlchemy

要求

需要形式炼金术和地球炼金术>;=0.4。

安装

使用简易安装进行安装

$ easy_install geoformalchemy

手动安装用于开发

下载源代码为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_latdefault_lon
如果几何体是None,或者在创建新几何体时,映射 居中于(默认值,默认值)。否则地图居中 在几何体的质心处。
zoom
启动时的缩放级别。
map_widthmap_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_libsFalse如果有多个映射字段,或者如果需要 将js代码的加载延迟到页面加载之后。
run_js(默认值:True
如果run_js设置为False,则调用 geoformalchemy.init_map()未完成。你可以手动调用它 fs.render_fields['the_geom'].renderer.render_runjs()。你会准备好的 run_jsFalse如果要延迟映射的初始化 直到页面加载完毕。如果要将run_js设置为False 您可能还想将insert_libs设置为False

模板文件

如果要更改窗体的外观,可以修改 形式学和地学。模板文件位于文件夹中 your_app/templates/forms

geoformalchemy使用模板文件map_js.makomap.mako。在map.mako中,您可以设置 也可以用作字段修改的选项。但与现场修改不同, 模板文件中设置的选项用于所有模型的几何体字段,而opt离子 设置为字段修改仅用于设置它们的字段。

<%
# 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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在没有代码气味的情况下编写遵循Liskov替代和其他可靠原则的不可变映射?   java最新jre上的压缩字符串对旧编译代码有好处吗?   java是否可以在javascript中取消PrimeFaces menuitem onclick函数   mysql从SQL数据库中访问java中xml名称空间标记的值   从java程序打开excel文件   java在方法中使用“var”是否会使执行(并发)线程不安全?   java使搜索视图以一种关于AndroidManifest的通用方式可用。xml   java对如何准确使用正则表达式感到困惑?   mule如何访问java文件中的记录变量   java在从2D数组引发异常后继续   枚举当前设置为的java值   java当listview只有几个项目时,如何使alert对话框显示listview的所有项目?   java getTableRow()返回大于项大小的索引   c用java传输二进制文件(数据)   java更改多选列表项复选框颜色