2013-10-02 87 views
2

我必須讀取表示地圖的csv文件。 我的CSV是這樣(數據塊):/將csv數據繪製爲地圖 - Python

"","x","y","sim1","sim2","sim3","sim4","sim5","sim6","sim7","sim8","sim9","sim10","sim11","sim12" 
"1",181180,333740,5.56588745117188,6.29487752914429,7.4835410118103,5.75873327255249,6.62183284759521,5.81478500366211,4.85671949386597,5.90418815612793,6.32611751556396,6.99649047851562,6.52076387405396,5.68944215774536 
"2",181140,333700,6.36264753341675,6.5217604637146,6.16843748092651,5.55328798294067,7.00429201126099,6.43625402450562,6.17744159698486,6.72836923599243,6.38574266433716,6.81451606750488,6.68060827255249,6.14339065551758 
"3",181180,333700,6.16541910171509,6.44704437255859,7.51744651794434,5.46270132064819,6.8890323638916,6.46842670440674,6.07698059082031,6.2140531539917,6.43774271011353,6.21923875808716,6.43355655670166,5.90692138671875 

其中第一列顯示有多少對x,y座標我有,X和Y一直經度/緯度硅錳一個屬性的值用於模擬#N。

使用D3,我可以快速讀取這個CSV和顯示它就像一張地圖,它代表:

d3.csv("https://dl.dropboxusercontent.com/u/11442023/Geostatistic/sim100.csv", function(error, data) { 
if (error) { //If error is not null, something went wrong. 
    console.log("Error loading sim100 data."); 
    console.log(error); //Log the error. 
} else {  //If no error, the file loaded correctly. Yay! 
    console.log("Data sim100 loaded successfully!"); 
    //Include other code to execute after successful file load here 
    simulationDataset = data; 
    scaleX = d3.scale.linear().domain([d3.min(simulationDataset, function(d) {return d.x;}), d3.max(simulationDataset, function(d) { return d.x; })]); 
    scaleY = d3.scale.linear().domain([d3.min(simulationDataset, function(d) {return d.y;}), d3.max(simulationDataset, function(d) { return d.y; })]); 
    } 
}); 

enter image description here

我已經保存在一個numpy的數組:

np.loadtxt("Data/sim.csv", delimiter=',', usecols=range(1,4), skiprows=1) 

在Python中,我不知道我該怎麼做到這一點。此外,除了繪製模擬地圖之外,我還要保存這個矩陣,以備將來需要做的工作。但是,因爲x和y是經度/緯度,所以我沒有像(0,0)(0,1)(0,2)這樣的點,就像一個簡單的矩陣。但我不知道是否有像上面提到的那樣來擴展域。

我想過尋找最大/最小經度和緯度來定義我的矩陣大小,並且他們做了一些微積分來適合每一對經度/緯度到這個結構中。但是這對我來說似乎不是一個好方法,並且已經看到了我看到Python可以做的所有事情,我想這存在一個更好的解決方案。

我最想知道的是,是否有一個「魔術」函數將這些數據保存在一個有意義的矩陣中(對所有經度/緯度索引進行轉換並將值保存在此矩陣的索引中),或者如果我必須做我認爲的事情,找到最小/最大值,並與翻譯工作。

在此先感謝。

+2

提示:通常,當我想弄清楚如何使用'matplotlib'繪製某些東西時,我會轉到[gallery](http://matplotlib.org/gallery.html)並尋找類似的東西。 – DSM

+0

你能顯示你的R代碼嗎? –

回答

-2

您應該能夠相當容易地編寫一些解析該CSV並將數據輸入到數組中的數據。 Numpy是科學數據計算最常用的模塊之一。從那裏,你可以使用matplotlib或mayavi來提供數據的圖形表示。

+0

我已經把它放在一個numpy數組中。但除了繪製這個(我目前無法做到這一點),我必須將其保存爲一個矩陣。 – pceccon