管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2022-11-09 a2a1b640b35ff095807069e63571faa3fdd4f659
1
已添加1个文件
已修改5个文件
752 ■■■■■ 文件已修改
ExportMap/Models/ExportArgs.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Sources/Template.qpt 579 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Sources/Test.qgz 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Sources/render.py 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Test.html 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/ExportUtil.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Models/ExportArgs.cs
@@ -83,6 +83,11 @@
        public int dpi { set; get; }
        /// <summary>
        /// æ¨¡æ¿æ–‡ä»¶
        /// </summary>
        public string qpt { set; get; }
        /// <summary>
        /// è®¾ç½®é»˜è®¤å€¼
        /// </summary>
        public void SetDefault()
ExportMap/Sources/Template.qpt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,579 @@
<Layout units="mm" name="Template" printResolution="300" worldFileMap="{4e649c5d-cabe-431f-a385-d69809d87ebf}">
 <Snapper snapToItems="1" tolerance="5" snapToGrid="0" snapToGuides="1"/>
 <Grid resolution="10" offsetY="0" offsetUnits="mm" resUnits="mm" offsetX="0"/>
 <PageCollection>
  <symbol name="" clip_to_extent="1" force_rhr="0" type="fill" alpha="1">
   <layer class="SimpleFill" enabled="1" pass="0" locked="0">
    <prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/>
    <prop v="255,255,255,255" k="color"/>
    <prop v="miter" k="joinstyle"/>
    <prop v="0,0" k="offset"/>
    <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
    <prop v="MM" k="offset_unit"/>
    <prop v="35,35,35,255" k="outline_color"/>
    <prop v="no" k="outline_style"/>
    <prop v="0.26" k="outline_width"/>
    <prop v="MM" k="outline_width_unit"/>
    <prop v="solid" k="style"/>
    <data_defined_properties>
     <Option type="Map">
      <Option name="name" type="QString" value=""/>
      <Option name="properties"/>
      <Option name="type" type="QString" value="collection"/>
     </Option>
    </data_defined_properties>
   </layer>
  </symbol>
  <LayoutItem templateUuid="{72530018-3d33-4843-b661-79580c9b15e3}" excludeFromExports="0" id="" background="true" blendMode="0" zValue="0" positionLock="false" visibility="1" type="65638" frameJoinStyle="miter" uuid="{72530018-3d33-4843-b661-79580c9b15e3}" frame="false" position="0,0,mm" outlineWidthM="0.3,mm" itemRotation="0" groupUuid="" positionOnPage="0,0,mm" size="297,210,mm" referencePoint="0" opacity="1">
   <FrameColor blue="0" green="0" red="0" alpha="255"/>
   <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
   <LayoutObject>
    <dataDefinedProperties>
     <Option type="Map">
      <Option name="name" type="QString" value=""/>
      <Option name="properties"/>
      <Option name="type" type="QString" value="collection"/>
     </Option>
    </dataDefinedProperties>
    <customproperties/>
   </LayoutObject>
   <symbol name="" clip_to_extent="1" force_rhr="0" type="fill" alpha="1">
    <layer class="SimpleFill" enabled="1" pass="0" locked="0">
     <prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/>
     <prop v="255,255,255,255" k="color"/>
     <prop v="miter" k="joinstyle"/>
     <prop v="0,0" k="offset"/>
     <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
     <prop v="MM" k="offset_unit"/>
     <prop v="35,35,35,255" k="outline_color"/>
     <prop v="no" k="outline_style"/>
     <prop v="0.26" k="outline_width"/>
     <prop v="MM" k="outline_width_unit"/>
     <prop v="solid" k="style"/>
     <data_defined_properties>
      <Option type="Map">
       <Option name="name" type="QString" value=""/>
       <Option name="properties"/>
       <Option name="type" type="QString" value="collection"/>
      </Option>
     </data_defined_properties>
    </layer>
   </symbol>
  </LayoutItem>
  <GuideCollection visible="1"/>
 </PageCollection>
 <LayoutItem templateUuid="{13528ba9-5ea4-45e3-b56e-a975eb046d54}" excludeFromExports="0" id="公司" marginY="0" background="false" labelText="中国石油天然气管道工程有限公司" blendMode="0" halign="4" zValue="8" positionLock="true" visibility="1" type="65641" frameJoinStyle="miter" uuid="{13528ba9-5ea4-45e3-b56e-a975eb046d54}" frame="false" position="212.337,195.29,mm" htmlState="0" outlineWidthM="0.3,mm" itemRotation="0" groupUuid="" positionOnPage="212.337,195.29,mm" size="76.0244,9.39831,mm" referencePoint="0" opacity="1" marginX="0" valign="128">
  <FrameColor blue="0" green="0" red="0" alpha="255"/>
  <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
  <LabelFont style="常规" description="宋体,14,-1,5,50,0,0,0,0,0,常规"/>
  <FontColor blue="0" green="0" red="0" alpha="255"/>
 </LayoutItem>
 <LayoutItem templateUuid="{6a1655ac-d65f-4163-9e89-5f98536a0c31}" excludeFromExports="0" id="指北针" background="false" pictureRotation="0" svgBorderWidth="0.2" blendMode="0" zValue="8" positionLock="true" visibility="1" type="65640" frameJoinStyle="miter" file=":/images/north_arrows/layout_default_north_arrow.svg" mode="0" uuid="{6a1655ac-d65f-4163-9e89-5f98536a0c31}" frame="false" resizeMode="0" northMode="0" position="277.938,2.42978,mm" northOffset="0" outlineWidthM="0.3,mm" pictureWidth="8.85237" mapUuid="{4e649c5d-cabe-431f-a385-d69809d87ebf}" itemRotation="0" groupUuid="" positionOnPage="277.938,2.42978,mm" anchorPoint="0" svgFillColor="255,255,255,255" pictureHeight="11.1743" svgBorderColor="0,0,0,255" size="10.4237,11.1743,mm" referencePoint="0" opacity="1">
  <FrameColor blue="0" green="0" red="0" alpha="255"/>
  <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
 </LayoutItem>
 <LayoutItem templateUuid="{29298722-a58a-42f7-85d1-04564ad9366d}" excludeFromExports="0" id="Logo" background="false" pictureRotation="0" svgBorderWidth="0.2" blendMode="0" zValue="7" positionLock="true" visibility="1" type="65640" frameJoinStyle="miter" file="../../../CPPE/CPPE/imgs/logo.png" mode="1" uuid="{29298722-a58a-42f7-85d1-04564ad9366d}" frame="false" resizeMode="0" northMode="0" position="200.5,194.948,mm" northOffset="0" outlineWidthM="0.3,mm" pictureWidth="11.4207" mapUuid="" itemRotation="0" groupUuid="" positionOnPage="200.5,194.948,mm" anchorPoint="0" svgFillColor="255,255,255,255" pictureHeight="10.7409" svgBorderColor="0,0,0,255" size="11.6809,10.7409,mm" referencePoint="0" opacity="1">
  <FrameColor blue="0" green="0" red="0" alpha="255"/>
  <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
 </LayoutItem>
 <LayoutItem templateUuid="{7cb1fe59-d2d9-427d-a2d1-4edbc7285021}" excludeFromExports="0" sectionWidth="43.1968" id="说明" multiFrameTemplateUuid="{3f590e9a-19b4-46d3-90bb-6a188b24aaa6}" background="false" blendMode="0" zValue="6" hidePageIfEmpty="0" positionLock="true" visibility="1" type="65647" frameJoinStyle="miter" uuid="{7cb1fe59-d2d9-427d-a2d1-4edbc7285021}" sectionHeight="25.6574" frame="false" position="242.194,161,mm" outlineWidthM="0.3,mm" sectionX="0" itemRotation="0" groupUuid="" positionOnPage="242.194,161,mm" sectionY="0" hideBackgroundIfEmpty="0" multiFrame="{3f590e9a-19b4-46d3-90bb-6a188b24aaa6}" size="43.1968,25.6574,mm" referencePoint="0" opacity="1">
  <FrameColor blue="0" green="0" red="0" alpha="255"/>
  <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
 </LayoutItem>
 <LayoutItem templateUuid="{81ccb104-2767-491d-8296-cd4ccbebed3e}" excludeFromExports="0" id="标题" marginY="0" background="false" labelText="管道基础大数据平台(DW1-1)" blendMode="0" halign="4" zValue="4" positionLock="true" visibility="1" type="65641" frameJoinStyle="miter" uuid="{81ccb104-2767-491d-8296-cd4ccbebed3e}" frame="false" position="84.816,2.42978,mm" htmlState="0" outlineWidthM="0.3,mm" itemRotation="0" groupUuid="" positionOnPage="84.816,2.42978,mm" size="129.364,11.1743,mm" referencePoint="0" opacity="1" marginX="0" valign="128">
  <FrameColor blue="0" green="0" red="0" alpha="255"/>
  <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
  <LabelFont style="Bold" description="微软雅黑,24,-1,5,75,0,0,0,0,0,Bold"/>
  <FontColor blue="0" green="0" red="0" alpha="255"/>
 </LayoutItem>
 <LayoutItem background="true" groupUuid="" rasterBorderColor="0,0,0,255" symbolWidth="7" referencePoint="0" opacity="1" lineSpacing="1" frame="true" templateUuid="{52b0f928-714f-4672-bc0b-a13e401f8465}" blendMode="0" minSymbolSize="0" legendFilterByAtlas="0" visibility="1" wmsLegendHeight="25" rasterBorderWidth="0" title="" splitLayer="0" itemRotation="0" fontColor="#000000" symbolHeight="4" type="65642" equalColumnWidth="0" size="51.5396,34.6028,mm" symbolAlignment="1" boxSpace="2" frameJoinStyle="round" rasterBorder="1" columnSpace="2" map_uuid="{4e649c5d-cabe-431f-a385-d69809d87ebf}" positionLock="false" uuid="{52b0f928-714f-4672-bc0b-a13e401f8465}" maxSymbolSize="0" outlineWidthM="0.1,mm" resizeToContents="0" excludeFromExports="0" id="图例" wrapChar="" columnCount="1" zValue="3" titleAlignment="1" position="12.9877,152.005,mm" positionOnPage="12.9877,152.005,mm" wmsLegendWidth="50">
  <FrameColor blue="0" green="0" red="0" alpha="255"/>
  <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
  <styles>
   <style name="title" alignment="1" marginBottom="3.5">
    <styleFont style="" description="SimSun,16,-1,5,50,0,0,0,0,0"/>
   </style>
   <style name="group" alignment="1" marginTop="3">
    <styleFont style="" description="SimSun,14,-1,5,50,0,0,0,0,0"/>
   </style>
   <style name="subgroup" alignment="1" marginTop="3">
    <styleFont style="" description="SimSun,12,-1,5,50,0,0,0,0,0"/>
   </style>
   <style name="symbol" alignment="1" marginTop="2.5">
    <styleFont style="" description="SimSun,9,-1,5,50,0,0,0,0,0"/>
   </style>
   <style marginLeft="2" name="symbolLabel" alignment="1" marginTop="2">
    <styleFont style="" description="SimSun,12,-1,5,50,0,0,0,0,0"/>
   </style>
  </styles>
  <layer-tree-group>
   <customproperties/>
   <layer-tree-group checked="Qt::Checked" name="管道基础大数据平台" expanded="1">
    <customproperties/>
    <layer-tree-layer id="VALVEHOUSEPOINT_5d566d73_8061_447a_a9e3_3e7adad17bd7" source="../../../../data/13.cppe/shps/VALVEHOUSEPOINT.shp" checked="Qt::Checked" name="阀室" patch_size="-1,-1" expanded="1" legend_exp="" legend_split_behavior="0" providerKey="ogr">
     <customproperties/>
    </layer-tree-layer>
    <layer-tree-layer id="SITEPOINT_484a52d0_7a8e_4f9e_9ad3_d940e10e24d3" source="../../../../data/13.cppe/shps/SITEPOINT.shp" checked="Qt::Checked" name="站场" patch_size="-1,-1" expanded="1" legend_exp="" legend_split_behavior="0" providerKey="ogr">
     <customproperties/>
    </layer-tree-layer>
    <layer-tree-layer id="STATIONSERIES_5bfe7f3c_86b2_4fda_bae4_c44a33ab33e0" source="../../../../data/13.cppe/shps/STATIONSERIES.shp" checked="Qt::Checked" name="管道中心线" patch_size="-1,-1" expanded="1" legend_exp="" legend_split_behavior="0" providerKey="ogr">
     <customproperties/>
    </layer-tree-layer>
   </layer-tree-group>
   <custom-order enabled="0">
    <item>STATIONSERIES_5bfe7f3c_86b2_4fda_bae4_c44a33ab33e0</item>
    <item>VALVEHOUSEPOINT_5d566d73_8061_447a_a9e3_3e7adad17bd7</item>
    <item>SITEPOINT_484a52d0_7a8e_4f9e_9ad3_d940e10e24d3</item>
   </custom-order>
  </layer-tree-group>
 </LayoutItem>
 <LayoutItem templateUuid="{4e649c5d-cabe-431f-a385-d69809d87ebf}" excludeFromExports="0" id="地图" background="true" followPresetName="" blendMode="0" zValue="2" positionLock="true" visibility="1" type="65639" frameJoinStyle="round" keepLayerSet="false" uuid="{4e649c5d-cabe-431f-a385-d69809d87ebf}" isTemporal="0" frame="true" followPreset="false" position="9.47563,16.5367,mm" outlineWidthM="4,px" drawCanvasItems="false" itemRotation="0" groupUuid="" positionOnPage="9.47563,16.5367,mm" labelMargin="0,mm" size="278.717,173.275,mm" referencePoint="0" opacity="1" mapRotation="0" mapFlags="0">
  <FrameColor blue="0" green="0" red="0" alpha="255"/>
  <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
  <Extent xmin="59.05829972526095162" ymin="9.56596926408145976" ymax="64.12367401477921192" xmax="146.81582480887351494"/>
  <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>
    <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
    <srsid>3452</srsid>
    <srid>4326</srid>
    <authid>EPSG:4326</authid>
    <description>WGS 84</description>
    <projectionacronym>longlat</projectionacronym>
    <ellipsoidacronym>EPSG:7030</ellipsoidacronym>
    <geographicflag>true</geographicflag>
   </spatialrefsys>
  </crs>
  <LayerSet/>
  <ComposerMapGrid annotationExpression="" rotatedTicksMarginToCorner="0" name="网格 1" frameFillColor1="255,255,255,255" offsetX="0" bottomAnnotationPosition="1" frameFillColor2="0,0,0,255" leftAnnotationDirection="2" gridFrameMargin="0" blendMode="0" topFrameDivisions="0" gridFramePenColor="0,0,0,255" offsetY="0" annotationFormat="4" intervalX="30" showAnnotation="1" bottomFrameDivisions="0" rotatedTicksMinimumAngle="0" rotatedAnnotationsMarginToCorner="0" rightAnnotationPosition="1" maximumIntervalWidth="10" bottomAnnotationDisplay="0" topAnnotationDisplay="0" annotationPrecision="3" leftAnnotationDisplay="0" topAnnotationPosition="1" unit="1" uuid="{33b582a6-ae09-42c2-b50b-ae68c9d6d71a}" frameAnnotationDistance="1" rotatedAnnotationsMinimumAngle="0" rotatedTicksLengthMode="0" rotatedAnnotationsEnabled="0" intervalY="30" rotatedAnnotationsLengthMode="0" crossLength="3" rightAnnotationDisplay="0" bottomAnnotationDirection="0" gridFrameStyle="0" gridFramePenThickness="0.29999999999999999" gridFrameSideFlags="15" rightFrameDivisions="0" topAnnotationDirection="0" gridFrameWidth="2" leftAnnotationPosition="1" rightAnnotationDirection="2" leftFrameDivisions="0" rotatedTicksEnabled="0" show="1" position="3" gridStyle="3" minimumIntervalWidth="12">
   <lineStyle>
    <symbol name="" clip_to_extent="1" force_rhr="0" type="line" alpha="0.616">
     <layer class="SimpleLine" enabled="1" pass="0" locked="0">
      <prop v="0" k="align_dash_pattern"/>
      <prop v="round" k="capstyle"/>
      <prop v="0.66;2" k="customdash"/>
      <prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
      <prop v="MM" k="customdash_unit"/>
      <prop v="0" k="dash_pattern_offset"/>
      <prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
      <prop v="MM" k="dash_pattern_offset_unit"/>
      <prop v="0" k="draw_inside_polygon"/>
      <prop v="round" k="joinstyle"/>
      <prop v="0,0,0,255" k="line_color"/>
      <prop v="solid" k="line_style"/>
      <prop v="0.5" k="line_width"/>
      <prop v="MM" k="line_width_unit"/>
      <prop v="0" k="offset"/>
      <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
      <prop v="MM" k="offset_unit"/>
      <prop v="0" k="ring_filter"/>
      <prop v="0" k="tweak_dash_pattern_on_corners"/>
      <prop v="1" k="use_custom_dash"/>
      <prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
      <data_defined_properties>
       <Option type="Map">
        <Option name="name" type="QString" value=""/>
        <Option name="properties"/>
        <Option name="type" type="QString" value="collection"/>
       </Option>
      </data_defined_properties>
     </layer>
    </symbol>
   </lineStyle>
   <markerStyle>
    <symbol name="" clip_to_extent="1" force_rhr="0" type="marker" alpha="1">
     <layer class="SimpleMarker" enabled="1" pass="0" locked="0">
      <prop v="0" k="angle"/>
      <prop v="0,0,0,255" k="color"/>
      <prop v="1" k="horizontal_anchor_point"/>
      <prop v="bevel" k="joinstyle"/>
      <prop v="circle" k="name"/>
      <prop v="0,0" k="offset"/>
      <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
      <prop v="MM" k="offset_unit"/>
      <prop v="35,35,35,255" k="outline_color"/>
      <prop v="solid" k="outline_style"/>
      <prop v="0" k="outline_width"/>
      <prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
      <prop v="MM" k="outline_width_unit"/>
      <prop v="diameter" k="scale_method"/>
      <prop v="2" k="size"/>
      <prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
      <prop v="MM" k="size_unit"/>
      <prop v="1" k="vertical_anchor_point"/>
      <data_defined_properties>
       <Option type="Map">
        <Option name="name" type="QString" value=""/>
        <Option name="properties"/>
        <Option name="type" type="QString" value="collection"/>
       </Option>
      </data_defined_properties>
     </layer>
    </symbol>
   </markerStyle>
   <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>
    <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
    <srsid>3452</srsid>
    <srid>4326</srid>
    <authid>EPSG:4326</authid>
    <description>WGS 84</description>
    <projectionacronym>longlat</projectionacronym>
    <ellipsoidacronym>EPSG:7030</ellipsoidacronym>
    <geographicflag>true</geographicflag>
   </spatialrefsys>
   <text-style fontKerning="1" fontSize="8" fontSizeMapUnitScale="3x:0,0,0,0,0,0" textColor="0,0,0,255" multilineHeight="1" allowHtml="0" fontLetterSpacing="0" blendMode="0" capitalization="0" fontStrikeout="0" textOrientation="horizontal" fontItalic="0" fontFamily="SimSun" textOpacity="1" fontUnderline="0" fontWeight="50" namedStyle="" previewBkgrdColor="255,255,255,255" fontWordSpacing="0" fontSizeUnit="Point">
    <text-buffer bufferBlendMode="0" bufferDraw="0" bufferColor="255,255,255,255" bufferSizeUnits="MM" bufferOpacity="1" bufferSize="1" bufferNoFill="1" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferJoinStyle="128"/>
    <text-mask maskSizeMapUnitScale="3x:0,0,0,0,0,0" maskType="0" maskJoinStyle="128" maskedSymbolLayers="" maskSize="1.5" maskEnabled="0" maskSizeUnits="MM" maskOpacity="1"/>
    <background shapeSVGFile="" shapeDraw="0" shapeSizeY="0" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeBorderColor="128,128,128,255" shapeOffsetUnit="MM" shapeSizeX="0" shapeJoinStyle="64" shapeRadiiY="0" shapeRadiiX="0" shapeOpacity="1" shapeBlendMode="0" shapeOffsetY="0" shapeRotationType="0" shapeType="0" shapeBorderWidth="0" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeSizeType="0" shapeBorderWidthUnit="MM" shapeFillColor="255,255,255,255" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeOffsetX="0" shapeRadiiUnit="MM" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeSizeUnit="MM" shapeRotation="0">
     <symbol name="markerSymbol" clip_to_extent="1" force_rhr="0" type="marker" alpha="1">
      <layer class="SimpleMarker" enabled="1" pass="0" locked="0">
       <prop v="0" k="angle"/>
       <prop v="231,113,72,255" k="color"/>
       <prop v="1" k="horizontal_anchor_point"/>
       <prop v="bevel" k="joinstyle"/>
       <prop v="circle" k="name"/>
       <prop v="0,0" k="offset"/>
       <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
       <prop v="MM" k="offset_unit"/>
       <prop v="35,35,35,255" k="outline_color"/>
       <prop v="solid" k="outline_style"/>
       <prop v="0" k="outline_width"/>
       <prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
       <prop v="MM" k="outline_width_unit"/>
       <prop v="diameter" k="scale_method"/>
       <prop v="2" k="size"/>
       <prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
       <prop v="MM" k="size_unit"/>
       <prop v="1" k="vertical_anchor_point"/>
       <data_defined_properties>
        <Option type="Map">
         <Option name="name" type="QString" value=""/>
         <Option name="properties"/>
         <Option name="type" type="QString" value="collection"/>
        </Option>
       </data_defined_properties>
      </layer>
     </symbol>
    </background>
    <shadow shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowOffsetDist="1" shadowOffsetAngle="135" shadowDraw="0" shadowBlendMode="6" shadowColor="0,0,0,255" shadowOffsetGlobal="1" shadowRadiusUnit="MM" shadowOffsetUnit="MM" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowUnder="0" shadowRadiusAlphaOnly="0" shadowScale="100" shadowOpacity="0.7" shadowRadius="1.5"/>
    <dd_properties>
     <Option type="Map">
      <Option name="name" type="QString" value=""/>
      <Option name="properties"/>
      <Option name="type" type="QString" value="collection"/>
     </Option>
    </dd_properties>
   </text-style>
   <LayoutObject>
    <dataDefinedProperties>
     <Option type="Map">
      <Option name="name" type="QString" value=""/>
      <Option name="properties"/>
      <Option name="type" type="QString" value="collection"/>
     </Option>
    </dataDefinedProperties>
    <customproperties/>
   </LayoutObject>
  </ComposerMapGrid>
  <AtlasMap margin="0.10000000000000001" atlasDriven="0" scalingMode="2"/>
  <labelBlockingItems/>
  <atlasClippingSettings restrictLayers="0" enabled="0" forceLabelsInside="0" clippingType="1">
   <layersToClip/>
  </atlasClippingSettings>
  <itemClippingSettings clipSource="" enabled="0" forceLabelsInside="0" clippingType="1"/>
 </LayoutItem>
 <LayoutItem templateUuid="{76e708b9-4aa8-4365-b8ba-3157f836dfa9}" excludeFromExports="0" id="边框" background="false" blendMode="0" zValue="1" positionLock="true" visibility="1" type="65643" frameJoinStyle="miter" uuid="{76e708b9-4aa8-4365-b8ba-3157f836dfa9}" shapeType="1" frame="false" cornerRadiusMeasure="0,mm" position="2.6816,2,mm" outlineWidthM="0.3,mm" itemRotation="0" groupUuid="" positionOnPage="2.6816,2,mm" size="292.354,205.447,mm" referencePoint="0" opacity="1">
  <FrameColor blue="0" green="0" red="0" alpha="255"/>
  <BackgroundColor blue="255" green="255" red="255" alpha="255"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
  <symbol name="" clip_to_extent="1" force_rhr="0" type="fill" alpha="1">
   <layer class="SimpleLine" enabled="1" pass="0" locked="0">
    <prop v="0" k="align_dash_pattern"/>
    <prop v="square" k="capstyle"/>
    <prop v="5;2" k="customdash"/>
    <prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
    <prop v="Pixel" k="customdash_unit"/>
    <prop v="0" k="dash_pattern_offset"/>
    <prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
    <prop v="MM" k="dash_pattern_offset_unit"/>
    <prop v="0" k="draw_inside_polygon"/>
    <prop v="bevel" k="joinstyle"/>
    <prop v="53,121,177,255" k="line_color"/>
    <prop v="solid" k="line_style"/>
    <prop v="0.96" k="line_width"/>
    <prop v="Pixel" k="line_width_unit"/>
    <prop v="0" k="offset"/>
    <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
    <prop v="Pixel" k="offset_unit"/>
    <prop v="0" k="ring_filter"/>
    <prop v="0" k="tweak_dash_pattern_on_corners"/>
    <prop v="0" k="use_custom_dash"/>
    <prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
    <data_defined_properties>
     <Option type="Map">
      <Option name="name" type="QString" value=""/>
      <Option name="properties"/>
      <Option name="type" type="QString" value="collection"/>
     </Option>
    </data_defined_properties>
   </layer>
  </symbol>
 </LayoutItem>
 <LayoutMultiFrame templateUuid="{3b12245e-8390-439c-bcc3-c9bbf6061b53}" cellMargin="1" emptyTableMessage="" emptyTableMode="0" verticalGrid="1" horizontalGrid="1" gridColor="0,0,0,255" type="65652" gridStrokeWidth="0.5" uuid="{3b12245e-8390-439c-bcc3-c9bbf6061b53}" showGrid="0" headerHAlignment="0" wrapBehavior="0" resizeMode="0" includeHeader="0" backgroundColor="255,255,255,255" headerMode="2" showEmptyRows="0">
  <childFrame templateUuid="{7cb1fe59-d2d9-427d-a2d1-4edbc7285021}" uuid="{7cb1fe59-d2d9-427d-a2d1-4edbc7285021}"/>
  <LayoutObject>
   <dataDefinedProperties>
    <Option type="Map">
     <Option name="name" type="QString" value=""/>
     <Option name="properties"/>
     <Option name="type" type="QString" value="collection"/>
    </Option>
   </dataDefinedProperties>
   <customproperties/>
  </LayoutObject>
  <headerTextFormat>
   <text-style fontKerning="1" fontSize="10" fontSizeMapUnitScale="3x:0,0,0,0,0,0" textColor="0,0,0,255" multilineHeight="1" allowHtml="0" fontLetterSpacing="0" blendMode="0" capitalization="0" fontStrikeout="0" textOrientation="horizontal" fontItalic="0" fontFamily="SimSun" textOpacity="1" fontUnderline="0" fontWeight="50" namedStyle="" previewBkgrdColor="255,255,255,255" fontWordSpacing="0" fontSizeUnit="Point">
    <text-buffer bufferBlendMode="0" bufferDraw="0" bufferColor="255,255,255,255" bufferSizeUnits="MM" bufferOpacity="1" bufferSize="1" bufferNoFill="1" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferJoinStyle="128"/>
    <text-mask maskSizeMapUnitScale="3x:0,0,0,0,0,0" maskType="0" maskJoinStyle="128" maskedSymbolLayers="" maskSize="1.5" maskEnabled="0" maskSizeUnits="MM" maskOpacity="1"/>
    <background shapeSVGFile="" shapeDraw="0" shapeSizeY="0" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeBorderColor="128,128,128,255" shapeOffsetUnit="MM" shapeSizeX="0" shapeJoinStyle="64" shapeRadiiY="0" shapeRadiiX="0" shapeOpacity="1" shapeBlendMode="0" shapeOffsetY="0" shapeRotationType="0" shapeType="0" shapeBorderWidth="0" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeSizeType="0" shapeBorderWidthUnit="MM" shapeFillColor="255,255,255,255" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeOffsetX="0" shapeRadiiUnit="MM" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeSizeUnit="MM" shapeRotation="0"/>
    <shadow shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowOffsetDist="1" shadowOffsetAngle="135" shadowDraw="0" shadowBlendMode="6" shadowColor="0,0,0,255" shadowOffsetGlobal="1" shadowRadiusUnit="MM" shadowOffsetUnit="MM" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowUnder="0" shadowRadiusAlphaOnly="0" shadowScale="100" shadowOpacity="0.7" shadowRadius="1.5"/>
    <dd_properties>
     <Option type="Map">
      <Option name="name" type="QString" value=""/>
      <Option name="properties"/>
      <Option name="type" type="QString" value="collection"/>
     </Option>
    </dd_properties>
   </text-style>
  </headerTextFormat>
  <contentTextFormat>
   <text-style fontKerning="1" fontSize="10" fontSizeMapUnitScale="3x:0,0,0,0,0,0" textColor="0,0,0,255" multilineHeight="1" allowHtml="0" fontLetterSpacing="0" blendMode="0" capitalization="0" fontStrikeout="0" textOrientation="horizontal" fontItalic="0" fontFamily="SimSun" textOpacity="1" fontUnderline="0" fontWeight="50" namedStyle="" previewBkgrdColor="255,255,255,255" fontWordSpacing="0" fontSizeUnit="Point">
    <text-buffer bufferBlendMode="0" bufferDraw="0" bufferColor="255,255,255,255" bufferSizeUnits="MM" bufferOpacity="1" bufferSize="1" bufferNoFill="1" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferJoinStyle="128"/>
    <text-mask maskSizeMapUnitScale="3x:0,0,0,0,0,0" maskType="0" maskJoinStyle="128" maskedSymbolLayers="" maskSize="1.5" maskEnabled="0" maskSizeUnits="MM" maskOpacity="1"/>
    <background shapeSVGFile="" shapeDraw="0" shapeSizeY="0" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeBorderColor="128,128,128,255" shapeOffsetUnit="MM" shapeSizeX="0" shapeJoinStyle="64" shapeRadiiY="0" shapeRadiiX="0" shapeOpacity="1" shapeBlendMode="0" shapeOffsetY="0" shapeRotationType="0" shapeType="0" shapeBorderWidth="0" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeSizeType="0" shapeBorderWidthUnit="MM" shapeFillColor="255,255,255,255" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeOffsetX="0" shapeRadiiUnit="MM" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeSizeUnit="MM" shapeRotation="0"/>
    <shadow shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowOffsetDist="1" shadowOffsetAngle="135" shadowDraw="0" shadowBlendMode="6" shadowColor="0,0,0,255" shadowOffsetGlobal="1" shadowRadiusUnit="MM" shadowOffsetUnit="MM" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowUnder="0" shadowRadiusAlphaOnly="0" shadowScale="100" shadowOpacity="0.7" shadowRadius="1.5"/>
    <dd_properties>
     <Option type="Map">
      <Option name="name" type="QString" value=""/>
      <Option name="properties"/>
      <Option name="type" type="QString" value="collection"/>
     </Option>
    </dd_properties>
   </text-style>
  </contentTextFormat>
  <displayColumns>
   <column attribute="" sortOrder="0" heading="" sortByRank="0" vAlignment="128" hAlignment="1" width="0">
    <backgroundColor blue="0" green="0" red="0" alpha="0"/>
   </column>
   <column attribute="" sortOrder="0" heading="说明" sortByRank="0" vAlignment="128" hAlignment="1" width="0">
    <backgroundColor blue="0" green="0" red="0" alpha="0"/>
   </column>
  </displayColumns>
  <sortColumns/>
  <cellStyles>
   <oddColumns cellBackgroundColor="255,255,255,255" enabled="0"/>
   <evenColumns cellBackgroundColor="255,255,255,255" enabled="0"/>
   <oddRows cellBackgroundColor="255,255,255,255" enabled="0"/>
   <evenRows cellBackgroundColor="255,255,255,255" enabled="0"/>
   <firstColumn cellBackgroundColor="255,255,255,255" enabled="0"/>
   <lastColumn cellBackgroundColor="255,255,255,255" enabled="0"/>
   <headerRow cellBackgroundColor="255,255,255,255" enabled="0"/>
   <firstRow cellBackgroundColor="255,255,255,255" enabled="0"/>
   <lastRow cellBackgroundColor="255,255,255,255" enabled="0"/>
  </cellStyles>
  <headers>
   <header attribute="" sortOrder="0" heading="" sortByRank="0" vAlignment="128" hAlignment="1" width="0">
    <backgroundColor blue="0" green="0" red="0" alpha="0"/>
   </header>
   <header attribute="" sortOrder="0" heading="说明" sortByRank="0" vAlignment="128" hAlignment="1" width="0">
    <backgroundColor blue="0" green="0" red="0" alpha="0"/>
   </header>
  </headers>
  <contents>
   <row>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="说"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="2"/>
     <Option name="valign" type="int" value="0"/>
    </Option>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="明"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="0"/>
     <Option name="valign" type="int" value="0"/>
    </Option>
   </row>
   <row>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="省份:"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="2"/>
     <Option name="valign" type="int" value="128"/>
    </Option>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="河北省"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="1"/>
     <Option name="valign" type="int" value="128"/>
    </Option>
   </row>
   <row>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="比例尺:"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="2"/>
     <Option name="valign" type="int" value="128"/>
    </Option>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="1:25万"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="1"/>
     <Option name="valign" type="int" value="128"/>
    </Option>
   </row>
   <row>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="影像分辨率:"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="0"/>
     <Option name="valign" type="int" value="0"/>
    </Option>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="20ç±³"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="0"/>
     <Option name="valign" type="int" value="0"/>
    </Option>
   </row>
   <row>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="制图时间:"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="2"/>
     <Option name="valign" type="int" value="0"/>
    </Option>
    <Option type="Map">
     <Option name="background" type="color" value=""/>
     <Option name="content" type="QString" value="2022.11.06"/>
     <Option name="foreground" type="color" value=""/>
     <Option name="halign" type="int" value="0"/>
     <Option name="valign" type="int" value="0"/>
    </Option>
   </row>
  </contents>
  <rowHeights>
   <row height="0"/>
   <row height="0"/>
   <row height="0"/>
   <row height="0"/>
   <row height="0"/>
  </rowHeights>
  <columnWidths>
   <column width="0"/>
   <column width="0"/>
  </columnWidths>
 </LayoutMultiFrame>
 <customproperties>
  <property key="atlasRasterFormat" value="png"/>
  <property key="imageAntialias" value="true"/>
  <property key="imageCropMarginBottom" value="0"/>
  <property key="imageCropMarginLeft" value="0"/>
  <property key="imageCropMarginRight" value="0"/>
  <property key="imageCropMarginTop" value="0"/>
  <property key="imageCropToContents" value="false"/>
  <property key="singleFile" value="true"/>
  <property key="layers" value="阀室,管道中心线,高德影像"/>
  <property key="imgPath" value="E:/terrait/TianJin/ExportMap/ExportMap/Sources/render.png"/>
 </customproperties>
 <Atlas coverageLayer="" filterFeatures="0" sortFeatures="0" enabled="0" hideCoverage="0" pageNameExpression="" filenamePattern="'output_'||@atlas_featurenumber"/>
</Layout>
ExportMap/Sources/Test.qgz
Binary files differ
ExportMap/Sources/render.py
@@ -1,5 +1,6 @@
#!/usr/bin/env
# -*- coding: utf-8 -*-
import os
import sys
import math
import argparse
@@ -11,11 +12,16 @@
from qgis.PyQt.QtXml import *
# èŽ·å–å®Œæ•´è·¯å¾„
def get_full_path():
    return os.path.split(sys.argv[0])[0]
# èŽ·å–å‚æ•°
def getArgs():
    argv = sys.argv[1:]
    print("argv = ", argv)
def get_args():
    print("argv = ", sys.argv[1:])
    parser = argparse.ArgumentParser(description='ArgUtils')
    parser.add_argument("-src", type=str, default=get_full_path(), required=False)
    parser.add_argument("-qgz", type=str, default="Test.qgz", required=False)
    parser.add_argument("-qpt", type=str, default="Test.qpt", required=False)
@@ -23,9 +29,9 @@
# è®¾ç½®å›¾å±‚可用性
def setLayersValid(project, showLayers):
    for layer in project.mapLayers().values():
        flag = layer.name() in showLayers
def set_layers_valid(prj, show_layers):
    for layer in prj.mapLayers().values():
        flag = layer.name() in show_layers
        print(layer.name() + ": " + str(flag))
        # if not flag:
        # project.removeMapLayer(layer)
@@ -33,39 +39,42 @@
# è®¾ç½®å›¾å±‚可见性
def setItemVisibility(root, showLayers):
    print(root.name() + ': Group')
    for node in root.children():
def set_item_visibility(root_node, show_layers):
    print(root_node.name() + ': Group')
    for node in root_node.children():
        # QgsLayerTreeLayer
        if isinstance(node, QgsLayerTreeGroup):
            setItemVisibility(node, showLayers)
            set_item_visibility(node, show_layers)
        # QgsRasterLayer, QgsVectorLayer
        else:
            name = node.layer().name()
            flag = name in showLayers
            print(name + ": " + str(flag))
            # if not flag:
            # root.removeLayer(node.layer())
            # root_node.removeLayer(node.layer())
            # node.layer().setValid(False)
            node.setItemVisibilityChecked(flag)
# åˆå§‹åŒ–
# QgsApplication.setPrefixPath(r"E:/terrait/TianJin/LFServer/QGIS/", True)
qgs = QgsApplication([], True)
qgs.initQgis()
args = getArgs()
# åŠ è½½å·¥ç¨‹
args = get_args()
project = QgsProject.instance()
# project.read(r'Test.qgz')
project.read(args.qgz)
project.read(os.path.join(args.src, args.qgz))
print("FileName: " + project.fileName())
# layout = QgsPrintLayout(project)
layout = QgsLayout(project)
# layout.initializeDefaults()
# åŠ è½½æ¨¡æ¿
# with open(r'Test.qpt', 'r', encoding='utf-8') as f:
with open(args.qpt, 'r', encoding='utf-8') as f:
with open(os.path.join(args.src, args.qpt), 'r', encoding='utf-8') as f:
    template_content = f.read()
doc = QDomDocument()
doc.setContent(template_content)
@@ -75,19 +84,23 @@
map = layout.referenceMap()
print('1:' + str(math.ceil(map.scale())))
# è®¾ç½®å›¾å±‚
# "阀室", "站场", "管道中心线", "矢量注记", "矢量图", "高德影像注记", "高德影像", "影像注记", "影像图"
# showLayers = ["阀室", "管道中心线", "矢量注记", "矢量图"]
showLayers = layout.customProperty("layers").split(',')
root = project.layerTreeRoot()
# setLayersValid(project, showLayers)
setItemVisibility(root, showLayers)
# set_layers_valid(project, showLayers)
set_item_visibility(root, showLayers)
# åˆ·æ–°
layout.refresh()
map.refresh()
# å¯¼å‡º
exporter = QgsLayoutExporter(layout)
# img_path = os.path.join(r"E:/terrait/TianJin/LFServer/QGIS", "render.png")
img_path = layout.customProperty("imgPath")
exporter.exportToImage(img_path, QgsLayoutExporter.ImageExportSettings())
# é€€å‡º
qgs.exitQgis()
ExportMap/Test.html
@@ -4,18 +4,70 @@
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
  <script src="js/jquery.1.12.4.js"></script>
  <script>
    function ajax(url, type, data, dataType, contentType, fn) {
      $.ajax({
        url: url,
        type: type,
        data: data,
        dataType: dataType || "json", // html、json、jsonp、script、text
        contentType: contentType || "application/json", // "application/x-www-form-urlencoded"
        success: function (data) {
          fn(data);
        },
        error: function (e) {
          console.error(e);
          fn();
        }
      });
    }
    function exportMap1() {
      var data = {
        title: "管道基础大数据平台(DW1-01)",
        pageSize: "A3",
        province: "河北省",
        scale: "1:5万",
        resolution: "5ç±³",
        date: "2022.11.09",
        layers: "阀室,管道中心线,矢量注记,矢量图",
        rotation: 45,
        xmin: 59.058299,
        ymin: 9.565969,
        ymax: 64.123674,
        xmax: 146.815824
      };
      ajax("Export/Start", "POST", JSON.stringify(data), null, null, function (rs) {
        console.log(rs);
      });
    }
    function exportMap2() {
      var data = {
        title: "管道基础大数据平台(DW1-02)",
        pageSize: "A5",
        province: "山东省",
        scale: "1:20万",
        resolution: "20ç±³",
        date: "2022.11.10",
        layers: "站场,管道中心线,高德影像注记,高德影像",
        rotation: 0,
        xmin: 103.394023,
        ymin: 30.690466,
        ymax: 37.871048,
        xmax: 112.534648
      };
      ajax("Export/Start", "POST", JSON.stringify(data), null, null, function (rs) {
        console.log(rs);
      });
    }
  </script>
</head>
<body>
  <h2>API Upload</h2>
  <form name="apiForm" method="post" enctype="multipart/form-data" action="Upload/Post">
    <div>
      <label for="apifiles">Select a File</label>
      <input name="apifiles" type="file" multiple="multiple" />
    </div>
    <div>
      <input type="submit" value="Upload" />
    </div>
  </form>
  <h2>出图测试</h2>
  <input type="button" value="出图-1" onclick="exportMap1()" />
  <input type="button" value="出图-2" onclick="exportMap1()" />
</body>
</html>
ExportMap/cs/ExportUtil.cs
@@ -1,4 +1,5 @@
using System;
using LFServer.Models;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
@@ -140,11 +141,55 @@
            }
        }
        public static void Generate()
        /// <summary>
        /// ç”Ÿæˆ
        /// </summary>
        /// <param name="args">出图参数</param>
        public static void Generate(ExportArgs args)
        {
            string date = DateStr;
            string sub = GetExportSubFolder();
            string qgz = "Test.qgz";
            args.imgPath = sub + "/" + date + ".png";
            args.qpt = date + ".qpt";
            CreateTemplate(args);
            ExecPython(PyFile, qgz, args.qpt);
        }
        /// <summary>
        /// åˆ›å»ºæ¨¡æ¿
        /// </summary>
        /// <param name="args">出图参数</param>
        public static void CreateTemplate(ExportArgs args)
        {
            string imgPath = Path.Combine(ExportFolder, args.imgPath);
            string templateFile = Path.Combine(SourcesPath, "Test.qpt");
            string qptFile = Path.Combine(SourcesPath, args.qpt);
            if (File.Exists(qptFile))
            {
                File.Delete(qptFile);
            }
            string xml = File.ReadAllText(templateFile);
            xml = xml
                .Replace("{dpi}", args.dpi.ToString())
                .Replace("{title}", args.title)
                .Replace("{rotation}", args.rotation.ToString())
                .Replace("{xmin}", args.xmin.ToString())
                .Replace("{ymin}", args.ymin.ToString())
                .Replace("{ymax}", args.ymax.ToString())
                .Replace("{xmax}", args.xmax.ToString())
                .Replace("{province}", args.province)
                .Replace("{scale}", args.scale)
                .Replace("{resolution}", args.resolution)
                .Replace("{date}", args.date)
                .Replace("{layers}", args.layers)
                .Replace("{imgPath}", imgPath);
            File.WriteAllText(qptFile, xml);
        }
    }
}