續前篇,既然可以在Python用命令列讀取資料,還有各線段的經緯度座標,那我何不乾脆一起把修正後的座標帶進去?比起在QGIS點放個老半天也比較簡單。
我仔細看了一下圖資裡的內容,得知資料裡每一列貯存經緯度的欄位叫做
hangzhou_wenzhou_hs2.iloc[n].geometry.wkt


對我知道很冗長,而且放在很底層的位置。若你只找到上一層的話,你只會看到轉換過後的向量圖形,如:

因為這個geometry是一種特殊的物件。因此如果直覺地用修改普通資料的方式,想直接(暴力地)賦新值進去,就會踢到鐵板像下面這樣:
linestring_new='LINESTRING (120.6843718 28.0717455, 120.6851567 28.0717212, 120.6868004 28.0715734, 120.6881804 28.0714648, 120.6888603 28.0714379, 120.6934563 28.0714466, 120.6947348 28.0714651, 120.6953718 28.0714821, 120.6959299 28.0714969, 120.6980259 28.0715527, 120.7183476 28.0720932,120.7192258 28.0721166, 120.7206746 28.0721547)'
#錯誤的方式
hangzhou_wenzhou_hs2.iloc[0].geometry.wkt=linestring_new

因此爬文後知道,必須用shapely裡面一個叫做loads的語法,把我要的東西餵進去,才能修改裡面的資料。
成功餵進去之後,您就會發現before和after的兩個座標長得不太一樣

原始的線段圖和修改後的線段圖也有類似的效果:
Before

After

回到QGIS驗證,也能得到一樣的結果。

補充說明
在執行下面這段語法的時候,裡面的"n"必須對到您那列資料的index
hangzhou_wenzhou_hs2.loc[n,'geometry']=geom
例如你如果要改Index=9的那一列資料,那你的n就必須放9。要是數字沒放對,就會改到錯的列數,這是很常見的錯誤,因此特別提醒。
