sql server 2008中空間數據的應用

 知道這個東西也不是一天兩天了,一直沒用是因爲搞不清楚這個到底要怎麼用,話說用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找我的聯繫方式,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章