Announcement

Collapse
No announcement yet.

XLST alle Koordinaten eine Polygons in einem xml auflisten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XLST alle Koordinaten eine Polygons in einem xml auflisten

    Hallo

    ich versuche gerade alle Koordinaten eines Polygones in ein xml mit xslt einzutragen. HIerbei ist allerdings die Anzahl der Koordinaten jedesmal unterschiedlich


    Ich rufe mein xslt Skript dabei mit folgenden Parametern auf :

    Code:
     -stringparam NumberOfCoordinates 44   -stringparam 1 [25.96;15.64] -stringparam 2 [25.30;19.45] -stringparam 3 [24.71;23.27] -stringparam 4 [24.18;27.09] -stringparam 5 [23.70;30.91] -stringparam 6 [23.28;34.73] -stringparam 7 [22.92;38.55] -stringparam 8 [22.63;42.37] -stringparam 9 [22.44;46.19] -stringparam 10 [22.38;50.00] -stringparam 11 [22.45;53.81] -stringparam 12 [22.70;57.60] -stringparam 13 [23.19;61.39] -stringparam 14 [24.04;65.16] -stringparam 15 [25.42;68.91] -stringparam 16 [27.69;72.61] -stringparam 17 [27.69;72.61] -stringparam 18 [-0.49;72.79] -stringparam 19 [-11.92;71.67] -stringparam 20 [-20.01;70.33] -stringparam 21 [-28.13;68.34] -stringparam 22 [-42.83;62.10] -stringparam 23 [-42.83;62.10] -stringparam 24 [-36.70;59.59] -stringparam 25 [-31.45;56.83] -stringparam 26 [-26.98;53.85] -stringparam 27 [-23.16;50.72] -stringparam 28 [-19.86;47.46] -stringparam 29 [-16.99;44.09] -stringparam 30 [-14.48;40.65] -stringparam 31 [-12.26;37.14] -stringparam 32 [-10.28;33.58] -stringparam 33 [-8.46;29.99] -stringparam 34 [-6.89;26.33] -stringparam 35 [-5.44;22.66] -stringparam 36 [-4.10;18.96] -stringparam 37 [-2.89;15.23] -stringparam 38 [-1.77;11.49] -stringparam 39 [-1.77;11.49] -stringparam 40 [7.08;13.18] -stringparam 41 [10.62;13.76] -stringparam 42 [13.64;14.21] -stringparam 43 [17.39;14.72] -stringparam 44 [25.96;15.64]
    nun möchte ich in einer Art Schleife diese Werte in xslt in mein footprint feature schreiben ungefähr so wie im folgenden Code Beispiel. Allerdings denke ich das ich hier einiges vermischt habe und wie kann ich in der Schleife die zähl variable i auswählen?

    Code:
          <feature key="footprint">
            <feature key="multiExtentOf">
               <xsl:for-each select="1 to $NumberOfCoordinates">
                <feature key="posList">
                  <feature key="longitude"><xsl:value-of select="substring-after($i,';')"/></feature>
                  <feature key="latitude"><xsl:value-of select="substring-before($i,';')"/></feature>
                </feature>
              </xsl:for-each>
            </feature>
          </feature>
    Ich hoffe mir kann jemand hierbei einen Tip geben. Oder eventuell einanderes vorgehen beschreiben

    Vielen Dank

    Florian

  • #2
    So ich habe es nun selbst herausgefunden

    ich konnte leider meine Parameter nicht einzeln übergeben sondern musste diese in einem stringparam übergeben

    Code:
    -stringparam Coordinates 25.96,15.64!25.30,19.45!24.71,23.27!24.18,27.09!23.70,30.91!23.28,34.73!22.92,38.55!22.63,42.37!22.44,46.19!22.38,50.00!22.45,53.81!22.70,57.60!23.19,61.39!24.04,65.16!25.42,68.91!27.69,72.61!27.69,72.61!-0.49,72.79!-11.92,71.67!-20.01,70.33!-28.13,68.34!-42.83,62.10!-42.83,62.10!-36.70,59.59!-31.45,56.83!-26.98,53.85!-23.16,50.72!-19.86,47.46!-16.99,44.09!-14.48,40.65!-12.26,37.14!-10.28,33.58!-8.46,29.99!-6.89,26.33!-5.44,22.66!-4.10,18.96!-2.89,15.23!-1.77,11.49!-1.77,11.49!7.08,13.18!10.64,13.76!13.64,14.21!17.39,14.72!25.96,15.64
    Der Grund hierfür war das xsltproc nur eine Begrenzte Anzahl an -stringparam zulässt.
    Zusätzlich musste ich noch die Trennzeichen Editieren da das semikolon für ärger sorgte

    Den Übergebenen Parameter konnte ich nun mit folgendem Script zerteilen und die einzelnen Koordinaten ausgeben

    Code:
    
    <xsl:template name="tokenize-spatial">
         <xsl:param name="text" select="$Coordinates"/>
         <xsl:param name="separator" select="'!'"/>
         <xsl:choose>
              <xsl:when test="not(contains($text, $separator))">
                  <feature key ="point">
                     <feature key = "latitude">
                         <xsl:variable name="Coordinates_complete" select="normalize-space($text)"/>
                         <xsl:value-of select="substring-before($Coordinates_complete,',')"/>
                     </feature>
                     <feature key = "longitude">
                         <xsl:variable name="Coordinates_complete" select="normalize-space($text)"/>
                        <xsl:value-of select="substring-after($Coordinates_complete,',')"/>
                     </feature>
                  </feature>
              </xsl:when>
              <xsl:otherwise>
                  <feature key = "point">
                      <feature key = "latitude">
                         <xsl:variable name="Coordinates_complete" select="normalize-space(substring-before($text, $separator))"/>
                         <xsl:value-of select="substring-before($Coordinates_complete,',')"/>
                      </feature>
                      <feature key = "longitude">
                         <xsl:variable name="Coordinates_complete" select="normalize-space(substring-before($text, $separator))"/>
                         <xsl:value-of select="substring-after($Coordinates_complete,',')"/>
                      </feature>
                   </feature>
                  <xsl:call-template name="tokenize-spatial">
                      <xsl:with-param name="text" select="substring-after($text, $separator)"/>
                  </xsl:call-template>
              </xsl:otherwise>
         </xsl:choose>
     </xsl:template>
    Grüße

    Florian

    Comment

    Working...
    X