Utilities 10 May 2021 19 views 0 komentar

Generate 3D TreeJS

Generate 3D TreeJS

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 "

 

 

Tags Artikel: #Secret

Bagikan artikel ini:

Komentar (0)

Belum ada komentar. Jadilah yang pertama memberikan tanggapan!

Tinggalkan Komentar