Log4Classicning

好读书 不求甚解 每有会意 便欣然忘食

将MySQL作为GeoServer数据源方法和注意事项
2007年10月22日

MySQL是应用十分广泛的开源数据库,它在空间扩展方面的功能虽然还不完善,但是已经足够可以作为地图服务器的数据源。GeoServer就可以直接以MySQL数据库作为数据源提供网络地图服务。

首先下载GeoServer的MySQL Plugin,在GeoServer的官方网站上就有。其实所谓的MySQLPlugin就是GeoTools的MySQL模块,所有如果你有GeoTools的话,直接把gt2-mysql拷贝到GeoTools的WEB-INF/lib目录即可。除此以外,高版本的MySQLJDBC Connector也是必须的,版本可以参考GeoTools附带的:3.0.10。做好这些之后即可启动GeoServer。

进入配置-数据-名称空间一项,新建名称空间,前缀即数据库的名字(Database),URI暂时按照规范填写。GeoServer对这里填如的URI有限制,必须以http开头,但是这对MySQL后面的连接是错误的,所以这里填写的只是暂时的内容,后面需要手动更改。

进入配置-数据-数据源一项,新建数据源,选择MySQL数据源。填写必要信息,其中名称空间需要选择和刚才新建的(即和数据库名称相同的)。


之后就可以在现有数据源的基础上新建FeatureType了,具体方法可以Google“GeoServer安装和使用”或者在我之前的文章里找到。

新建完FeatureType后GeoServer会报如下错误:

org.geotools.data.DataSourceException: 
SQL Error building FeatureType for cities Syntax error or access violation, message from server: 
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '://localhost:3306/geodatabase.cities WHERE 0=1' at line 1"

这就是由于我们名称空间的设置有误造成的。

打开GeoServer的数据文件目录,编辑catalog.xml。找到

<namespace prefix = "geodatabase" uri = "http://localhost:3306/geodatabase" />

修改为我们想要的样子:

<namespace prefix = "geodatabase" uri = "geodatabase" />


重启GeoServer,可能出现如下报错,造成GeoServer无法启动:

[Fatal Error] :1:1: Content is not allowed in prolog.

这是用于GeoServer采用dom4j解析配置文件catalog.xml,我们在保存的时候很可能将该该文件保存为了带BOM签名的UTF8。这将导致dom4j解析失败,因此要把配置文件保存为不带BOM签名的UTF8。这个选项在高级一些的编辑器中都可以设置。


开源GIS里绝不是仅仅有PostgreSQL/PostGIS,很多功能MySQL就足可以完成。

« 免费的杀毒软件和防火墙iBatis »
  • quote 2.mreay
  • 问个问题,以WMS方式向geoserver请求图层时,图层的宽和高是如何计算出来的?
    getCapabilities时取来图层信息似乎不能直接使用。近来正打算用Geoserver做这方面开发,希望你的加复。
  • 2007-11-8 15:46:05 回复该留言
  • quote 4.Classicning
  • http://www.classicning.com/blog

  • http://localhost:8181/geoserver/wms?service=WMS&request=GetMap&LAYERS=bou2_4p&VERSION=1.1.1&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT=image%2Fjpeg&SRS=EPSG%3A4326&BBOX=-180%2C-90%2C180%2C270&WIDTH=256&HEIGHT=256

    我不太明白图层的宽高是什么意思,你可以看上面这个url的形式,其中
    bbox指定的是返回的空间区域
    width和height都是生成图片的大小
    就是把bbox中的空间信息绘制在256*256的图片上
  • 2007-11-8 16:22:57 回复该留言
  • quote 5.mreay
  • WIDTH=256&HEIGHT=256这个256从哪里来,如果这里设置不当的话,按OGC的WMS标准文档会使图片扭曲?
    我如何知道当前的Layer宽高的合适比例应是多少呢?
  • 2007-11-8 23:47:24 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Search

站点统计

  • 文章总数:745
  • 评论总数:2630
  • 引用总数:4
  • 浏览总数:5693
  • 留言总数:42
  • 当前主题:ClassicningDailyLog Style
  • 当前样式:footoo

网站收藏

图标汇集

  • Creative Commons License
  • Widgetize!
  • visitor stats

Powered By Z-Blog 1.8 Spirit Build 80722

2004 - 2007 Classicning.com. 苏ICP备06039259号.