2016-02-19 57 views
0

我通過使用multi-index重建了我的數據集pandasDataFrame,現在它的格式如下。如何編寫一個Python循環將大量座標轉換爲GeoJSON LineString格式?

In [1]: df.head(12) 
Out [1]: 

enter image description here

爲了把它變成一個GeoJSONLineString格式和可視化它在地圖上,我需要寫一個Pythonloop在每個點,通過數以百萬計的衛星觀測點的每一行。作爲參考,以下示例指定GeoJSONLineString

{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] } 

然而,如在該圖中,一個線包括4個點的前三行示出不總是,在此數據集的特定行的點的數量是完全隨機的,範圍從4到幾百。

我很困惑如何寫Pythonloop,可以幫助我把我的座標爲GeoJSONLineString類型使用multi-index,例如

In [2]: df.Longitude[1][4] 
Out [2]: 128 

謝謝你的時間!

回答

0

groupbyto_json的組合似乎很好。

import pandas as pd 
import numpy as np 
import pprint 

arrays = [np.array([1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4]), 
      np.array([1, 2, 3, 1, 2, 1, 2, 3, 4, 5, 1, 2])] 

df = pd.DataFrame(np.arange(24).reshape(12,2), 
        index=arrays, columns=['Longitude', 'Lattitude']) 

dd = {"type":"Feature", 
     "geometry":{"type":"Linestring", 
        "coordinates":None 
       }, 
     "properties":{"prop0":'red', 
        "prop1":'dashed' 
        } 
    } 

for _, group in df.groupby(level=0): 
    dd["geometry"]["coordinates"] = group.to_json(orient='values') 
    pprint.pprint(dd) 

輸出:

{'geometry': {'coordinates': '[[0,1],[2,3],[4,5]]', 
       'type': 'Linestring'}, 
'properties': {'prop0': 'red', 
       'prop1': 'dashed'}, 
'type': 'Feature'} 
{'geometry': {'coordinates': '[[6,7],[8,9]]', 
       'type': 'Linestring'}, 
'properties': {'prop0': 'red', 
       'prop1': 'dashed'}, 
'type': 'Feature'} 
{'geometry': {'coordinates': '[[10,11],[12,13],[14,15],[16,17],[18,19]]', 
       'type': 'Linestring'}, 
'properties': {'prop0': 'red', 
       'prop1': 'dashed'}, 
'type': 'Feature'} 
{'geometry': {'coordinates': '[[20,21],[22,23]]', 
       'type': 'Linestring'}, 
'properties': {'prop0': 'red', 
       'prop1': 'dashed'}, 
'type': 'Feature'} 
+0

非常感謝!你的代碼運作良好! – eapsclimate

相關問題