geoserver的一点总结

由于有个项目有可能使用mysql 数据库, 而且需要gis 来配合. 以前一个电力的项目数据库使用的是sql server,gis 的数据库使用的是 postgis.

    由于mysql 本身也支持 gis. 所以这次打算应用部分和gis 部分都采用mysql 来存储.

客户提供的原始地图是mapinfo 格式, 由于使用的gis 服务器 GeoServermapinfo 支持的还不够稳定和中文的问题, 所以需要把mapinfo 地图导到mysql 数据库中. 凭借以前的经验利用ogr2ogr 直接将mapinfo 地图导到postgis, 会存在些中文问题, 需要先转换为shp 格式, 然后在利用shp2pgsql.exe 导到postgis.

   有关ogr2ogr , 由于ogr2ogr 将地图导到数据库中没有做编码处理, 所以如果地图中存在中文字就会出错. 下载gdal1.5.4, 然后加入编码处理部分,打造自己的 ogr2ogr.

  对于geoserver 来说, 利用udig 来生成样式是最合适不过的了. 但由于udig1.1.1 以前的版本, 显示mysql 的中文都是?, 而且中文字段也不能用, 查看udig 使用的库文件才发现, 它使用的geotools 的版本为 2.2.3,其mysql的jdbc drivermysql-connector-java-3.0.10.jar,可能是由于该jdbc对中文支持不大好的原因吧.本来打算将udig1.1.1的geotools替换为2.5.4版本,但总感觉有点是小小的顽疾却要动个大手术,得不偿失。同时又想,udig1.2版本的geotools会不会升级能,抱着试试看的心理下载了udig1.2 M3,查看geotools库,已经升级到到了2.6版本。

    利用udig1.2 M3导入mysql的gis数据,发现根本不能使用,真是失望。不知道M4版会不会遇到同样的问题呢。还是自己动手丰衣足食吧,下载udig m3的sdk,按照文档配置好(jre采用带gdal的,要不有可能有问题),经过调试修改了几个文件后,udig1.2导入mysql数据好用了。

    1.将gt-h2-2.6-SNAPSHOT.jar包中的mysql文件夹删除

    2.修改net.refractions.udig.catalog.mysql库中的文件 MySqlDialect

    加入

static final Param SCHEMA = new Param( "schema" , String. class , "mysql schema" , false , "" );

    3 .修改 net.refractions.udig.catalog.ui 库中的文件 TableSelectionTab

找到

public class FilteringContentProvider extends ArrayContentProvider implements IContentProvider

在该类中,找到

boolean schemaMatch = filter.matcher(table. schema .toLowerCase()).matches();

然后做如下修改

boolean schemaMatch = true ;

                    if (table. schema != null && table. schema .length()>0)

                       schemaMatch = filter.matcher(table. schema .toLowerCase()).matches();

 

希望M4的版本一切都好用。

 

你可能感兴趣的:(MySQL,JDBC,SQL,Server,.net,应用服务器)