Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Probleme mit Darstellung großer SVG-Dateien
Forum Updated to NodeBB v4.3 + New Features

Probleme mit Darstellung großer SVG-Dateien

Scheduled Pinned Locked Moved Solved German
5 Posts 2 Posters 1.1k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • _ Offline
    _ Offline
    ___Hendrik___123
    wrote on last edited by
    #1

    Mein Name ist Hendrik und ich entwickle seit ca. 1,5 Jahren Anwendungssoftware mit folgender Konfiguration:

    • Debian Linux x64 v9.13
    • Python v3.5.3
    • Qt 5.15.0 unter PySide2
    • als Entwicklungs-GUI setzte ich Eclipse ein

    Seit einigen Wochen beschäftige ich mit OpenStreetMap (OSM). Ich habe den Datenbestand der OSM-Daten aus Deutschland in einer lokalen PostGreSQL-Datenbank und habe mir mit Hilfe der Bibliotheken »mapnik« und »cairo« einen Renderer geschrieben, der mir aus einen Rechteck von GPS-Koordinaten eine SVG-Vektorgraphik rendert. Die gerenderten Graphiken sehen gut aus, wenn ich sie z.B. mit InkScape öffne.

    svgdorf_inkscape.png

    Jetzt kommt das Problem. Wenn ich die SVG-Graphic in Qt öffne, bekomme ich zunächst in der Konsole 298 Warnungen der Form

    qt.svg: <SVG-FILE>:71772: Could not resolve property: #pattern0
    ...
    qt.svg: <SVG-FILE>:71772: Could not resolve property: #pattern297
    

    und anschließend ca. 8.500 Zeilen der Form

    qt.svg: link #glyph0-1 is undefined!
    ...
    qt.svg: link #glyph241-0 is undefined!
    

    Die Links sind allesamt vorhanden, ich habe ca. 70 - 80 Links überprüft. Das Ergebnis in meiner Application sieht dann leider so aus:

    svgdorf_qt.png

    Alle Bezeichnungen fehlen, lediglich die Bezeichnungen mit Outline-Schriften sind zu erkennen.

    Ich benutzte ein vom Standard abgeleitetes QtWidgets.QGraphicsView(), in dessen QGraphicsScene ich ein QtSvg.QGraphicsItem() einfüge. Der Code sieht so aus:

    class MyGraphicsView(QtWidgets.QGraphicsView):
    
        def __init__(self, parent):
            super().__init__(parent)
            self._scene = QtWidgets.QGraphicsScene(self)
            self._renderer = QtSvg.QSvgRenderer()
            self.setScene(self._scene)
    
    def load_map(self):
        # set graphic scene - renderView ist vom Typ »MyGraphicsView()«
        _scene = self.ui.renderView._scene
        _scene.setSceneRect(0, 0, 8000, 8000)
        # SVG Image - self.SVG_Image enthält den Pfad zur SVG-Graphic
        _svg_item = QtSvg.QGraphicsSvgItem(self.SVG_Image)
        _scene.addItem(_svg_item)
        #
        self.ui.renderView.fitInView(_svg_item, Qt.KeepAspectRatio)
    
    

    Ich habe nach den Warnungen gesucht, aber leider kein für mich brauchbares Ergebnis gefunden. Habe lediglich gefunden, wie ich mit einer Umgebungsvariablen die Meldungen unterdrücken kann, aber das Ergebnis fand ich nicht wirklich hilfreich ;-)

    Kann mir jemand von euch helfen was ich tun kann, dass die SVG-Graphic sauber dargestellt wird? Kann es ggf. sein, dass Qt mit sehr großen SVG-Graphiken Probleme hat? Meine 8000x8000 große SVG-Graphik hat ca. 20 MB, aber die Probleme sind auch bei kleiner gerenderten SVG-Graphiken, z.B. 800x600 Pixel.

    Danke im voraus und viele Grüße, Hendrik.

    raven-worxR 1 Reply Last reply
    0
    • _ ___Hendrik___123

      Mein Name ist Hendrik und ich entwickle seit ca. 1,5 Jahren Anwendungssoftware mit folgender Konfiguration:

      • Debian Linux x64 v9.13
      • Python v3.5.3
      • Qt 5.15.0 unter PySide2
      • als Entwicklungs-GUI setzte ich Eclipse ein

      Seit einigen Wochen beschäftige ich mit OpenStreetMap (OSM). Ich habe den Datenbestand der OSM-Daten aus Deutschland in einer lokalen PostGreSQL-Datenbank und habe mir mit Hilfe der Bibliotheken »mapnik« und »cairo« einen Renderer geschrieben, der mir aus einen Rechteck von GPS-Koordinaten eine SVG-Vektorgraphik rendert. Die gerenderten Graphiken sehen gut aus, wenn ich sie z.B. mit InkScape öffne.

      svgdorf_inkscape.png

      Jetzt kommt das Problem. Wenn ich die SVG-Graphic in Qt öffne, bekomme ich zunächst in der Konsole 298 Warnungen der Form

      qt.svg: <SVG-FILE>:71772: Could not resolve property: #pattern0
      ...
      qt.svg: <SVG-FILE>:71772: Could not resolve property: #pattern297
      

      und anschließend ca. 8.500 Zeilen der Form

      qt.svg: link #glyph0-1 is undefined!
      ...
      qt.svg: link #glyph241-0 is undefined!
      

      Die Links sind allesamt vorhanden, ich habe ca. 70 - 80 Links überprüft. Das Ergebnis in meiner Application sieht dann leider so aus:

      svgdorf_qt.png

      Alle Bezeichnungen fehlen, lediglich die Bezeichnungen mit Outline-Schriften sind zu erkennen.

      Ich benutzte ein vom Standard abgeleitetes QtWidgets.QGraphicsView(), in dessen QGraphicsScene ich ein QtSvg.QGraphicsItem() einfüge. Der Code sieht so aus:

      class MyGraphicsView(QtWidgets.QGraphicsView):
      
          def __init__(self, parent):
              super().__init__(parent)
              self._scene = QtWidgets.QGraphicsScene(self)
              self._renderer = QtSvg.QSvgRenderer()
              self.setScene(self._scene)
      
      def load_map(self):
          # set graphic scene - renderView ist vom Typ »MyGraphicsView()«
          _scene = self.ui.renderView._scene
          _scene.setSceneRect(0, 0, 8000, 8000)
          # SVG Image - self.SVG_Image enthält den Pfad zur SVG-Graphic
          _svg_item = QtSvg.QGraphicsSvgItem(self.SVG_Image)
          _scene.addItem(_svg_item)
          #
          self.ui.renderView.fitInView(_svg_item, Qt.KeepAspectRatio)
      
      

      Ich habe nach den Warnungen gesucht, aber leider kein für mich brauchbares Ergebnis gefunden. Habe lediglich gefunden, wie ich mit einer Umgebungsvariablen die Meldungen unterdrücken kann, aber das Ergebnis fand ich nicht wirklich hilfreich ;-)

      Kann mir jemand von euch helfen was ich tun kann, dass die SVG-Graphic sauber dargestellt wird? Kann es ggf. sein, dass Qt mit sehr großen SVG-Graphiken Probleme hat? Meine 8000x8000 große SVG-Graphik hat ca. 20 MB, aber die Probleme sind auch bei kleiner gerenderten SVG-Graphiken, z.B. 800x600 Pixel.

      Danke im voraus und viele Grüße, Hendrik.

      raven-worxR Offline
      raven-worxR Offline
      raven-worx
      Moderators
      wrote on last edited by
      #2

      @___Hendrik___123
      der Qt SVG renderer/interpreter unterstützt einfach nicht alle Features. Insbesondere hat er Probleme mit styling.
      Wenn du QtSvg verwenden willst wird dir nichts anderes übrig bleiben als das generierte SVG an sich zu ändern.

      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
      If you have a question please use the forum so others can benefit from the solution in the future

      _ 1 Reply Last reply
      0
      • raven-worxR raven-worx

        @___Hendrik___123
        der Qt SVG renderer/interpreter unterstützt einfach nicht alle Features. Insbesondere hat er Probleme mit styling.
        Wenn du QtSvg verwenden willst wird dir nichts anderes übrig bleiben als das generierte SVG an sich zu ändern.

        _ Offline
        _ Offline
        ___Hendrik___123
        wrote on last edited by
        #3

        @raven-worx
        Danke für deine Antwort! Ich muss nicht unbedingt QtSvg verwenden, gibt es ggf. Alternativen die du mit empfehlen kannst und die die Probleme nicht haben?

        raven-worxR 1 Reply Last reply
        0
        • _ ___Hendrik___123

          @raven-worx
          Danke für deine Antwort! Ich muss nicht unbedingt QtSvg verwenden, gibt es ggf. Alternativen die du mit empfehlen kannst und die die Probleme nicht haben?

          raven-worxR Offline
          raven-worxR Offline
          raven-worx
          Moderators
          wrote on last edited by raven-worx
          #4

          @___Hendrik___123
          persönlich habe ich keine Empfehlung.
          Aber eine google suche hat z.B. folgendes Ergebnis gebracht: librsvg (oder irgendeine andere 3rdparty lib)
          k.A. was deine Anforderungen sind, aber könnte ein wenig umständlich sein unter Windows.

          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
          If you have a question please use the forum so others can benefit from the solution in the future

          _ 1 Reply Last reply
          0
          • raven-worxR raven-worx

            @___Hendrik___123
            persönlich habe ich keine Empfehlung.
            Aber eine google suche hat z.B. folgendes Ergebnis gebracht: librsvg (oder irgendeine andere 3rdparty lib)
            k.A. was deine Anforderungen sind, aber könnte ein wenig umständlich sein unter Windows.

            _ Offline
            _ Offline
            ___Hendrik___123
            wrote on last edited by
            #5

            @raven-worx
            Danke, ich schaue mir die Libs mal an. Die Anforderungen sind, dass das SVG so aussieht wie ich es gerendert habe und mit Windows habe ich bei dieser Sache glücklicherweise nix zu tun ;-)

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved