近期项目中开始用到GIS,经过各种测试,最终选择geoserver+openlayers作为GIS解决方案,我将部份shp数据转换成mysql之后,发布到geoserver中发现无法打开,web界面的错误提示只有计算bounds时无法读取,刚开始以为是geoserver-mysql-plugin插件出问题,但是无法查看日志输出。于是开始查看mysql字段,发现the_geom字段为NULL,即geoserver无法读取到坐标值,打开生成的sql文件发现the_geom对应的值为GeometryFromText('MULTILINESTRING ((121.134869800401020 37.192777470403996 0.000000000000000 ,121.135250200136738 37.192957789870150 0.000000000000000 ))'),多出了0.000000000000000这个值,造成插入数据库时无法获取geomerty对象(即Mysql Error-1416)。
于是批量替换0.000000000000000为空,然后导入mysql数据库,发现the_geom字段已经导入成功,再次配置geoserver,问题解决。
sh2mysql解决方案:http://database.51cto.com/art/201006/203124.htm
要注意缺少crgwin1.dll时,需要安装cygwin注意选择x86版本。
shp2mysql之后geoserver无法显示地图