map tips
This commit is contained in:
parent
f318ef0225
commit
7a5e8e82b1
55
map_tips.py
Normal file
55
map_tips.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
BASEMAP_MAP_TIPS = "[% \"NAM\" %] [% if(\"ZNM\" != '', ' / ' || \"ZNM\", '') %]"
|
||||||
|
|
||||||
|
STATIONS_MAP_TIPS = "\
|
||||||
|
<h1>[% \"shortname\" %]</h1>\
|
||||||
|
<table>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Nummer:</th>\
|
||||||
|
<td>#[% \"number\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Behörde:</th>\
|
||||||
|
<td>[% \"agency\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Gewässer:</th>\
|
||||||
|
<td>[% \"water\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Kilometer:</th>\
|
||||||
|
<td>[% \"km\" %] km</td>\
|
||||||
|
</tr>\
|
||||||
|
</table>"
|
||||||
|
|
||||||
|
WATERLEVELS_MAP_TIPS = "\
|
||||||
|
<h1>[% \"shortname\" %]</h1>\
|
||||||
|
<table>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Nummer:</th>\
|
||||||
|
<td>#[% \"number\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Behörde:</th>\
|
||||||
|
<td>[% \"agency\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Gewässer:</th>\
|
||||||
|
<td>[% \"water\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Zeitstempel:</th>\
|
||||||
|
<td>[% \"timestamp\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>Aktueller Pegel:</th>\
|
||||||
|
<td>[% \"value\" %] [% \"unit\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>MNW, MHW:</th>\
|
||||||
|
<td>[% \"stateMnwMhw\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
<tr>\
|
||||||
|
<th style='text-align: left'>NSW, HSW:</th>\
|
||||||
|
<td>[% \"stateNswHsw\" %]</td>\
|
||||||
|
</tr>\
|
||||||
|
</table>"
|
||||||
@ -48,7 +48,7 @@ plugin_path:/home/patrick/.local/share/QGIS/QGIS3/profiles/default/python/plugin
|
|||||||
|
|
||||||
[files]
|
[files]
|
||||||
# Python files that should be deployed with the plugin
|
# Python files that should be deployed with the plugin
|
||||||
python_files: __init__.py pegelonline.py pegelonline_dockwidget.py pegelonline_dockwidget_graph.py po_runner.py
|
python_files: __init__.py pegelonline.py pegelonline_dockwidget.py pegelonline_dockwidget_graph.py po_runner.py map_tips.py
|
||||||
|
|
||||||
# The main dialog file that is loaded (not compiled)
|
# The main dialog file that is loaded (not compiled)
|
||||||
main_dialog: pegelonline_dockwidget_base.ui
|
main_dialog: pegelonline_dockwidget_base.ui
|
||||||
|
|||||||
@ -393,6 +393,20 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="line_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnMapTips">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|||||||
20
po_runner.py
20
po_runner.py
@ -5,6 +5,7 @@ from PyQt5 import QtGui
|
|||||||
from PyQt5.QtWidgets import QAction
|
from PyQt5.QtWidgets import QAction
|
||||||
from qgis._core import QgsVectorLayer, QgsProject, QgsLayerTreeLayer, QgsPalLayerSettings, QgsVectorLayerSimpleLabeling
|
from qgis._core import QgsVectorLayer, QgsProject, QgsLayerTreeLayer, QgsPalLayerSettings, QgsVectorLayerSimpleLabeling
|
||||||
|
|
||||||
|
from .map_tips import WATERLEVELS_MAP_TIPS, STATIONS_MAP_TIPS, BASEMAP_MAP_TIPS
|
||||||
from .pegelonline_dockwidget import PegelonlineDockWidget
|
from .pegelonline_dockwidget import PegelonlineDockWidget
|
||||||
from .pegelonline_dockwidget_graph import PegelonlineDockWidgetGraph
|
from .pegelonline_dockwidget_graph import PegelonlineDockWidgetGraph
|
||||||
from .pomodules.po_history import PoHistory
|
from .pomodules.po_history import PoHistory
|
||||||
@ -39,6 +40,7 @@ class PoRunner(object):
|
|||||||
self.ui.btnSelectRectangle.setDefaultAction(iface.actionSelectRectangle())
|
self.ui.btnSelectRectangle.setDefaultAction(iface.actionSelectRectangle())
|
||||||
self.ui.btnUnselectAll.setDefaultAction(iface.mainWindow().findChild(QAction, "mActionDeselectAll"))
|
self.ui.btnUnselectAll.setDefaultAction(iface.mainWindow().findChild(QAction, "mActionDeselectAll"))
|
||||||
self.ui.btnUnselectLayer.setDefaultAction(iface.mainWindow().findChild(QAction, "mActionDeselectActiveLayer"))
|
self.ui.btnUnselectLayer.setDefaultAction(iface.mainWindow().findChild(QAction, "mActionDeselectActiveLayer"))
|
||||||
|
self.ui.btnMapTips.setDefaultAction(iface.actionMapTips())
|
||||||
|
|
||||||
# Signale verbinden
|
# Signale verbinden
|
||||||
self._connect_basemap_signals()
|
self._connect_basemap_signals()
|
||||||
@ -48,7 +50,7 @@ class PoRunner(object):
|
|||||||
|
|
||||||
# basemap -----------------------------------------------------------------
|
# basemap -----------------------------------------------------------------
|
||||||
|
|
||||||
def _basemap_create(self, path, name, disconnect: Callable[[], None]) -> None | QgsVectorLayer:
|
def _basemap_create(self, path, name, disconnect: Callable[[], None], map_tips) -> None | QgsVectorLayer:
|
||||||
print("_basemap_create: %s" % (name,))
|
print("_basemap_create: %s" % (name,))
|
||||||
path = os.path.join(self.local_dir, "basemap", path)
|
path = os.path.join(self.local_dir, "basemap", path)
|
||||||
basemap = QgsVectorLayer(path, name, "ogr")
|
basemap = QgsVectorLayer(path, name, "ogr")
|
||||||
@ -61,6 +63,9 @@ class PoRunner(object):
|
|||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
basemap.willBeDeleted.connect(disconnect)
|
basemap.willBeDeleted.connect(disconnect)
|
||||||
|
|
||||||
|
# map-tips setzen
|
||||||
|
basemap.setMapTipTemplate(map_tips)
|
||||||
|
|
||||||
# zur Instanz hinzufügen
|
# zur Instanz hinzufügen
|
||||||
QgsProject.instance().addMapLayer(basemap, False)
|
QgsProject.instance().addMapLayer(basemap, False)
|
||||||
|
|
||||||
@ -82,7 +87,7 @@ class PoRunner(object):
|
|||||||
print("_cbBasemapLines_toggled: %s" % (checked,))
|
print("_cbBasemapLines_toggled: %s" % (checked,))
|
||||||
|
|
||||||
if self.lines is None and checked:
|
if self.lines is None and checked:
|
||||||
self.lines = self._basemap_create("waters.gpkg|layername=water_l", "Flüsse", self._basemap_disconnect_lines)
|
self.lines = self._basemap_create("waters.gpkg|layername=water_l", "Flüsse", self._basemap_disconnect_lines, BASEMAP_MAP_TIPS)
|
||||||
|
|
||||||
if self.lines is not None:
|
if self.lines is not None:
|
||||||
self._layer_set_visible(self.lines, checked)
|
self._layer_set_visible(self.lines, checked)
|
||||||
@ -93,7 +98,7 @@ class PoRunner(object):
|
|||||||
print("_cbBasemapAreas_toggled: %s" % (checked,))
|
print("_cbBasemapAreas_toggled: %s" % (checked,))
|
||||||
|
|
||||||
if self.areas is None and checked:
|
if self.areas is None and checked:
|
||||||
self.areas = self._basemap_create("waters.gpkg|layername=water_f", "Flächen", self._basemap_disconnect_areas)
|
self.areas = self._basemap_create("waters.gpkg|layername=water_f", "Flächen", self._basemap_disconnect_areas, BASEMAP_MAP_TIPS)
|
||||||
|
|
||||||
if self.areas is not None:
|
if self.areas is not None:
|
||||||
self._layer_set_visible(self.areas, checked)
|
self._layer_set_visible(self.areas, checked)
|
||||||
@ -128,7 +133,7 @@ class PoRunner(object):
|
|||||||
if self.stations is None and visible:
|
if self.stations is None and visible:
|
||||||
reader = PoStationsQgs()
|
reader = PoStationsQgs()
|
||||||
features = reader.getStationsFeatures()
|
features = reader.getStationsFeatures()
|
||||||
self.stations = self._layer_create_from_reader(reader.fields, reader.crs, features, "Stationen")
|
self.stations = self._layer_create_from_reader(reader.fields, reader.crs, features, "Stationen", STATIONS_MAP_TIPS)
|
||||||
self._layer_add_to_instance(self.stations, "styles/label_stations.qml", self._stations_disconnect)
|
self._layer_add_to_instance(self.stations, "styles/label_stations.qml", self._stations_disconnect)
|
||||||
|
|
||||||
if self.stations is not None:
|
if self.stations is not None:
|
||||||
@ -207,7 +212,7 @@ class PoRunner(object):
|
|||||||
if self.waterlevels is None and visible:
|
if self.waterlevels is None and visible:
|
||||||
reader = PoWaterlevelsQgs()
|
reader = PoWaterlevelsQgs()
|
||||||
features = reader.getWaterlevelsFeatures()
|
features = reader.getWaterlevelsFeatures()
|
||||||
self.waterlevels = self._layer_create_from_reader(reader.fields, reader.crs, features, "Pegelstände")
|
self.waterlevels = self._layer_create_from_reader(reader.fields, reader.crs, features, "Pegelstände", WATERLEVELS_MAP_TIPS)
|
||||||
self._layer_add_to_instance(self.waterlevels, "styles/label_waterlevels.qml", self.waterlevels_disconnect)
|
self._layer_add_to_instance(self.waterlevels, "styles/label_waterlevels.qml", self.waterlevels_disconnect)
|
||||||
|
|
||||||
if self.waterlevels is not None:
|
if self.waterlevels is not None:
|
||||||
@ -291,7 +296,7 @@ class PoRunner(object):
|
|||||||
layer_tree = QgsProject.instance().layerTreeRoot().findLayer(basemap.id())
|
layer_tree = QgsProject.instance().layerTreeRoot().findLayer(basemap.id())
|
||||||
layer_tree.setItemVisibilityChecked(visible)
|
layer_tree.setItemVisibilityChecked(visible)
|
||||||
|
|
||||||
def _layer_create_from_reader(self, fields, crs, features, title) -> None | QgsVectorLayer:
|
def _layer_create_from_reader(self, fields, crs, features, title, map_tips) -> None | QgsVectorLayer:
|
||||||
print("_layer_create_from_reader")
|
print("_layer_create_from_reader")
|
||||||
if features is None:
|
if features is None:
|
||||||
return None
|
return None
|
||||||
@ -302,6 +307,9 @@ class PoRunner(object):
|
|||||||
layer = QgsVectorLayer(layer_path, title, "memory")
|
layer = QgsVectorLayer(layer_path, title, "memory")
|
||||||
provider = layer.dataProvider()
|
provider = layer.dataProvider()
|
||||||
|
|
||||||
|
# map-tips setzen
|
||||||
|
layer.setMapTipTemplate(map_tips)
|
||||||
|
|
||||||
provider.addAttributes(fields)
|
provider.addAttributes(fields)
|
||||||
layer.updateFields()
|
layer.updateFields()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user