Script berjalan di versi 2 QGIS,
1. Buat File setup.qto3settings
2. Py Custom
import os
project = QgsMapLayerRegistry.instance()
data_dir = "D:\GIS\BASI072"
data_setup = "D:\Deki\Py_Qgis"
# Clear Layer
for layer in project.mapLayers().values():
project.removeMapLayer(layer.id())
# get the path to a tif file e.g. /home/project/data/srtm.tif
path_dem = os.path.join(data_dir, "DEM", "DEM_0.1.tif")
demLayer = QgsRasterLayer(path_dem, "Dem Layer")
path_ecw = os.path.join(data_dir, "ECW", "BAS_I072_100719_P.ecw")
ecwLayer = QgsRasterLayer(path_ecw, "Ecw Layer")
if not demLayer.isValid():
print "Layer failed to load!"
else:
project.addMapLayer(demLayer)
for layer in project.mapLayers().values():
demLayerid = layer.id()
project.addMapLayer(ecwLayer)
setting = open(os.path.join(data_setup, "setup.qto3settings"), 'w')
setting.write('{ "CTRL": { "comboBox_Controls": "OrbitControls.js" }, "DEM": { "checkBox_Clip": false, "checkBox_Frame": false, "checkBox_Shading": true, "checkBox_Sides": true, "checkBox_Surroundings": false, "checkBox_TransparentBackground": true, "comboBox_ClipLayer": null, "comboBox_DEMLayer": "'+demLayerid+'", "comboBox_TextureSize": 100, "horizontalSlider_DEMSize": 1, "lineEdit_Color": "", "lineEdit_ImageFile": "", "lineEdit_centerX": "", "lineEdit_centerY": "", "lineEdit_rectHeight": "", "lineEdit_rectWidth": "", "radioButton_MapCanvas": true, "radioButton_Simple": true, "spinBox_Height": 4, "spinBox_Roughening": 4, "spinBox_Size": 5, "spinBox_demtransp": 0, "visible": false }, "OPTDEM": {}, "OutputFilename": "", "PluginVersion": "1.4.2", "Template": "3DViewer.html", "WORLD": { "lineEdit_BaseSize": "100", "lineEdit_Color": "", "lineEdit_zFactor": "3", "lineEdit_zShift": "0" }}')
setting.close()
print "Setup Success"
center = str(demLayer.extent().center())
txt_data = open(os.path.join(data_setup, "Qgis2threejs_Data.txt"), 'w')
txt_data.write(center)
txt_data.close()
print demLayer.crs().authid()
print QgsPoint(demLayer.extent().center())
execfile(u'D:/Deki/Py_Qgis/Qgis2threejs_v1.4.py'.encode('mbcs'))
print "3D Success"
3. Py Generate
import os
from PyQt4.QtCore import QSize
from qgis.core import QgsCoordinateReferenceSystem, QgsCoordinateTransform, QgsPoint
from Qgis2threejs.api import Exporter
data_setup = "D:\Deki\Py_Qgis"
#settingsPath = None
settingsPath = os.path.join(data_setup, "setup.qto3settings")
# Places to export (in WGS 84)
places = [(u"bas", QgsPoint(101.81,-0.29))]
# Output filename template
path_tmpl = "D:/Deki/htdocs/3dviewer/bas_tester.html"
# Coordinate transformer: WGS 84 to JGD2000 / UTM zone 53N
wgs84 = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId)
utm53 = QgsCoordinateReferenceSystem(32747, QgsCoordinateReferenceSystem.EpsgCrsId)
transform = QgsCoordinateTransform(wgs84, utm53)
canvas = iface.mapCanvas()
canvas.setCrsTransformEnabled(True)
canvas.setDestinationCrs(utm53)
# Get map settings from the map canvas
mapSettings = canvas.mapSettings()
# Canvas size (base image size)
canvasSize = QSize(1800.8484588, 1934.0581932)
mapSettings.setOutputSize(canvasSize)
# Size of extent, and rotation
width = 1934.0581932
height = width * canvasSize.height() / canvasSize.width()
rotation = 0
# Create an exporter
exporter = Exporter(iface, settingsPath)
exporter.setMapSettings(mapSettings)
for name, point in places:
# Coordinate transform
center = transform.transform(point)
# Set extent
exporter.setExtent(center, width, height, rotation)
# Export
err = exporter.export(path_tmpl, openBrowser=False)
if err == Exporter.NO_ERROR:
print "Layer has been exported"
else:
print "Failed to export layer "