fr.geologyidea.com
Suite

Ajout d'une couche de base pour les couches WMS à partir de WMSCapabilitiesStore

Ajout d'une couche de base pour les couches WMS à partir de WMSCapabilitiesStore


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


J'utilise le code suivant pour obtenir mes couches WMS via le magasin WMSCapabilities de GeoExt et les afficher dans une grille pour que les utilisateurs puissent les sélectionner et les ajouter au panneau de la carte. mais j'ai besoin d'ajouter aussi une couche de base mais je n'ai pas pu réussir.

Ext.onReady(function() { app = new Ext.Viewport({ layout: "border", items: items }); }); var map = new OpenLayers.Map(null, { projection: new OpenLayers.Projection("EPSG:3857"), allOverlays: true, maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34), units: ' m', numZoomNiveaux : 10 }); items.push({ xtype: "gx_mappanel", ref: "mapPanel", region: "center", map: map }); control.push( nouveau OpenLayers.Control.Navigation(), nouveau OpenLayers.Control.Attribution(), nouveau OpenLayers.Control.PanPanel(), nouveau OpenLayers.Control.ZoomPanel() ); items.push({ xtype: "grid", ref: "capsGrid", // rend la grille disponible en tant que app.capsGrid title: "Request/Status Map Layers", region: "north", height: 150, viewConfig: { forceFit : true}, store : new GeoExt.data.WMSCapabilitiesStore({ url : "data/getcap_1.3.0.xml", autoLoad : true }), colonnes : [ {header : "Name", dataIndex : "name", triable : true}, {header: "Title", dataIndex: "title", triable: true}, {header: "Abstract", dataIndex: "abstract"} ], bbar: [{ text: "Add to Map", handler : function() { app.capsGrid.getSelectionModel().each(function(record) { var clone = record.clone(); bbox = clone.get("llbbox"); clone.getLayer().mergeNewParams({ format : "image/png", transparent: true }); var osmLayer = new OpenLayers.Layer.OSM(); //app.mapPanel.layers.add(osmLayer); app.mapPanel.layers.add(clone); app .mapPanel.map.zoomToExtent( OpenLayers.Bounds.fromArray(clone.get("llbbox")).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:3857")) ) ; }); } }] });   

Vous devrez demander votre couche dans le bon srs et transformer la bbox que vous avez récupérée à partir de la variable clone


Bn tin TMV

  1. Ouvrez votre carte dans votre logiciel d'édition d'images.
    Recadrer les parties non géographiques de la carte, c'est-à-dire. supprimer les zones de marge en dehors des limites de la carte. Certains logiciels gratuits utiles pour l'édition et le recadrage d'images incluent ImageMagick, Irfanview et GIMP.
  2. Ouvrez le logiciel QGIS.
  3. Pour commencer, vous devez ajouter une couche de carte de base que vous utiliserez pour géoréférencer votre carte.
    Une couche de fond de carte est essentiellement une carte déjà géoréférencée.
    Dans QGIS, nous avons la possibilité d'ajouter une cartographie de base conservée dans différents formats de fichiers.
    Il est possible d'ajouter des images ou des jeux de données, et ceux-ci peuvent être stockés localement ou à distance.
    Option 1 - Ajouter un fichier image géoréférencé - Couche raster :
    Cliquez sur ce lien pour afficher une liste de cartes géoréférencées que nous mettons à votre disposition.
    Dans la barre de menu supérieure, cliquez sur Couche, puis sélectionnez Ajouter une couche raster

Utilisez le navigateur de fichiers pour localiser le fichier de carte de base que vous souhaitez ajouter.
Sélectionnez-le et cliquez Ouvert.
La carte devrait maintenant être affichée dans votre espace de travail.
Toutes les cartes que vous ajoutez sont affichées sous forme de couches dans la fenêtre Couches située sur le côté gauche de l'espace de travail QGIS.

Si vous faites un clic droit sur un calque dans la fenêtre Calques, un menu s'affichera. Deux options de zoom utiles sont disponibles dans ce menu. Utilisez Zoom sur l'étendue de la couche pour zoomer sur l'étendue de cette couche de carte. Utilisez Zoom to best Scale pour zoomer sur la taille réelle de la carte en fonction de sa résolution.
Remarque : Modification du système de coordonnées de votre projet ou d'un calque
Lorsque QGIS est démarré, il définit le système de coordonnées sur celui de votre dernier projet ou par défaut sur le système de coordonnées WGS84. Il est conseillé de spécifier le système de coordonnées que votre projet utilisera. Sous l'option Paramètres dans la barre de menu supérieure, sélectionnez Propriétés du projet. La boîte de dialogue Propriétés du projet s'affiche. Cette boîte de dialogue a des options pour sélectionner parmi une liste de systèmes de coordonnées disponibles ou pour rechercher un système de coordonnées spécifique par son numéro EPSG. Vous pouvez également modifier le système de coordonnées de n'importe quel calque à tout moment en cliquant dessus avec le bouton droit dans la fenêtre Calques et en sélectionnant Propriétés dans le menu.
Nos cartes géoréférencées utilisent soit le
Réseau national britannique (EPSG:27700), ou le Mercator sphérique systèmes de coordonnées. Pour plus d'informations, consultez notre page sur Systèmes de référence de coordonnées.
Option 2. Ajoutez une couche de service de carte Web (WMS) à partir d'un serveur Web.
Cliquez sur ce lien pour afficher une liste des couches WMS que nous mettons à votre disposition.
Dans la barre de menu supérieure, cliquez sur Couche, puis sélectionnez Ajouter une couche WMS.

La fenêtre Ajouter des couches à partir d'un serveur s'ouvrira.

Clique le Nouveau bouton pour configurer une nouvelle connexion WMS
La boîte de dialogue Créer une nouvelle connexion WMS s'ouvrira.

Dans le champ Nom, saisissez un nom pour la connexion WMS (par ex. Plan du bureau de poste de Barthélemy, 1865).
Dans le champ URL, saisissez l'URL de la couche WMS que vous souhaitez ajouter.
Si vous utilisez l'une de nos couches WMS, copiez-la et collez-la à partir de notre liste de couches WMS
Vous pouvez bien sûr ajouter une couche WMS à partir de votre propre serveur ou d'un autre serveur auquel vous pouvez accéder.
Une fois que vous avez rempli ces champs, cliquez sur le d'accord bouton. Cela vous ramènera à la fenêtre Ajouter une couche à partir d'un serveur.
Cliquez maintenant sur le Relier pour se connecter à la couche WMS.
La couche WMS sera maintenant affichée sous forme de liste de couches.
Ces couches correspondent aux niveaux de zoom de la couche WMS.
Cliquez sur toutes les couches pour les sélectionner.

Cliquez maintenant sur le Ajouter bouton pour terminer l'ajout de la couche WMS à votre espace de travail
La couche WMS devrait maintenant être affichée dans votre espace de travail et vous pouvez utiliser les outils de zoom et de panoramique pour la parcourir et l'afficher dans l'espace de travail QGIS. Vous les trouverez dans les barres d'outils affichées au-dessus de l'espace de travail.

Allez maintenant dans la fenêtre Espace de travail qui affiche votre fond de carte.
Utilisez les outils de panoramique et de zoom en haut de cette fenêtre pour déplacer le fond de carte au même emplacement.

Revenez à la fenêtre du géoréférenceur et sélectionnez l'outil Ajouter un point de contrôle.
Cliquez maintenant sur votre carte dans la fenêtre du géoréférenceur où vous souhaitez définir un point de contrôle.

Cela définira un point sur votre carte et affichera la boîte de dialogue Entrer les coordonnées de la carte.

Clique le À partir du canevas de la carte bouton. La fenêtre Espace de travail va maintenant s'afficher.
Cliquez maintenant sur la carte de base à l'emplacement correspondant où vous souhaitez lier votre point de contrôle.

Vous serez de nouveau renvoyé à la fenêtre Georeferencer.
Cliquez sur d'accord pour lier les points que vous avez définis et terminer le réglage de ce point de contrôle.
Le nombre minimum de points de contrôle que vous devez définir est de trois. Pour un meilleur ajustement, vous devrez ajouter plus de points de contrôle.
Les points de contrôle que vous définissez sont affichés dans le tableau des points de contrôle du géoréférenceur (GCP) au bas de la fenêtre du géoréférenceur.


Ajouter un GeoTiff¶

Le GeoTIFF est un format de données raster géospatial largement utilisé : il est composé d'un seul fichier contenant à la fois les données et les informations de géoréférencement (à ne pas confondre avec le triplet de fichiers .tiff/.tfw/.prj, qui est considéré comme un &# 8220world image” dans GeoServer). Cette section fournit des instructions pour ajouter et publier un fichier GeoTIFF.

Ouvrez le navigateur Web et accédez à la page d'accueil de GeoServer.

Sélectionnez Ajouter des magasins dans l'interface.

Sélectionnez GeoTIFF - Tagged Image File Format avec des informations géographiques dans l'ensemble des sources de données raster disponibles.

Spécifiez un nom propre (par exemple, 13tde815295_200803_0x6000m_cl ) dans le champ Nom de la source de données de l'interface.

Cliquez sur le lien Parcourir afin de définir l'emplacement GeoTIFF dans le champ URL.

Le 13tde815295_200803_0x6000m_cl.tif est situé à $ TRAINING_ROOT /data/user_data/aerial/13tde815295_200803_0x6000m_cl.tif (sous Windows %TRAINIG_ROOT%datauser_dataaerial13tde815295_200803_0x6000m_cl.tif )

Publiez la couche en cliquant sur le lien de publication.

Vérifiez que les champs Coordinate Reference Systems et Bounding Boxes sont correctement définis et cliquez sur Enregistrer .

À ce stade, le GeoTIFF est publié avec GeoServer. Vous pouvez utiliser l'aperçu de la couche pour inspecter les données.


2 Carte de l'histoire de l'empreinte mondiale d'Esri

Le deuxième sur la liste est la Global Footprint Story Map d'Esri, créée par Global Footprint Network, une organisation internationale à but non lucratif. Cette organisation travaille avec des entreprises, des gouvernements et des particuliers pour fournir des prévisions sur l'avenir de la gestion des ressources naturelles. Dans le cadre de l'un de leurs projets, Global Footprint Network a créé une Esri Map Story pour montrer visuellement la comparaison mondiale de la biocapacité de chaque pays par rapport à son empreinte écologique. Cette carte indique que les humains dépensent plus que ce que la nature peut renouveler, les nations en vert sont les « créanciers » et les nations rouges sont les « débiteurs » qui exigent plus de la nature.

Carte de l'empreinte mondiale : Esri

J'ai eu l'impression que la Global Footprint Story Map d'Esri est très complexe, car il faut avoir une compréhension de base de l'économie ou de l'environnement pour comprendre le message véhiculé. Malgré cela, la Story Map fait un excellent travail en permettant à l'utilisateur de personnaliser et de manipuler la carte pour récupérer les informations appropriées. De plus, j'ai été très heureux de voir que la Story Map permettait à l'utilisateur de naviguer dans chaque pays avec une fenêtre contextuelle fournissant des statistiques, plutôt que d'être redirigé vers une autre page Web.


5 réponses 5

Les ingrédients secs sont plus légers, moins denses et moins visqueux que les ingrédients humides, ce qui signifie qu'ils auront tendance à flotter sur le mouillé. Les ingrédients secs qui entrent en contact avec le mouillé formeront une sorte de peau, empêchant le mouillé de se répartir dans le sec. Vous vous retrouvez avec des touffes d'ingrédients secs secs, non mélangés et (en fin de compte) non cuits.

Verser humide dans sec force l'agitation et une distribution plus uniforme.

La plupart des gâteaux, muffins, biscuits et biscuits sont fabriqués à partir de deux méthodes de mélange principales :

- La "Méthode des Deux Bols" (alias Méthode Muffin) : Cette méthode de mélange est principalement utilisée lorsqu'une matière grasse liquide est utilisée, généralement de l'huile mais parfois du beurre fondu. Cette méthode de mélange a les ingrédients secs dans un bol avec un puits au centre afin que les ingrédients liquides puissent être ajoutés. Mélanger les ingrédients humides et secs séparément les uns des autres permet à chaque type d'être soigneusement mélangé/mélangé sans craindre de trop mélanger et donc de durcir la texture. La ténacité est due à l'agitation lorsque des liquides à base d'eau sont introduits dans la farine de blé. Le puits au centre des ingrédients secs permet de replier les ingrédients secs sur le liquide, puis de les incorporer doucement jusqu'à ce qu'ils soient mélangés. Ajouter le liquide à plat sur le dessus ou la farine sur le liquide conduirait à un mélange excessif.

- La "Méthode Crémant": Cette méthode de mélange est utilisée pour les articles pour lesquels une mie plus fine est souhaitée (gâteaux, muffins en chapelure fine..généralement myrtille) et utilise des graisses solides qui sont crémées avec du sucre pour l'aération, puis les arômes sont ajoutés (ajoutés à la graisse car la plupart des extraits sont solubles dans l'huile et répartissent mieux la saveur dans la graisse plutôt que dans les ingrédients à base d'eau), suivis des œufs. Enfin, le lait et les ingrédients secs sont généralement ajoutés alternativement, en commençant et en terminant par la farine. La méthode de crémage produit une mie plus fine et plus tendre grâce à :

rapport matière grasse/farine plus élevé (plus de matière grasse = tendreté)

plus de sucre utilisé que dans la méthode "deux bols". Le sucre est un agent attendrissant (parmi beaucoup d'autres choses) en raison de sa nature hygroscopique (capacité à attirer l'humidité de l'atmosphère environnante. Regardez ici pour en savoir plus sur le sucre.

L'ajout de farine aide d'abord à enrober les protéines (gluten) de graisse afin qu'elles ne puissent pas former de liens solides avec d'autres brins de gluten, "raccourcissant" ainsi les brins de gluten et produisant un gâteau plus tendre. Si du liquide est introduit en premier, le gluten ne sera pas lubrifié aussi bien par la graisse et si trop de liquide est ajouté à la graisse (en particulier si le liquide n'est pas à température ambiante), cela peut provoquer l'agglutination de la graisse et le le mélange apparaîtra caillé. Cela conduira à une texture plus grossière dans le gâteau. Le liquide doit être émulsionné dans la graisse plutôt que d'avoir la graisse entourée par le liquide.


Ajouter un GeoTiff¶

Le GeoTIFF est un format de données raster géospatial largement utilisé : il est composé d'un seul fichier contenant à la fois les données et les informations de géoréférencement (à ne pas confondre avec le triplet de fichiers .tiff/.tfw/.prj, qui est considéré comme un &# 8220world image” dans GeoServer). Cette section fournit des instructions pour ajouter et publier un fichier GeoTIFF.

Ouvrez le navigateur Web et accédez à la page d'accueil de GeoServer.

Sélectionnez Ajouter des magasins dans l'interface.

Sélectionnez GeoTIFF - Tagged Image File Format avec des informations géographiques dans l'ensemble des sources de données raster disponibles.

Spécifiez un nom propre (par exemple, 13tde815295_200803_0x6000m_cl ) dans le champ Nom de la source de données de l'interface.

Cliquez sur le lien Parcourir afin de définir l'emplacement GeoTIFF dans le champ URL.

Le 13tde815295_200803_0x6000m_cl.tif est situé à $ TRAINING_ROOT /data/user_data/aerial/13tde815295_200803_0x6000m_cl.tif (sous Windows %TRAINIG_ROOT%datauser_dataaerial13tde815295_200803_0x6000m_cl.tif )

Publiez la couche en cliquant sur le lien de publication.

Vérifiez que les champs Coordinate Reference Systems et Bounding Boxes sont correctement définis et cliquez sur Enregistrer .

À ce stade, le GeoTIFF est publié avec GeoServer. Vous pouvez utiliser l'aperçu de la couche pour inspecter les données.


Ajout de fonds de carte hébergés sur des serveurs REST ArcGIS à QGIS

Il y a quelque temps, j'ai mentionné une méthode d'ajout de cartes de base de serveur ArcGIS REST à QGIS. Eh bien, j'ai trouvé d'autres cartes de base qui fonctionnent sur cette page Web :

Copiez le code dans la console python et appuyez sur retour (plugins - python). Seules les cartes "Tiled" semblent fonctionner.

J'ai également découvert que les cartes de base peuvent être enregistrées en tant que GeoTIFF pour un accès hors ligne. Assurez-vous de cliquer sur Étendue de la vue de la carte et de réduire la résolution de la couche à quelque chose de raisonnable, de sorte que les lignes et les colonnes se situent entre 5 000 et 10 000. Les serveurs REST sont lents, l'enregistrement de la carte a pris près de 10 minutes. Je suppose que vous ne devriez pas le faire souvent pour épargner le serveur.

Il peut y avoir des artefacts dans le GeoTIFF. Dans mon cas, la bande bleue (bande 3) d'un raster aérien contenait des valeurs NULL qui s'affichaient sous forme de pixels blancs. Si tel est le cas, séparez les bandes et remplissez les Nulls avec des zéros à l'aide de Raster - Analysis - Fill Nodata, puis réassemblez les bandes dans un raster multicanal (via Processing Toolbox, SAGA GIS - Merge ou un outil similaire).

De plus, un fork russe de QGIS, NextGIS QGIS, a récemment amélioré la prise en charge des serveurs REST en modifiant la version de développement de GDAL. Ces améliorations seront disponibles pour tous les utilisateurs de QGIS en temps voulu (vraisemblablement d'autres services, pas seulement Tiles, seront pris en charge).

Enfin, il existe un plugin en version bêta qui ajoute un dialogue GUI et une authentification pour les serveurs REST à QGIS (je l'ai testé brièvement mais je ne l'ai pas encore fait fonctionner).


DESCRIPTION BRÈVE DES DESSINS

La présente divulgation sera mieux comprise, et ses nombreuses caractéristiques et avantages seront rendus évidents à l'homme du métier en se référant aux dessins annexés. L'utilisation des mêmes symboles de référence dans différents dessins indique des éléments similaires ou identiques.

FIGUE. 1 est un schéma fonctionnel d'un premier exemple d'un système de communication qui prend en charge la fourniture de contenu complémentaire en utilisant plusieurs réseaux selon certains modes de réalisation.

FIGUE. 2 est un schéma fonctionnel d'un deuxième exemple d'un système de communication qui prend en charge la fourniture de contenu complémentaire en utilisant plusieurs réseaux selon certains modes de réalisation.

FIGUE. 3 est un schéma fonctionnel d'une architecture NFV selon certains modes de réalisation.

FIGUE. 4 est un schéma fonctionnel d'un troisième exemple d'un système de communication qui prend en charge la fourniture de contenu complémentaire en utilisant plusieurs réseaux selon certains modes de réalisation.

FIGUE. 5 est un schéma fonctionnel du troisième exemple du système de communication représenté sur la Fig. 4 après reconfiguration d'un réseau mobile selon certains modes de réalisation.

FIGUE. 6 est un schéma fonctionnel d'un quatrième exemple d'un système de communication qui met en œuvre un réseau pseudo-SFN selon certains modes de réalisation.

FIGUE. 7 est un schéma fonctionnel d'un cinquième exemple d'un système de communication qui prend en charge la coordination indépendante de l'accès de plusieurs réseaux selon certains modes de réalisation.

FIGUE. 8 est un schéma fonctionnel d'un sixième exemple d'un système de communication qui prend en charge une zone SFN MB étendue utilisant un réseau terrestre selon certains modes de réalisation.

FIGUE. 9 est un schéma fonctionnel du sixième exemple du système de communication représenté sur la Fig. 8 qui prend en charge une zone SFN MB modifiée utilisant un réseau terrestre, un réseau mobile et un réseau fixe selon certains modes de réalisation.

FIGUE. 10 est un schéma fonctionnel qui illustre une architecture de protocole qui est utilisée pour prendre en charge un fonctionnement hybride incorporant un réseau terrestre et un réseau fixe.

FIGUE. 11 est un schéma fonctionnel d'un septième exemple d'un système de communication qui fournit un contenu en utilisant plusieurs réseaux selon certains modes de réalisation.

FIGUE. 12 est un organigramme illustrant un procédé de coordination de la distribution de contenu par un réseau terrestre avec un contenu complémentaire délivré par un réseau mobile ou fixe selon certains modes de réalisation.

FIGUE. 13 est un schéma fonctionnel d'un huitième exemple d'un système de communication selon certains modes de réalisation.


Conductivité (conductance électrique) et eau

L'eau et l'électricité ne font pas bon ménage, non ? Ben en fait, pur l'eau est un excellent isolant et ne conduit pas l'électricité. Le fait est que vous ne trouverez pas d'eau pure dans la nature, alors ne mélangez pas l'électricité et l'eau. Notre page Water Science School vous donnera tous les détails.

Conductivité (conductance électrique) et eau

Moniteur multiparamètre utilisé pour enregistrer les mesures de la qualité de l'eau.

Vous n'êtes jamais trop vieux pour apprendre quelque chose de nouveau. Toute ma vie, j'ai entendu dire que l'eau et l'électricité forment un dangereux couple. Et à peu près tout le temps, c'est vrai – mélanger l'eau et l'électricité, que ce soit à partir d'un éclair ou d'une prise électrique dans la maison, est une chose très dangereuse à faire. Mais ce que j'ai appris en faisant des recherches sur ce sujet, c'est que l'eau pure est en fait un excellent isolant et ne conduit pas l'électricité. L'eau qui serait considérée comme « pure » serait l'eau distillée (eau condensée à partir de vapeur) et l'eau déminéralisée (utilisée dans les laboratoires), bien que même l'eau de cette pureté puisse contenir des ions.

Mais dans nos vraies vies, nous ne rencontrons normalement pas d'eau pure. Si vous lisez notre article sur l'eau comme "solvant universel" vous savez que l'eau peut dissoudre plus de choses que n'importe quel autre liquide. L'eau est un excellent solvant. Peu importe si l'eau sort du robinet de votre cuisine, se trouve dans une piscine ou une gamelle pour chien, sort de le sol ou tombe du ciel, l'eau contiendra des quantités importantes de substances dissoutes, de minéraux et de produits chimiques. Ces choses sont les solutés dissous dans l'eau. Ne vous inquiétez pas, cependant, si vous avalez un flocon de neige, cela ne fera pas de mal il peut même contenir de bons minéraux dont votre corps a besoin pour rester en bonne santé.

Les ions libres dans l'eau conduisent l'électricité

Des employés de l'USGS font de la pêche électrique dans la rivière Frio, au Texas.

L'eau cesse d'être un excellent isolant une fois qu'elle commence à dissoudre les substances qui l'entourent. Sels, comme le sel de table commun (chlorure de sodium (NaCl)) est celui que nous connaissons le mieux. En termes chimiques, les sels sont des composés ioniques composés de cations (ions chargés positivement) et d'anions (ions chargés négativement). En solution, ces ions s'annulent essentiellement de sorte que la solution est électriquement neutre (sans charge nette). Même une petite quantité d'ions dans une solution d'eau la rend capable de conduire l'électricité (donc n'ajoutez certainement pas de sel à votre eau de bain "d'orage"). Lorsque l'eau contient ces ions, elle conduira l'électricité, par exemple à partir d'un éclair ou d'un fil de la prise murale, car l'électricité de la source cherchera des ions de charge opposée dans l'eau. Dommage s'il y a un corps humain sur le chemin.

Fait intéressant, si l'eau contient de très grandes quantités de solutés et d'ions, alors l'eau devient un conducteur d'électricité si efficace qu'un courant électrique peut essentiellement ignorer un corps humain dans l'eau et s'en tenir à la meilleure voie pour se conduire - les masses de ions dans l'eau. C'est pourquoi le danger d'électrocution dans eau de mer est inférieur à ce qu'il serait dans l'eau du bain.

Heureusement pour hydrologues ici à l'USGS, l'eau qui coule dans les ruisseaux contient des quantités importantes de sels dissous. Sinon, ces deux hydrologues de l'USGS pourraient être sans emploi. De nombreuses études sur l'eau incluent l'étude des poissons qui vivent dans les cours d'eau, et une façon de collecter des poissons pour une étude scientifique consiste à projeter un courant électrique dans l'eau pour choquer les poissons (« zapez-les et emballez-les »).


Ajout de fonctionnalités de classe de base (héritées) aux classes que vous ne contrôlez pas

J'ai un ensemble de cours d'une bibliothèque tierce. Ces classes utilisent une structure d'héritage pour partager la logique. Je voudrais ajouter une couche d'abstraction au milieu de leur arbre d'héritage pour ajouter des fonctionnalités à toutes les implémentations (concrètes) des enfants.

Voici un exemple simplifié des classes de la bibliothèque tierce :

Je voudrais ajouter le concept d'un AnimalWithSuperPower . Ces types d'animaux devraient avoir 1 SuperPouvoir Propriété supplémentaire. J'aimerais pouvoir avoir des classes comme CatWithSuperPower qui dérivent de Cat , AnimalWithSuperPower , & Animal afin que je puisse accéder à toutes les fonctionnalités de celles-ci.

Voici la définition de SuperPower :

Ma première idée était d'utiliser l'héritage multiple. Mais malheureusement, C# ne prend pas en charge plusieurs classes de base.

Ma prochaine tentative utilise une combinaison d'héritage, de composition et de génériques pour essayer de fournir les fonctionnalités des classes de base.

Cette solution n'est pas très bonne (IMO) pour ces raisons :

  • SuperCat et SuperCatWithPur ne sont pas réellement des instances de Cat
  • toute méthode que vous souhaitez utiliser à partir de Cat doit être mise en miroir dans la classe conteneur
  • se sent un peu désordonné: AnimalWithSuperPower est un animal mais il prend également un paramètre de type Animal

J'ai aussi essayé de le faire avec une méthode d'extension mais ce n'était pas mieux que les deux tentatives ci-dessus :

Si j'avais le contrôle des classes tierces, je pourrais probablement le faire proprement en introduisant une nouvelle classe au milieu de l'arbre d'héritage, mais je ne peux pas