Utilities 10 May 2021 66 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