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_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中,您可以设置 也可以用作字段修改的选项。但与现场修改不同, 模板文件中设置的选项用于所有模型的几何图形字段,而 设置因为字段修改只用于它们设置的字段。

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

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

推荐PyPI第三方库


热门话题
在Grails中集成javaapplet   动态设置片段时发生java错误   JavaSpringVelocity模板电子邮件?   SpringHateOAS中java自定义json输出   java wait()和notify()相关问题   正则表达式中的单词边界是什么?   使用外部库将项目部署到glassfish后发生java NoClassDefFoundError   java为什么在这里初始化ListNode两次?   java libGDX移动三维模型   java使线程等待另一个线程的执行   正则表达式如何在java中使用正则表达式解析给定字符串   java SWT ScrolledComposite在32768像素后切断画布生成的图像