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 "