知道这个东西也不是一天两天了,一直没用是因为搞不清楚这个到底要怎么用,话说用dundas map,哥也从来没做成功过一张地图报表。上面这是前提,哥最近心血来潮想做几张地图的报表玩玩(别人能做出来为什么哥不能呢),然后就开始了下面痛苦的旅程。
1.先得有地图文件吧,reporting services支持shp和直接从数据库中读空间数据(哥只用过这两种方式),那么先去网上找shp的地图文件吧,网上查了一下,几乎所有的都是从中国国家地理信息系统出来的,那就去下吧。能下到的有用文件有两个,一个是省级区划,一个是县级区划。好吧,我们现在已经有地图文件了。
2.空间数据导入到数据库中,有了shp文件,那么我们如何才能导入到数据库里,这真是一件让人头痛的事。那为什么不直接用shp文件呢,a:可能会出现乱码,如果你系统和数据库不是全中文环境,那么100%会有这个问题.b:管理不便,多一个文件放在一边出错的机率会大很多,大家可以尝试一下就明白。c:不便于修改,如果地图文件本身有错的话,我们只能借助外部gis软件来修改,这样也会出理管理上的混乱.d.大家自己想吧。那么现在我们最先考虑到的应该是网上有没有软件可以直接完成这件事呢,如果有直接用不就可以了。google下来还真给我找到了,是一mvp写的,名字就叫shape2sql。激动啊,设置好点了upload to database,看着数据一行一行的写入到数据库中好开心啊,可当查看表的时候就傻了,中文全是乱码。nnd接着google,找到什么好的办法,突然想到这个软件发在codeplex那么应该会源友公开的,我修改源码应该可以吧。然后,我看到很让人发狂的说明:本软件不提供源码,不提供支持。我昏特了!那么好吧,再找找有没有其它办法。最后找到了一个python修改shp文件的库,事已至此那也只能自己动手了。哥编程很菜,一边看文档一边写终于在凌晨三点的时候顺利的把数据拼成insert语句,那个激动啊,按下F5,有一条记录出错,说是不闭合。先不理了,select一把切换到地图结果集,哥鸡冻了。虽然上面有一个省木有数据,但搞了一晚上还是把这个东西搞出来了。然后再看这条数据发现我程序取出的点和shape2sql取出的点不一样(只是这个省的数据)并且很明显我的是错的。那么即然有一个是对的,并且还是在数据库里那么我只是update就可以了,这是最快也最简单的方式。最后看着两张地图显示在reporting services里那个开心哦,虽然此时已经天亮了,哥为了搞这个破东西,一整完都没睡,哥容易吗!
3.地级市地图融合及区划,早上七点睡下,八点起来上班。估计白天要挂了,路上买了包烟,到公司接了杯浓咖啡,希望可以顶一顶。不过有时候你在努力的想事情反倒是没有睡觉的欲望了,还好当天不是很忙,哥就接着研究起来地级市的数据。网上找是肯定找不到的,网上卖的也差不多都是骗子。那么哥还是只能自己动手了,思路是先找个gis软件根据区划做一下融合,这样可以得到地级市的数据了。有时候往往想法很简单可实现起来却要人命,所以当你想不通的时候就安慰下自己:这是在中国。
gis软件搞了一堆出来,从几百K的绿色版到几个G的XX哥全搞了一遍,最后选中了一个开源软件qgis,文件100M左右,主要是可以完成我的工作。安装完成,哥就把shp导入到软件中,按区划开始融合,5分钟后将生成的文件导入到数据库中哥又傻了,这是他妈的什么地图啊,哥都看不出来上海和河南的区别!好吧,哥找原因去,过会再感谢国家!从shp文件,数据库,gis软件查了半天,终于问题锁定在区划代码上。网上找最新的区划,下载下来导入到数据库中,更新原来的表。按区划select出来的地图看上去好像可以了,那么去软件里再融合下好了。可现在的问题是如何把数据库中的数据导入到gis软件中.哥已经凌乱了!这个时候哥已经不想再去写一个写shp文件的小程序了,只能寄希望于这个qgis软件了。把菜单从头看到尾,从数据库中导成图层的有,但是没有sql server的,数据源先odbc的有,但是sql server不支持!google吧,终于给我找到了网上唯一的一篇写如何从sql server中将数据导入到qgis的文章,可恨的是公司的网络全都有打不开,快照也不行。在找了一个多小时后终于,我看到了那段代码。修改下链接输入进去,错误,再改还是错误。无语了,快疯了。最后终于知道他妈的原因了,哥把两条命令当一条命令运行了,无知害死人啊。再次融合后导入数据库,这时已经好太多了,上海是上海河南是河南。
4.纯手工修改,看到上图我真的鸡冻了,多少天的梦想终于在这一刻实现了!细看有发现有几个地方是错的,查了下表,有30+行数据区划更新,老的区划现在不存在也就算了,名字也变掉了,本来的县现在合成的区,几个县又合成了市,我唻个去。改的我头晕眼花天昏地暗。总算是可以保证正确在95%以上了。
5.后续,上面已经完成了大部分的数据准备工作,另外一些数据上的错误有空再修改一下,(名称显示,直辖市显示)。下一步准备天始做报表,然后在sharepoint 2010中用pps做成dashboard发布出来,后续有空了慢慢更新吧,上面这些差不多用了我一周时间。
PS:顺便问下,这个数据我有打算拿出来卖掉,想来需要这个地级市数据的人不在少数,我这边基本上区划,省市县的数据都好了,做中国的报表问题已经不大了。有人要买的话就留言或者站内m我吧或者google找我的联系方式,谢谢!