pythonチュートリアル|最も標準的なマップ呼び出し方法(国立調査マッピング局から提供されたデータ)

Sky Mapは、National Geographic Information Bureauによって構築された包括的な地理情報サービスWebサイトであり、National Geographic Information Public ServicePlatformのパブリックバージョンです。
一般的に使用されているGoogleマップ、Tencentマップ、Baiduマップ、Microsoftマップ、Bingマップと比較して、Skyマップの違いは何ですか?主にデータの権限と正確性に反映されます。 Tiantuが公開している国境と9本の破線は正確です。さらに、中国のTiantu画像の座標のみにオフセットがなく、他のマップの座標は暗号化されています。
CartopyはPythonベースのマッピングモジュールであり、オンラインマップをロードする機能を提供します。では、マップサービスを呼び出す機能を追加するにはどうすればよいですか?
実際、初期の段階で関連作業がありましたが、スカイマップサービスのアップグレードにより、元の方法は適用できなくなりました。最新の呼び出し方法は次のとおりです。

準備オーケー ##

ウェブサイト:スカイマップ
まず、アカウントを登録してから、[開発リソース]→[マップAPI]を選択する必要があります

コンソールに入り、[Create New Application]をクリックし、サーバー側を選択して、キーを取得できるようにします

TiandiのマップサービスはOGCWMTS標準を採用していますが、これまでのところうまく試行されていないため、XYZタイルの形式を採用しています。

呼び出しメソッドを追加

次のコードを追加し、コード内の「your_key」を以前に取得したキーに置き換えるように注意してください

import cartopy.io.img_tiles as cimgt
# スカイマップベクトル
classTDT_vec(cimgt.GoogleWTS):
 def _image_url(self, tile):
  x, y, z = tile
  key ='your_key'
  url ='http://t0.tianditu.gov.cn/DataServer?T=vec_w&x=%s&y=%s&l=%s&tk=%s'%(x, y, z, key)return url

# スカイマップリモートセンシング
classTDT_img(cimgt.GoogleWTS):
 def _image_url(self, tile):
  x, y, z = tile
  key ='your_key'
  url ='http://t0.tianditu.gov.cn/DataServer?T=img_w&x=%s&y=%s&l=%s&tk=%s'%(x, y, z, key)return url

# スカイマップの地形
classTDT_ter(cimgt.GoogleWTS):
 def _image_url(self, tile):
  x, y, z = tile
  key ='your_key'
  url ='http://t0.tianditu.gov.cn/DataServer?T=ter_w&x=%s&y=%s&l=%s&tk=%s'%(x, y, z, key)return url

デモを呼び出す

1、 ベクトルベースマップ、画像ベースマップ、地形ベースマップ

# インポートモジュール
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeat
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatter
import cartopy.io.shapereader as shpreader
import numpy as np

plt.rcParams['font.sans-serif']=['SimHei'] 
plt.rcParams['axes.unicode_minus']= False 

fig = plt.figure(figsize=(18,12))

ax = fig.add_subplot(1,3,1, projection=ccrs.PlateCarree())
ax.set_extent([118,122,28,32],crs=ccrs.PlateCarree())
request =TDT_vec()
ax.add_image(request,9)
ax.set_title('スカイマップベクトルベースマップ',fontsize=15)
gl = ax.gridlines(draw_labels=True, linewidth=1, color='k', alpha=0.5, linestyle='--')
gl.xlabels_top = gl.ylabels_right = False 
gl.xformatter = LONGITUDE_FORMATTER 
gl.yformatter = LATITUDE_FORMATTER

ax = fig.add_subplot(1,3,2, projection=ccrs.PlateCarree())
ax.set_extent([118,122,28,32],crs=ccrs.PlateCarree())
request =TDT_img()
ax.add_image(request,9)
ax.set_title('スカイマップ画像ベースマップ',fontsize=15)
gl = ax.gridlines(draw_labels=True, linewidth=1, color='k', alpha=0.5, linestyle='--')
gl.xlabels_top = gl.ylabels_right = False 
gl.xformatter = LONGITUDE_FORMATTER 
gl.yformatter = LATITUDE_FORMATTER

ax = fig.add_subplot(1,3,3, projection=ccrs.PlateCarree())
ax.set_extent([118,122,28,32],crs=ccrs.PlateCarree())
request =TDT_ter()
ax.add_image(request,9)
ax.set_title('スカイマップ地形ベースマップ',fontsize=15)
gl = ax.gridlines(draw_labels=True, linewidth=1, color='k', alpha=0.5, linestyle='--')
gl.xlabels_top = gl.ylabels_right = False 
gl.xformatter = LONGITUDE_FORMATTER 
gl.yformatter = LATITUDE_FORMATTER
plt.show()

2、 さまざまなレベルのベースマップ

fig = plt.figure(figsize=(18,12))for i inrange(6,9):
 ax = fig.add_subplot(1,3, i-5, projection=ccrs.PlateCarree())
 ax.set_extent([120.4,122.1,30.6,32.1],crs=ccrs.PlateCarree())
 request =TDT_img()
 ax.add_image(request, i)
 ax.set_title('Level='+str(i),fontsize=15)
 gl = ax.gridlines(xlocs=np.arange(120.5,122.5,0.5),
      ylocs=np.arange(30,32.5,0.5),
      draw_labels=True,linewidth =0.5,color='k',
      alpha=0.5,linestyle='--')
 gl.xlabels_top = gl.ylabels_right = False
plt.show()

参照:

  1. https://my.oschina.net/u/4581316/blog/4396806
  2. http://bbs.06climate.com/forum.php?mod=viewthread&tid=89165

Recommended Posts

pythonチュートリアル|最も標準的なマップ呼び出し方法(国立調査マッピング局から提供されたデータ)
pythonチュートリアル|最も標準的なマップ呼び出し方法(国立調査マッピング局から提供されたデータ)
pythonチュートリアル|最も標準的なマップ呼び出し方法(国立調査マッピング局から提供されたデータ)
Pythonチュートリアル|マップを呼び出す最も標準的な方法(国立調査マッピング局から提供されたデータ)
Pythonとjsのインタラクティブな呼び出しメソッド
pythonを実行するメソッドを終了します