-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
30 lines (24 loc) · 16 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>代码绘制标准中国版图</title>
<url>/2020/05/08/%E4%BB%A3%E7%A0%81%E7%BB%98%E5%88%B6%E6%A0%87%E5%87%86%E4%B8%AD%E5%9B%BD%E7%89%88%E5%9B%BE/</url>
<content><![CDATA[<p><img src="/2020/05/08/%E4%BB%A3%E7%A0%81%E7%BB%98%E5%88%B6%E6%A0%87%E5%87%86%E4%B8%AD%E5%9B%BD%E7%89%88%E5%9B%BE/output_9_0.png" alt="png"></p>
<p>基于Python的Basemap模块,绘制标准中国版图!</p>
<a id="more"></a>
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">from</span> mpl_toolkits.basemap <span class="keyword">import</span> Basemap</span><br><span class="line"><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</span><br><span class="line"><span class="keyword">from</span> mpl_toolkits.axes_grid1.inset_locator <span class="keyword">import</span> zoomed_inset_axes</span><br><span class="line"><span class="keyword">from</span> matplotlib.patches <span class="keyword">import</span> Polygon</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br></pre></td></tr></table></figure>
<p>lambert投影:</p>
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"><span class="comment"># 读取省份编码</span></span><br><span class="line">df = pd.read_excel(<span class="string">'省份编码.xls'</span>)</span><br><span class="line">color = list(df[<span class="string">'color'</span>])</span><br><span class="line">code = list(df[<span class="string">'ProvinceID'</span>])</span><br><span class="line">name = list(df[<span class="string">'ProvinceNameC'</span>])</span><br><span class="line"></span><br><span class="line">fig = plt.figure(figsize=(<span class="number">10</span>, <span class="number">10</span>))</span><br><span class="line">ax = fig.add_subplot(<span class="number">111</span>)</span><br><span class="line"><span class="comment"># 陆地和海洋设色</span></span><br><span class="line">map1.fillcontinents(color=<span class="string">'#ADADAD'</span>,lake_color=<span class="string">'#ADADAD'</span>)</span><br><span class="line">map1.drawlsmask(land_color=<span class="string">'#ADADAD'</span>,ocean_color=<span class="string">'#B0E2FF'</span>,resolution=<span class="string">'h'</span>)</span><br><span class="line"><span class="comment"># 添加省界线和国界线</span></span><br><span class="line">map1.readshapefile(<span class="string">'D:/map/China_2020/province'</span>,<span class="string">'province'</span>)</span><br><span class="line">map1.readshapefile(<span class="string">'D:/map/China_2020/border'</span>,<span class="string">'border'</span>)</span><br><span class="line"><span class="comment"># 陆地界线和海洋界线设色</span></span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map1.border_info, map1.border):</span><br><span class="line"> <span class="keyword">if</span> info[<span class="string">'Name'</span>] == <span class="string">'land'</span>:</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map1.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#8B0000'</span>)</span><br><span class="line"> <span class="keyword">if</span> info[<span class="string">'Name'</span>] == <span class="string">'ocean'</span>:</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map1.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#6495ED'</span>)</span><br><span class="line"><span class="comment"># 省市设色</span></span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map1.province_info, map1.province):</span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> poly = Polygon(shp, facecolor=color[name.index(info[<span class="string">'省'</span>])],</span><br><span class="line"> edgecolor=color[name.index(info[<span class="string">'省'</span>])],lw=<span class="number">1</span>)</span><br><span class="line"> ax.add_patch(poly)</span><br><span class="line"> <span class="keyword">except</span>:</span><br><span class="line"> <span class="keyword">pass</span></span><br><span class="line"><span class="comment"># 添加九段线并设色</span></span><br><span class="line">map1.readshapefile(<span class="string">'D:/map/China_2020/nine_line'</span>,<span class="string">'nine_line'</span>)</span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map1.nine_line, map1.nine_line):</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map1.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#8B0000'</span>)</span><br><span class="line"><span class="comment"># 绘制经纬度标签和比例尺</span></span><br><span class="line">map1.drawmeridians(np.arange(<span class="number">0</span>, <span class="number">360</span>, <span class="number">10</span>), labels=[<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>], color=<span class="string">'grey'</span>)</span><br><span class="line">map1.drawparallels(np.arange(<span class="number">-90</span>, <span class="number">90</span>, <span class="number">10</span>), labels=[<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>], color=<span class="string">'grey'</span>)</span><br><span class="line">map1.drawmapscale(<span class="number">90</span>,<span class="number">18</span>,<span class="number">100</span>,<span class="number">20</span>,<span class="number">1500</span>,barstyle=<span class="string">'fancy'</span>)</span><br><span class="line"><span class="comment"># 添加南海附图</span></span><br><span class="line">ax = fig.add_axes([<span class="number">0.771</span>, <span class="number">0.208</span>, <span class="number">0.19</span>, <span class="number">0.19</span>],frameon=<span class="literal">False</span>)</span><br><span class="line">axins = zoomed_inset_axes(ax, <span class="number">0.04</span>, loc = <span class="number">3</span>)</span><br><span class="line">axins.set_xlim(<span class="number">106</span>, <span class="number">122</span>)</span><br><span class="line">axins.set_ylim(<span class="number">2</span>, <span class="number">24</span>)</span><br><span class="line">ax.set_xticks([])</span><br><span class="line">ax.set_yticks([])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 设置附图投影和范围</span></span><br><span class="line">map2 = Basemap(llcrnrlon=<span class="number">106</span>, llcrnrlat=<span class="number">2</span>, urcrnrlon=<span class="number">122</span>, urcrnrlat=<span class="number">24</span>, ax=axins)</span><br><span class="line"><span class="comment"># 陆地和海洋设色</span></span><br><span class="line">map2.fillcontinents(color=<span class="string">'#ADADAD'</span>, lake_color=<span class="string">'#ADADAD'</span>)</span><br><span class="line">map2.drawlsmask(land_color=<span class="string">'#ADADAD'</span>, ocean_color=<span class="string">'#B0E2FF'</span>, resolution=<span class="string">'h'</span>)</span><br><span class="line"><span class="comment"># 添加省界线和国界线</span></span><br><span class="line">map2.readshapefile(<span class="string">'D:/map/China_2020/province'</span>,<span class="string">'province'</span>)</span><br><span class="line">map2.readshapefile(<span class="string">'D:/map/China_2020/border'</span>,<span class="string">'border'</span>)</span><br><span class="line"><span class="comment"># 陆地界线和海洋界线设色</span></span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map2.border_info, map2.border):</span><br><span class="line"> <span class="keyword">if</span> info[<span class="string">'Name'</span>] == <span class="string">'land'</span>:</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map2.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#8B0000'</span>)</span><br><span class="line"> <span class="keyword">if</span> info[<span class="string">'Name'</span>] == <span class="string">'ocean'</span>:</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map2.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#6495ED'</span>)</span><br><span class="line"><span class="comment"># 省市设色</span></span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map2.province_info, map2.province):</span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> poly = Polygon(shp, facecolor=color[name.index(info[<span class="string">'省'</span>])],</span><br><span class="line"> edgecolor=color[name.index(info[<span class="string">'省'</span>])],lw=<span class="number">1</span>)</span><br><span class="line"> axins.add_patch(poly)</span><br><span class="line"> <span class="keyword">except</span>:</span><br><span class="line"> <span class="keyword">pass</span></span><br><span class="line"><span class="comment"># 添加九段线并设色</span></span><br><span class="line">map2.readshapefile(<span class="string">'D:/map/China_2020/nine_line'</span>,<span class="string">'nine_line'</span>)</span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map2.nine_line, map2.nine_line):</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map2.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#8B0000'</span>)</span><br><span class="line">plt.savefig(<span class="string">'lambert-color.jpg'</span>, dpi=<span class="number">600</span>, bbox_inches=<span class="string">'tight'</span>)</span><br></pre></td></tr></table></figure>
<p><img src="/2020/05/08/%E4%BB%A3%E7%A0%81%E7%BB%98%E5%88%B6%E6%A0%87%E5%87%86%E4%B8%AD%E5%9B%BD%E7%89%88%E5%9B%BE/output_9_0.png" alt="png"></p>
<p>mercator投影:</p>
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"><span class="comment"># 读取省份编码</span></span><br><span class="line">df = pd.read_excel(<span class="string">'省份编码.xls'</span>)</span><br><span class="line">color = list(df[<span class="string">'color'</span>])</span><br><span class="line">code = list(df[<span class="string">'ProvinceID'</span>])</span><br><span class="line">name = list(df[<span class="string">'ProvinceNameC'</span>])</span><br><span class="line"><span class="comment"># 创建画布</span></span><br><span class="line">fig = plt.figure(figsize=(<span class="number">10</span>, <span class="number">10</span>))</span><br><span class="line">ax = fig.add_subplot(<span class="number">111</span>)</span><br><span class="line"><span class="comment"># 墨卡托投影</span></span><br><span class="line">map1 = Basemap(llcrnrlon=<span class="number">72</span>, llcrnrlat=<span class="number">2</span>, urcrnrlon=<span class="number">136</span>, urcrnrlat=<span class="number">54</span>,projection=<span class="string">'merc'</span>)</span><br><span class="line"><span class="comment"># 陆地和海洋设色</span></span><br><span class="line">map1.fillcontinents(color=<span class="string">'#ADADAD'</span>,lake_color=<span class="string">'#ADADAD'</span>)</span><br><span class="line">map1.drawlsmask(land_color=<span class="string">'#ADADAD'</span>,ocean_color=<span class="string">'#B0E2FF'</span>,resolution=<span class="string">'h'</span>)</span><br><span class="line"><span class="comment"># 添加省界线和国界线</span></span><br><span class="line">map1.readshapefile(<span class="string">'D:/map/China_2020/province'</span>,<span class="string">'province'</span>)</span><br><span class="line">map1.readshapefile(<span class="string">'D:/map/China_2020/border'</span>,<span class="string">'border'</span>)</span><br><span class="line"><span class="comment"># 陆地界线和海洋界线设色</span></span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map1.border_info, map1.border):</span><br><span class="line"> <span class="keyword">if</span> info[<span class="string">'Name'</span>] == <span class="string">'land'</span>:</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map1.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#8B0000'</span>)</span><br><span class="line"> <span class="keyword">if</span> info[<span class="string">'Name'</span>] == <span class="string">'ocean'</span>:</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map1.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#6495ED'</span>)</span><br><span class="line"><span class="comment"># 省市设色</span></span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map1.province_info, map1.province):</span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> poly = Polygon(shp, facecolor=color[name.index(info[<span class="string">'省'</span>])],</span><br><span class="line"> edgecolor=color[name.index(info[<span class="string">'省'</span>])],lw=<span class="number">1</span>)</span><br><span class="line"> ax.add_patch(poly)</span><br><span class="line"> <span class="keyword">except</span>:</span><br><span class="line"> <span class="keyword">pass</span></span><br><span class="line"><span class="comment"># 添加九段线并设色</span></span><br><span class="line">map1.readshapefile(<span class="string">'D:/map/China_2020/nine_line'</span>,<span class="string">'nine_line'</span>)</span><br><span class="line"><span class="keyword">for</span> info, shp <span class="keyword">in</span> zip(map1.nine_line, map1.nine_line):</span><br><span class="line"> x, y = zip(*shp)</span><br><span class="line"> map1.plot(x, y, marker=<span class="literal">None</span>, color=<span class="string">'#8B0000'</span>)</span><br><span class="line"><span class="comment"># 绘制经纬度标签和比例尺</span></span><br><span class="line">map1.drawmeridians(np.arange(<span class="number">0</span>, <span class="number">360</span>, <span class="number">10</span>), labels=[<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>], color=<span class="string">'grey'</span>)</span><br><span class="line">map1.drawparallels(np.arange(<span class="number">-90</span>, <span class="number">90</span>, <span class="number">10</span>), labels=[<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>], color=<span class="string">'grey'</span>)</span><br><span class="line">map1.drawmapscale(<span class="number">90</span>,<span class="number">10</span>,<span class="number">100</span>,<span class="number">20</span>,<span class="number">2000</span>,barstyle=<span class="string">'fancy'</span>)</span><br><span class="line"></span><br><span class="line">plt.savefig(<span class="string">'mercator-color.jpg'</span>, dpi=<span class="number">600</span>, bbox_inches=<span class="string">'tight'</span>)</span><br></pre></td></tr></table></figure>
<p><img src="/2020/05/08/%E4%BB%A3%E7%A0%81%E7%BB%98%E5%88%B6%E6%A0%87%E5%87%86%E4%B8%AD%E5%9B%BD%E7%89%88%E5%9B%BE/output_10_0.png" alt="png"></p>
]]></content>
<categories>
<category>编程基础</category>
</categories>
<tags>
<tag>编程基础</tag>
</tags>
</entry>
</search>