要准备
- pandas
- geopandas
具体实现
思想是这样的
- 将要转化的csv文件放到List里
- 使用for循环遍历
- 在for循环内
- 使用pandas读入csv
- 选取需要进行计算的列赋值给csvFileCal
- 将NaN设置为0(这是我此处的计算需要)
- 再将算出的结果添加到csvFile末尾,这样既保留了NaN的值,又计算出了正确的结果(因为在计算中如果具有NaN,计算结果也会是NaN)
- 将DataFrame转换为GeoDataFrame(这里仅有点对象,如果你还包含面对象的话还需要考虑别的方法)
- 设定好坐标系为WGS84(espg:4326)
- 调用GeoPandas的方法输出为shapefile文件
import pandas as pd
import geopandas as gpd
# The code below is used to convert the csv file into a shapefile.
nameList = [‘india&Pakistan91_95’, ‘india&Pakistan96_00’, ‘india&Pakistan01_05’, ‘india&Pakistan06_10’, ‘india&Pakistan11_15’, ‘india&Pakistan16_20’]
for name in nameList:
csvpath = r“D:\Desktop\StuInnovate\data\GTD\筛选{}.csv”.format(name)
csvFile = pd.read_csv(csvpath)
csvFileCal <span class="token operator">=</span> csvFile<span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">'latitude'</span><span class="token punctuation">,</span> <span class="token string">'longitude'</span><span class="token punctuation">,</span><span class="token string">'nkill'</span><span class="token punctuation">,</span><span class="token string">'nwound'</span><span class="token punctuation">,</span><span class="token string">'property'</span><span class="token punctuation">,</span><span class="token string">'nhostkid'</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
csvFileCal<span class="token punctuation">.</span>fillna<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> inplace<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span> <span class="token comment">#将NaN设置为0</span>
csvFileCal<span class="token punctuation">[</span><span class="token string">'severeIndex'</span><span class="token punctuation">]</span> <span class="token operator">=</span> csvFileCal<span class="token punctuation">[</span><span class="token string">'nkill'</span><span class="token punctuation">]</span> <span class="token operator">+</span> csvFileCal<span class="token punctuation">[</span><span class="token string">'nwound'</span><span class="token punctuation">]</span> <span class="token operator">+</span> csvFileCal<span class="token punctuation">[</span><span class="token string">'property'</span><span class="token punctuation">]</span> <span class="token operator">+</span> csvFileCal<span class="token punctuation">[</span><span class="token string">'nhostkid'</span><span class="token punctuation">]</span>
csvFile<span class="token punctuation">[</span><span class="token string">'severeIndex'</span><span class="token punctuation">]</span> <span class="token operator">=</span> csvFileCal<span class="token punctuation">[</span><span class="token string">'severeIndex'</span><span class="token punctuation">]</span>
geoGDF <span class="token operator">=</span> gpd<span class="token punctuation">.</span>GeoDataFrame<span class="token punctuation">(</span>csvFile<span class="token punctuation">,</span> geometry<span class="token operator">=</span>gpd<span class="token punctuation">.</span>points_from_xy<span class="token punctuation">(</span>csvFile<span class="token punctuation">.</span>longitude<span class="token punctuation">,</span> csvFile<span class="token punctuation">.</span>latitude<span class="token punctuation">)</span><span class="token punctuation">)</span>
geoGDF<span class="token punctuation">.</span>crs <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">'init'</span><span class="token punctuation">:</span> <span class="token string">'epsg:4326'</span><span class="token punctuation">}</span>
geoGDF<span class="token punctuation">.</span>to_file<span class="token punctuation">(</span><span class="token string">r"D:\Desktop\StuInnovate\data\GTD\shp\{}.shp"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">,</span> driver<span class="token operator">=</span><span class="token string">'ESRI Shapefile'</span><span class="token punctuation">)</span>