@@ -572,6 +572,52 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
572
572
layerElem.appendChild ( keywordListElem );
573
573
}
574
574
575
+ // CRS
576
+ QStringList crsList = createCRSListForLayer ( currentLayer );
577
+ appendCRSElementsToLayer ( layerElem, doc, crsList );
578
+
579
+ // Ex_GeographicBoundingBox
580
+ appendLayerBoundingBoxes ( layerElem, doc, currentLayer->extent (), currentLayer->crs () );
581
+
582
+ // only one default style in project file mode
583
+ QDomElement styleElem = doc.createElement ( " Style" );
584
+ QDomElement styleNameElem = doc.createElement ( " Name" );
585
+ QDomText styleNameText = doc.createTextNode ( " default" );
586
+ styleNameElem.appendChild ( styleNameText );
587
+ QDomElement styleTitleElem = doc.createElement ( " Title" );
588
+ QDomText styleTitleText = doc.createTextNode ( " default" );
589
+ styleTitleElem.appendChild ( styleTitleText );
590
+ styleElem.appendChild ( styleNameElem );
591
+ styleElem.appendChild ( styleTitleElem );
592
+ layerElem.appendChild ( styleElem );
593
+
594
+ // min/max scale denominatormScaleBasedVisibility
595
+ if ( currentLayer->hasScaleBasedVisibility () )
596
+ {
597
+ QString minScaleString = QString::number ( currentLayer->minimumScale () );
598
+ QString maxScaleString = QString::number ( currentLayer->maximumScale () );
599
+
600
+ if ( version == " 1.1.1" )
601
+ {
602
+ QDomElement scaleHintElem = doc.createElement ( " ScaleHint" );
603
+ scaleHintElem.setAttribute ( " min" , minScaleString );
604
+ scaleHintElem.setAttribute ( " max" , maxScaleString );
605
+ layerElem.appendChild ( scaleHintElem );
606
+ }
607
+ else
608
+ {
609
+ QDomElement minScaleElem = doc.createElement ( " MinScaleDenominator" );
610
+ QDomText minScaleText = doc.createTextNode ( minScaleString );
611
+ minScaleElem.appendChild ( minScaleText );
612
+ layerElem.appendChild ( minScaleElem );
613
+ QDomElement maxScaleElem = doc.createElement ( " MaxScaleDenominator" );
614
+ QDomText maxScaleText = doc.createTextNode ( maxScaleString );
615
+ maxScaleElem.appendChild ( maxScaleText );
616
+ layerElem.appendChild ( maxScaleElem );
617
+ }
618
+ }
619
+
620
+ // layer attribution
575
621
QString attribution = currentLayer->attribution ();
576
622
if ( !attribution.isEmpty () )
577
623
{
@@ -592,6 +638,7 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
592
638
layerElem.appendChild ( attribElem );
593
639
}
594
640
641
+ // layer metadata URL
595
642
QString metadataUrl = currentLayer->metadataUrl ();
596
643
if ( !metadataUrl.isEmpty () )
597
644
{
@@ -617,49 +664,37 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
617
664
layerElem.appendChild ( metaUrlElem );
618
665
}
619
666
620
- // CRS
621
- QStringList crsList = createCRSListForLayer ( currentLayer );
622
- appendCRSElementsToLayer ( layerElem, doc, crsList );
623
-
624
- // Ex_GeographicBoundingBox
625
- appendLayerBoundingBoxes ( layerElem, doc, currentLayer->extent (), currentLayer->crs () );
626
-
627
- // only one default style in project file mode
628
- QDomElement styleElem = doc.createElement ( " Style" );
629
- QDomElement styleNameElem = doc.createElement ( " Name" );
630
- QDomText styleNameText = doc.createTextNode ( " default" );
631
- styleNameElem.appendChild ( styleNameText );
632
- QDomElement styleTitleElem = doc.createElement ( " Title" );
633
- QDomText styleTitleText = doc.createTextNode ( " default" );
634
- styleTitleElem.appendChild ( styleTitleText );
635
- styleElem.appendChild ( styleNameElem );
636
- styleElem.appendChild ( styleTitleElem );
637
- layerElem.appendChild ( styleElem );
638
-
639
- // min/max scale denominatormScaleBasedVisibility
640
- if ( currentLayer->hasScaleBasedVisibility () )
667
+ // if the layer is published in WFS
668
+ // add a FeatureListURL element
669
+ // with an URL to the GML
670
+ QStringList wfsLayersId = wfsLayers ();
671
+ if ( wfsLayersId.contains ( currentLayer->id () ) )
641
672
{
642
- QString minScaleString = QString::number ( currentLayer->minimumScale () );
643
- QString maxScaleString = QString::number ( currentLayer->maximumScale () );
673
+ QDomElement featListUrlElem = doc.createElement ( " FeatureListURL" );
644
674
645
- if ( version == " 1.1.1" )
646
- {
647
- QDomElement scaleHintElem = doc.createElement ( " ScaleHint" );
648
- scaleHintElem.setAttribute ( " min" , minScaleString );
649
- scaleHintElem.setAttribute ( " max" , maxScaleString );
650
- layerElem.appendChild ( scaleHintElem );
651
- }
652
- else
675
+ QDomElement featListUrlFormatElem = doc.createElement ( " Format" );
676
+ QDomText featListUrlFormatText = doc.createTextNode ( " text/xml" );
677
+ featListUrlFormatElem.appendChild ( featListUrlFormatText );
678
+ featListUrlElem.appendChild ( featListUrlFormatElem );
679
+
680
+ QDomNodeList getCapNodeList = doc.elementsByTagName ( " GetCapabilities" );
681
+ if ( getCapNodeList.count () > 0 )
653
682
{
654
- QDomElement minScaleElem = doc.createElement ( " MinScaleDenominator" );
655
- QDomText minScaleText = doc.createTextNode ( minScaleString );
656
- minScaleElem.appendChild ( minScaleText );
657
- layerElem.appendChild ( minScaleElem );
658
- QDomElement maxScaleElem = doc.createElement ( " MaxScaleDenominator" );
659
- QDomText maxScaleText = doc.createTextNode ( maxScaleString );
660
- maxScaleElem.appendChild ( maxScaleText );
661
- layerElem.appendChild ( maxScaleElem );
683
+ QDomElement getCapElem = getCapNodeList.at ( 0 ).toElement ();
684
+ QDomNodeList getCapORNodeList = getCapElem.elementsByTagName ( " OnlineResource" );
685
+ if ( getCapORNodeList.count () > 0 )
686
+ {
687
+ QString getCapUrl = getCapORNodeList.at ( 0 ).toElement ().attribute ( " xlink:href" , " " );
688
+ QString featListUrl = getCapUrl + " SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=" + currentLayer->name () + " &OUPUTFORMAT=GML2" ;
689
+ QDomElement featListUrlORElem = doc.createElement ( " OnlineResource" );
690
+ featListUrlORElem.setAttribute ( " xmlns:xlink" , " http://www.w3.org/1999/xlink" );
691
+ featListUrlORElem.setAttribute ( " xlink:type" , " simple" );
692
+ featListUrlORElem.setAttribute ( " xlink:href" , featListUrl );
693
+ featListUrlElem.appendChild ( featListUrlORElem );
694
+ }
662
695
}
696
+
697
+ layerElem.appendChild ( featListUrlElem );
663
698
}
664
699
665
700
if ( fullProjectSettings )
0 commit comments