2017-01-20 4 views
-1

각 사용자가 QGIS에서 사용하고 작업해야하는 레이어가있는 다른 사용자를 위해 Python 플러그인을 만들고 있습니다.QGIS를위한 python 코드로 Google basemap을 얻는 방법은 무엇입니까?

 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) 

가 지금은 basemaps을 추가해야

나는 다음과 같은 코드를 사용하여 Geoserver에서 래스터를 추가 아무런 문제가 없다. 파이썬에 Google 위성지도를 추가하는 방법?

답변

1

Google지도를 Qgis에서 기본지도로 사용하여 TMS (Tiled Map Service)로로드 할 수 있습니다. QGIS 2.18부터 TMS에 대한 네이티브 지원이 Lutra에 의해 Qgis에 추가되었습니다.

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") 

곳 하이브리드지도, 토 맵 lyrs=s 및 로드맵에 대한 lyrs=m에 대한 lyrs=y 숙박. 구글 basemaps를 들어

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.") 

: URI와 URL 매개 변수가 될 %를 코드하는 것을

참고

가 필요한 메서드를 공개한다 Minoru Akagi에 의해 이전 릴리스가 TileLayerPlugin의 사용을 지원 할 수 QGIS 인코딩 적절한 "속성"행과 URL 행을 다음으로 대체하십시오.

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

qgis 및 g에서 직접 회선을 사용해 보았습니다 "서비스에 대한 액세스가 TOS에 의해 제한됩니다. TOS를 따르십시오 "??? – Luffydude

+0

TOS = 서비스 조건 –

+0

예 알아 두었지만 메시지를 자동으로 건너 뛰는 방법이 있습니까? – Luffydude