From 2fd93008d2ce0052353e5016f2c15d1890ffd2e6 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 23 十月 2023 13:42:37 +0800 Subject: [PATCH] 解决影像图层覆盖了矢量图层 --- MoonExp/Sources/MoonExp.py | 59 +++++++++++--- .gitignore | 1 ExportMap/cs/TBUtils.cs | 2 ExportMap/cs/Tools.cs | 49 ++++++++++++ ExportMap/Sources/MoonExp.py | 59 +++++++++++--- MoonExp/Controllers/ExportController.cs | 4 + MoonExp/cs/ExportUtil.cs | 3 ExportMap/Sources/Moon.qpt | 6 ExportMap/Web.config | 2 9 files changed, 150 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index 27b6cc1..5c400ce 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ /CutTiles /MoonExp/Sources/Test.png /MoonExp/Sources/log.txt +/ExportMap/Sources/bak/*.qpt diff --git a/ExportMap/Sources/Moon.qpt b/ExportMap/Sources/Moon.qpt index 9634dea..5f47c15 100644 --- a/ExportMap/Sources/Moon.qpt +++ b/ExportMap/Sources/Moon.qpt @@ -163,7 +163,7 @@ </dataDefinedProperties> <customproperties/> </LayoutObject> - <Extent ymax="64.40696224962117356" ymin="9.87192880480477086" xmin="64.38422237834893735" xmax="152.1417474619615291"/> + <Extent ymax="-15.777073" ymin="31.089563" xmin="-11.9472810" xmax="3.365208"/> <crs> <spatialrefsys> <wkt>GEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["unknown"],AREA["World"],BBOX[-90,-180,90,180]],ID["EPSG",4326]]</wkt> @@ -467,9 +467,9 @@ <property value="0" key="imageCropMarginTop"/> <property value="false" key="imageCropToContents"/> <property value="true" key="singleFile"/> - <property key="layers" value="geo_albedo_feature_point,geo_alkaline_rock_suite,geo_cliff_annotation,geo_construction_unit_boundary,copernican_craters_180,geo_age_not_determined,moon"/> + <property key="layers" value="geo_magnesian_rock_suite,geo_kreep_basalt,geo_alkaline_rock_suite,lunar_place_name"/> <property key="imgPath" value="E:\terrait\TianJin\ExportMap\MoonExp\Sources\Test.png"/> - <property key="wmsUrl" value="http://172.16.2.10:50005/sj_raster/v6/wmts/service/system/10000201/5?ak=mf72ff9295c740ec0f37e61433e8a3ad8d,http://219.153.49.10:7511/sj_raster/v6/wmts/service/system/10000201/1?ak=mf72ff9295c740ec0f37e61433e8a3ad8d"/> + <property key="wmsUrl" value="http://219.153.49.10:7511/sj_raster/v6/wmts/service/system/10000201/1?ak=mf72ff9295c740ec0f37e61433e8a3ad8d"/> </customproperties> <Atlas filenamePattern="'output_'||@atlas_featurenumber" filterFeatures="0" enabled="0" coverageLayer="" sortFeatures="0" hideCoverage="0" pageNameExpression=""/> </Layout> diff --git a/ExportMap/Sources/MoonExp.py b/ExportMap/Sources/MoonExp.py index 181fddf..9e19c50 100644 --- a/ExportMap/Sources/MoonExp.py +++ b/ExportMap/Sources/MoonExp.py @@ -4,12 +4,12 @@ import sys import math import argparse -from qgis.core import * from qgis.gui import * +from qgis.core import * from qgis.PyQt.QtGui import * +from qgis.PyQt.QtXml import * from qgis.PyQt.QtCore import * from qgis.PyQt.QtWidgets import * -from qgis.PyQt.QtXml import * # 鑾峰彇瀹屾暣璺緞 @@ -39,12 +39,15 @@ # 璁剧疆鍥惧眰鍙鎬� -def set_item_visibility(root_node, show_layers): +def set_item_visibility(root_node, layout, show_layers): print(root_node.name() + ': Group') for node in root_node.children(): # QgsLayerTreeLayer if isinstance(node, QgsLayerTreeGroup): - set_item_visibility(node, show_layers) + if node.name() == "搴曞浘": + add_raster_layer(node, layout) + else: + set_item_visibility(node, layout, show_layers) # QgsRasterLayer, QgsVectorLayer else: name = node.layer().name() @@ -56,8 +59,32 @@ node.setItemVisibilityChecked(flag) +# 娣诲姞Raster鍥惧眰锛歈gsLayerTreeGroup +def add_raster_layer(node, layout): + wmsUrl = layout.customProperty("wmsUrl") + if wmsUrl is None: + print("wmsUrl 涓虹┖锛�") + return + uris = wmsUrl.split(',') + # uris = uris[::-1] + + i = 0 + for uri in uris: + i = i + 1 + if uri is None: + continue + url = "crs=ESRI:104903&dpiMode=7&format=image/png&layers=Default&styles=default&tileMatrixSet=GoogleCRS84Quad01&url=" + uri + print("WMTS鍦板潃锛�" + url) + + layer = QgsRasterLayer(url, "WmsLayer_" + str(i), "wms") + if layer.isValid(): + ls = project.layerStore() + ls.addMapLayer(layer) + node.addLayer(layer) + + # 娣诲姞搴曞浘锛歭ayer.isValid()锛宭ayer.metadataUri()锛宭ayer.providerType() -def add_map_layer(prj, layout, args): +def add_map_layer(prj, layout): uris = layout.customProperty("wmsUrl").split(',') for uri in uris: if uri is None: @@ -66,6 +93,7 @@ print("WMS鍦板潃锛�" + url) layer = QgsRasterLayer(url, "WmsLayer", "wms") + # if layer.isValid(): prj.addMapLayer(layer) @@ -76,13 +104,13 @@ # 鍔犺浇宸ョ▼ args = get_args() -prj = QgsProject.instance() -# prj.read(r'Test.qgz') -prj.read(os.path.join(args.src, args.qgz)) -print("FileName: " + prj.fileName()) +project = QgsProject.instance() +# project.read(r'Test.qgz') +project.read(os.path.join(args.src, args.qgz)) +print("FileName: " + project.fileName()) -# layout = QgsPrintLayout(prj) -layout = QgsLayout(prj) +# layout = QgsPrintLayout(project) +layout = QgsLayout(project) # layout.initializeDefaults() # 鍔犺浇妯℃澘 @@ -115,11 +143,11 @@ # "闃�瀹�", "绔欏満", "绠¢亾涓績绾�", "鐭㈤噺娉ㄨ", "鐭㈤噺鍥�", "楂樺痉褰卞儚娉ㄨ", "楂樺痉褰卞儚", "褰卞儚娉ㄨ", "褰卞儚鍥�" # showLayers = ["闃�瀹�", "绠¢亾涓績绾�", "鐭㈤噺娉ㄨ", "鐭㈤噺鍥�"] showLayers = layout.customProperty("layers").split(',') -root = prj.layerTreeRoot() +root = project.layerTreeRoot() -# set_layers_valid(prj, showLayers) -set_item_visibility(root, showLayers) -add_map_layer(prj, layout, args) +# set_layers_valid(project, showLayers) +set_item_visibility(root, layout, showLayers) +# add_map_layer(project, layout) # sm = layout.itemById(r'璇存槑') '''table = layout.multiFrames()[0] @@ -137,6 +165,7 @@ # layout.updateBounds() layout.renderContext() layout.refresh() +# project.write("C:/360/a.qgz") # 瀵煎嚭 exporter = QgsLayoutExporter(layout) diff --git a/ExportMap/Web.config b/ExportMap/Web.config index d8ad8c7..6bfca73 100644 --- a/ExportMap/Web.config +++ b/ExportMap/Web.config @@ -44,6 +44,8 @@ <connectionStrings/> <system.web> <compilation debug="true" targetFramework="4.5.2"/> + <!-- 浼氳瘽瓒呮椂鏃堕棿(榛樿20,鍒嗛挓) --> + <sessionState mode="InProc" timeout="10080"></sessionState> <!-- maxRequestLength鏄笂浼犳枃浠舵椂鏈�澶ize(鍗曚綅鏄疜B,榛樿鍊兼槸4096kb)锛宔xecutionTimeout鏄姹俿ession(鍗曚綅鏄,榛樿鍊兼槸110s) --> <httpRuntime maxRequestLength="2147483647" executionTimeout="8640000"/> <pages controlRenderingCompatibilityVersion="4.0"/> diff --git a/ExportMap/cs/TBUtils.cs b/ExportMap/cs/TBUtils.cs index 08bfc42..604bb37 100644 --- a/ExportMap/cs/TBUtils.cs +++ b/ExportMap/cs/TBUtils.cs @@ -64,7 +64,7 @@ string cmd = string.Format("\"C:\\Program Files\\Skyline\\TerraBuilder\\TerraBuilder.exe\" -script \"{0}\"", js); // -DisablePrint ReloadTB(); - err = Tools.ExecCmd(new List<string> { cmd }); + err = Tools.ExecCmdForWin(new List<string> { cmd }); isBusy = false; return File.Exists(MptPath) ? MoveMpt(MptPath, sourcePath) : null; diff --git a/ExportMap/cs/Tools.cs b/ExportMap/cs/Tools.cs index 6517612..4b7dc85 100644 --- a/ExportMap/cs/Tools.cs +++ b/ExportMap/cs/Tools.cs @@ -374,6 +374,55 @@ } /// <summary> + /// 鎵ц鍛戒护 + /// </summary> + /// <param name="list">鍛戒护闆嗗悎</param> + public static string ExecCmdForWin(List<string> list, bool noWin = false) + { + string str = null; + Process p = null; + try + { + p = new Process(); + p.StartInfo.FileName = "cmd.exe"; + p.StartInfo.UseShellExecute = false; + p.StartInfo.CreateNoWindow = noWin; + p.StartInfo.RedirectStandardInput = true; + p.StartInfo.RedirectStandardOutput = true; + p.StartInfo.RedirectStandardError = true; + p.Start(); + + StreamWriter si = p.StandardInput; + StreamReader se = p.StandardError; + + LogOut.Info("cmd = " + string.Join("锛�", list)); + si.AutoFlush = true; + foreach (string cmd in list) + { + si.WriteLine(cmd); + } + si.WriteLine("exit"); + + str = se.ReadToEnd(); + se.Close(); + si.Close(); + } + catch (Exception ex) + { + LogOut.Error(ex.Message + "\r\n" + ex.StackTrace); + str = ex.Message; + } + finally + { + if (p != null) + { + p.Close(); + } + } + return str; + } + + /// <summary> /// 鍒涘缓鏁版嵁鍙戝竷绫� /// </summary> public static SysPublish NewPublish(SysMeta meta, XYZArgs args, string url, string path) diff --git a/MoonExp/Controllers/ExportController.cs b/MoonExp/Controllers/ExportController.cs index 502503a..1a369d9 100644 --- a/MoonExp/Controllers/ExportController.cs +++ b/MoonExp/Controllers/ExportController.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Net; using System.Net.Http; +using System.Security; using System.Web.Http; namespace MoonExp.Controllers @@ -14,6 +15,9 @@ [HttpGet] public string Test() { + string str = "http://219.153.49.10:7511/sj_raster/v6/wmts/service/system/10000201/1?ak=mf72ff9295c740ec0f37e61433e8a3ad8d&a=1"; + string escapeStr = SecurityElement.Escape(str); + return DateTime.Now.ToString("yyyyy-MM-dd HH:mm:ss"); } diff --git a/MoonExp/Sources/MoonExp.py b/MoonExp/Sources/MoonExp.py index 181fddf..9e19c50 100644 --- a/MoonExp/Sources/MoonExp.py +++ b/MoonExp/Sources/MoonExp.py @@ -4,12 +4,12 @@ import sys import math import argparse -from qgis.core import * from qgis.gui import * +from qgis.core import * from qgis.PyQt.QtGui import * +from qgis.PyQt.QtXml import * from qgis.PyQt.QtCore import * from qgis.PyQt.QtWidgets import * -from qgis.PyQt.QtXml import * # 鑾峰彇瀹屾暣璺緞 @@ -39,12 +39,15 @@ # 璁剧疆鍥惧眰鍙鎬� -def set_item_visibility(root_node, show_layers): +def set_item_visibility(root_node, layout, show_layers): print(root_node.name() + ': Group') for node in root_node.children(): # QgsLayerTreeLayer if isinstance(node, QgsLayerTreeGroup): - set_item_visibility(node, show_layers) + if node.name() == "搴曞浘": + add_raster_layer(node, layout) + else: + set_item_visibility(node, layout, show_layers) # QgsRasterLayer, QgsVectorLayer else: name = node.layer().name() @@ -56,8 +59,32 @@ node.setItemVisibilityChecked(flag) +# 娣诲姞Raster鍥惧眰锛歈gsLayerTreeGroup +def add_raster_layer(node, layout): + wmsUrl = layout.customProperty("wmsUrl") + if wmsUrl is None: + print("wmsUrl 涓虹┖锛�") + return + uris = wmsUrl.split(',') + # uris = uris[::-1] + + i = 0 + for uri in uris: + i = i + 1 + if uri is None: + continue + url = "crs=ESRI:104903&dpiMode=7&format=image/png&layers=Default&styles=default&tileMatrixSet=GoogleCRS84Quad01&url=" + uri + print("WMTS鍦板潃锛�" + url) + + layer = QgsRasterLayer(url, "WmsLayer_" + str(i), "wms") + if layer.isValid(): + ls = project.layerStore() + ls.addMapLayer(layer) + node.addLayer(layer) + + # 娣诲姞搴曞浘锛歭ayer.isValid()锛宭ayer.metadataUri()锛宭ayer.providerType() -def add_map_layer(prj, layout, args): +def add_map_layer(prj, layout): uris = layout.customProperty("wmsUrl").split(',') for uri in uris: if uri is None: @@ -66,6 +93,7 @@ print("WMS鍦板潃锛�" + url) layer = QgsRasterLayer(url, "WmsLayer", "wms") + # if layer.isValid(): prj.addMapLayer(layer) @@ -76,13 +104,13 @@ # 鍔犺浇宸ョ▼ args = get_args() -prj = QgsProject.instance() -# prj.read(r'Test.qgz') -prj.read(os.path.join(args.src, args.qgz)) -print("FileName: " + prj.fileName()) +project = QgsProject.instance() +# project.read(r'Test.qgz') +project.read(os.path.join(args.src, args.qgz)) +print("FileName: " + project.fileName()) -# layout = QgsPrintLayout(prj) -layout = QgsLayout(prj) +# layout = QgsPrintLayout(project) +layout = QgsLayout(project) # layout.initializeDefaults() # 鍔犺浇妯℃澘 @@ -115,11 +143,11 @@ # "闃�瀹�", "绔欏満", "绠¢亾涓績绾�", "鐭㈤噺娉ㄨ", "鐭㈤噺鍥�", "楂樺痉褰卞儚娉ㄨ", "楂樺痉褰卞儚", "褰卞儚娉ㄨ", "褰卞儚鍥�" # showLayers = ["闃�瀹�", "绠¢亾涓績绾�", "鐭㈤噺娉ㄨ", "鐭㈤噺鍥�"] showLayers = layout.customProperty("layers").split(',') -root = prj.layerTreeRoot() +root = project.layerTreeRoot() -# set_layers_valid(prj, showLayers) -set_item_visibility(root, showLayers) -add_map_layer(prj, layout, args) +# set_layers_valid(project, showLayers) +set_item_visibility(root, layout, showLayers) +# add_map_layer(project, layout) # sm = layout.itemById(r'璇存槑') '''table = layout.multiFrames()[0] @@ -137,6 +165,7 @@ # layout.updateBounds() layout.renderContext() layout.refresh() +# project.write("C:/360/a.qgz") # 瀵煎嚭 exporter = QgsLayoutExporter(layout) diff --git a/MoonExp/cs/ExportUtil.cs b/MoonExp/cs/ExportUtil.cs index 41173e7..b115aaf 100644 --- a/MoonExp/cs/ExportUtil.cs +++ b/MoonExp/cs/ExportUtil.cs @@ -8,6 +8,7 @@ using System.IO; using System.Linq; using System.Net; +using System.Security; using System.Text; using System.Web; @@ -274,7 +275,7 @@ string wmtsUrl = string.Join(",", list); - return wmtsUrl; + return SecurityElement.Escape(wmtsUrl); } /// <summary> -- Gitblit v1.9.3