2017-01-20 16 views
-1

私は、各ユーザーがQGISで使用する必要があるレイヤーを持つ、さまざまなユーザー向けにPythonプラグインを作成しています。QGIS用のPythonコードでGoogleのベースマップを取得するには?

私は何の問題以下のコードを使用してGeoserverからラスタを追加することがありません:

 wmsTicketDSM= QgsRasterLayer('contextualWMSLegend=0&crs=EPSG:27700&dpiMode=7&featureCount=10&format=image/png&layers=Ticket_DSM&password=XXXXXXXXXXXX&styles=&url=http://63.12.21.231:8080/geoserver/exchange_maps/wms&username=admin', 'Ticket_DSM', 'wms') 
     if not wmsTicketDSM.isValid(): 
      print "Layer wmsTicketDSM failed to load!" 
     else: 
      print "Raster Layer wmsTicketDSM loaded!" 
     QgsMapLayerRegistry.instance().addMapLayer(wmsTicketDSM,False) 

は今、私はベースマップを追加する必要があります。 pythonにGoogle Satelliteの地図を追加するには?

答えて

1

GoogleマップはQgisのベースマップとして使用して、TMS(Tiled Map Service)として読み込むことができます。 QGIS 2.18からTMSへのネイティブサポートがLutraによってQgisに追加されました。 SATマップと道路地図のためlyrs=mハイブリッドマップ、lyrs=sためlyrs=y滞在

import requests 
service_url = "https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}" 
service_uri = "type=xyz&zmin=0&zmax=21&url="+requests.utils.quote(service_url) 
tms_layer = core.QgsRasterLayer(service_uri, "Google Hybrid", "wms") 

。 URIのURLパラメータが

をエンコードパーセントコードなければならないこと

ノートは、以前のリリースが必要なメソッドを公開Minoru AkagiによってTileLayerPluginを利用してサポートすることができQGIS:

Googleのベースマップについては
plugin = qgis.utils.plugins.get("TileLayerPlugin") 
if plugin: 
    from TileLayerPlugin.tiles import BoundingBox, TileLayerDefinition 
    bbox = None # BoundingBox(-180, -85.05, 180, 85.05) 
    layerdef = TileLayerDefinition(u"title", 
           u"attribution", 
           "http://example.com/xyz/{z}/{x}/{y}.png", 
           zmin=1, 
           zmax=18, 
           bbox=bbox) 
    plugin.addTileLayer(layerdef) 
else: 
    from PyQt4.QtGui import QMessageBox 
    QMessageBox.warning(None, 
         u"TileLayerPlugin not installed", 
         u"Please install it and try again.") 

適切な「帰属」行とURL行を次のように置き換えます。

"https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}" 
+0

私はqgisとgに直接行を使ってみました次のメッセージが表示されます。「サービスへのアクセスは、TOSによって制限されています。 TOSに従ってください " – Luffydude

+0

TOS =利用規約 –

+0

はい私は知っていますが、自動的にメッセージをスキップする方法はありますか? – Luffydude

関連する問題